Fastjson反序列化审计及验证

admin 2023年2月8日14:20:50Fastjson反序列化审计及验证已关闭评论19 views字数 1261阅读4分12秒阅读模式

Fastjson反序列化

代码审计

本项目引入的Fastjson版本为1.2.58,该版本存在反序列化漏洞。

已确定了Fastjson版本存在问题,进一步寻找触发Fastjson的漏洞点。

我们关注两个函数JSON.parse()JSON.parseObject(),并且执行函数内参数用户可控

Edit-Find->Find in path

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

ProductController.java中使用到了上诉关键词

image-20220329102025874

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

黑盒验证:

够着url及参数:

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

方法二:通过抓包,观察数据格式构造url

这里我们优先结合方法一,方法二更适合get请求

构造url:通过代码中的admin/product http://127.0.0.1:8088/tmall/admin/product

image-20220325151159221

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

image-20220325151307131

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

image-20220325151611620

下面属性值就是json数据

image-20220325154333958

定位位置后,尝试payload

image-20220325154536233

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

image-20220325154700644

上面是可以出网的情况,下面则是不出网漏洞验证

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

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

burpcollar

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

fastjson不出网

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月8日14:20:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Fastjson反序列化审计及验证http://cn-sec.com/archives/1543047.html