0
点赞
收藏
分享

微信扫一扫

Fastjson反序列化审计及验证

​​​​java代码审计​​

Fastjson反序列化
代码审计

本项目引入的Fastjson版本为1.2.58,该版本存在反序列化漏洞。
已确定了Fastjson版本存在问题,进一步寻找触发Fastjson的漏洞点。
我们关注两个函数​​JSON.parse()​​和​​JSON.parseObject()​​,并且执行函数内参数用户可控

Edit-Find->Find in path
全局搜索两个关键字,发现本项目存在​​JSON.parseObject()​​,如下图所示:

在​​ProductController.java​​中使用到了上诉关键词Fastjson反序列化审计及验证_java代码审计

在151、257、281行均调用了​​JSON.parseObject()​​方法,则这几处均存在反序列化。

黑盒验证:

够着url及参数:

方法一:通过对各个页面的访问并抓包,找到propertyAddJson参数

方法二:通过抓包,观察数据格式构造url
这里我们优先结合方法一,方法二更适合get请求
构造url:通过代码中的admin/product http://127.0.0.1:8088/tmall/admin/product

Fastjson反序列化审计及验证_反序列化_02

结合上述访问在网站中快速定位到页面

Fastjson反序列化审计及验证_java代码审计_03

”添加一件产品“功能处是调用上述product方法

Fastjson反序列化审计及验证_java代码审计_04

下面属性值就是json数据

Fastjson反序列化审计及验证_反序列化_05

定位位置后,尝试payload

Fastjson反序列化审计及验证_java代码审计_06

虽然响应包报错,但是dnslog已经出现访问

Fastjson反序列化审计及验证_json_07上面是可以出网的情况,下面则是不出网漏洞验证

在内网环境中,无法利用互联网的DNSlog进行漏洞验证。我们可以使用BurpSuite中的​​Burp Collaborator client​​功能来进行验证。该功能需使用BurpSuite专业版本。

①、打开BurpSuite,点击左上角​​Burp-Burp Collaborator client​​进入该功能,如下图所示:

Fastjson反序列化审计及验证_json_08

②、点击​​Copy to clipboar​​后,你会获取到一个测试地址,拼凑成漏洞验证POC:​​{"@type":"java.net.Inet4Address","val":"mlbqit7ocev29vd3k5w205zqchi86x.burpcollaborator.net"}​​,然后将其粘贴到​​propertyJson​​字段中,点击发送数据包。稍等一会,多点几次​​poll now​​,可以看到​​Burp Collaborator client​​接收到了探测信息,如下图所示:

Fastjson反序列化审计及验证_java代码审计_09

至此,Fastjson漏洞验证之旅已结束,通过DNSLog方式,我们证明了该地方存在Fastjson反序列化漏洞。

举报

相关推荐

0 条评论