一次完整的滲透測試
1 Web打點
滲透測試中,Web端最常見的問題大多出現在弱口令、文件上傳、未授權、任意文件讀取、反序列化、模版漏洞等方面。因此,我們著重圍繞這些方面進行滲透。
1.弱口令
先介紹一些好用的字典:
https://github.com/fuzz-security/SuperWordlisthttps://github.com/gh0stkey/Web-Fuzzing-Box
首先將收集到的所有登錄頁面(url.txt)使用腳本進行爆破,我這里使用的是WebCrack腳本,在web_crack_log.txt可以直接看到有驗證碼的地址是哪些,然后我們在選擇其他工具進行爆破。
本次運氣還不錯,找到了四個弱口令:

2.文件上傳
常見的文件上傳漏洞類型:

通過剛才爆破出來的其中一個弱口令登錄到后臺,發現了上傳點并且成功上傳:


但是這個只是一臺獨立的服務器,并沒有進入到內網,接著往下看。
3.任意文件讀取
通過jsfinder爬取了大量的路徑,然后通過字典爆破到了一個任意文件讀取。
但是由于是低權限,所以沒有繼續測試。


4.springboot未授權漏洞
找到個springboot未授權漏洞。按照正常思路,訪問 Web 應用的 /actuator/env 或 /env,如果有返回 json 格式的數據,則可能存在漏洞。但是此環境下,這個路徑可能被刪除了:

于是我們嘗試讀取配置文件,看看能不能找到有用的東西。
訪問/autoconfig后,發現了某云的Accesskey:


使用工具成功登錄:

但是登錄后發現是個空的服務器,所以還得繼續找口子。
順便總結下Spring Boot Actuator常用的路徑:
/dump - 顯示線程轉儲(包括堆棧跟蹤) /autoconfig - 顯示自動配置報告 /configprops - 顯示配置屬性 /trace - 顯示最后幾條HTTP消息(可能包含會話標識符) /logfile - 輸出日志文件的內容 /shutdown - 關閉應用程序 /info - 顯示應用信息 /metrics - 顯示當前應用的”指標“信息 /health - 顯示應用程序的健康指標 /beans - 顯示Spring Beans的完整列表 /mappings - 顯示所有MVC控制器映射 /env - 提供對配置環境的訪問 /restart - 重新啟動應用程序 |
5.Java-RMI反序列化
利用這個漏洞前,我先簡單介紹下Java-RMI。
Java RMI服務是遠程方法調用(Remote Method Invocation),它是一種機制,能夠讓在某個Java虛擬機上的對象調用另一個Java虛擬機的對象的方法。
在Java Web中,很多地方都會用到RMI來相互調用。比如很多大型組織都會在后臺部署一些Java應用,用于對外網站發布更新的靜態頁面,而這種發布命令的下達使用的就是這種RMI形式。
值得注意的是,RMI傳輸過程必然會使用序列化和反序列化,如果RMI服務端端口對外開發,并且服務端使用了像Apache Commons Collections這種庫,那么會導致遠程命令執行。
我們找到的這個服務恰好端口對外開放,并且使用了Apache Commons Collections的有漏洞的版本,所以成功執行命令:

通過此漏洞,終于成功打進內網,通過發現192.168.0.0/16網段和172.16.0.0/16網段:

2 內網滲透
通過Java-RMI反序列化終于打進了內網。接下來進行內網滲透測試,下圖是此次內網滲透的流程圖:

第一步,192.168.0.0/16網段和172.16.0.0/16網段的未授權通過使用frp代理出來流量后,使用fscan進行信息收集:

發現多個未授權訪問:


第二步,192.168.0.0/16網段和172.16.0.0/16網段的弱口令:

第三步,Jboss反序列化漏洞,發現了Jboss的網站:

成功上傳shell:

發現是低權限后上傳CS碼,提權成功,然后將流量代理出來:

發現了“10”段:

通過配置文件,發現了數據庫的密碼:

成功連接數據庫:

第四步,CVE-2020-1472拿域控。
通過net time /d找到域控:

測試發現有zerologon漏洞:

然后收集了“10”段的信息:

至此整個滲透過程結束。簡單回顧一下:

3 總結
由于是滲透測試項目,本著能多測就多測的原則,對多個系統歷年來出現的漏洞逐一進行了測試。
根據測試的結果來看,雖然很多企業已經對網絡安全足夠重視,但正如周總所言,世界上只有不努力的黑客,沒有攻不破的系統。在安全這個行業,我們仍任重而道遠。