跳转至

第三期:兼容社区PoC的通用验证工具

🎯 作业目标

  • 编写一个能够解析并执行社区主流 PoC 格式(如 Nuclei, XRay)的通用漏洞验证工具。

📖 作业背景

Nuclei 和 XRay 是社区广泛使用的漏洞扫描工具,它们拥有大量由社区贡献的 PoC。如果我们能编写一个工具来兼容这些格式的 PoC,就相当于拥有了一个巨大的、现成的漏洞利用库。

本期作业旨在实现这样一个通用的 PoC 验证引擎。

📝 作业要求

  1. PoC 格式分析

    • 选择至少一种社区 PoC 格式进行研究(推荐 Nuclei 或 XRay)。
    • 分析其 YAML 或 JSON 文件的结构,理解其核心字段的含义,特别是请求构造和验证逻辑部分。
      • Nuclei: 关注 requests 模块中的 path, method, headers, bodymatchers / extractors
      • XRay: 关注 name, set, rules, detail 等字段。
  2. PoC 解析器

    • 编写代码,能够解析你所选择的 PoC 文件。
    • 将 PoC 文件中的规则和逻辑,转换为你程序内部可以理解和执行的数据结构。
  3. 漏洞验证引擎

    • 编写一个引擎,该引擎接收一个目标 URL 和一个已解析的 PoC 对象。
    • 根据 PoC 的定义,构造并发送 HTTP 请求。
    • 根据 PoC 中的验证规则(matchers),检查 HTTP 响应是否满足条件(如状态码、响应头、响应体内容等)。
  4. 结果输出

    • 如果验证成功,即目标存在该漏洞,程序应输出漏洞名称和目标 URL。
    • (选做)如果 PoC 中包含提取器(extractors),尝试提取并输出额外的信息。
  5. 成果展示

    • 提供你的验证工具源代码。
    • 从社区下载几个公开的 PoC,用你的工具成功验证一个已知的漏洞。

💡 核心思路与提示

  • 模板变量:PoC 中通常包含模板变量(如 {{Hostname}}, {{BaseURL}}),你的程序需要能正确地替换它们。
  • 验证逻辑:验证规则可能包含与(AND)或(OR)逻辑,需要正确处理。
  • 代码抽象:可以为不同的 PoC 格式创建不同的解析器,但底层的 HTTP 请求和验证引擎应该是通用的。

🔗 参考链接


这个作业的挑战性较高,但完成后,你将拥有一个极具扩展性的漏洞扫描框架。