第三期:兼容社区PoC的通用验证工具
🎯 作业目标
- 编写一个能够解析并执行社区主流 PoC 格式(如 Nuclei, XRay)的通用漏洞验证工具。
📖 作业背景
Nuclei 和 XRay 是社区广泛使用的漏洞扫描工具,它们拥有大量由社区贡献的 PoC。如果我们能编写一个工具来兼容这些格式的 PoC,就相当于拥有了一个巨大的、现成的漏洞利用库。
本期作业旨在实现这样一个通用的 PoC 验证引擎。
📝 作业要求
-
PoC 格式分析:
- 选择至少一种社区 PoC 格式进行研究(推荐 Nuclei 或 XRay)。
- 分析其 YAML 或 JSON 文件的结构,理解其核心字段的含义,特别是请求构造和验证逻辑部分。
- Nuclei: 关注
requests
模块中的path
,method
,headers
,body
和matchers
/extractors
。 - XRay: 关注
name
,set
,rules
,detail
等字段。
- Nuclei: 关注
-
PoC 解析器:
- 编写代码,能够解析你所选择的 PoC 文件。
- 将 PoC 文件中的规则和逻辑,转换为你程序内部可以理解和执行的数据结构。
-
漏洞验证引擎:
- 编写一个引擎,该引擎接收一个目标 URL 和一个已解析的 PoC 对象。
- 根据 PoC 的定义,构造并发送 HTTP 请求。
- 根据 PoC 中的验证规则(
matchers
),检查 HTTP 响应是否满足条件(如状态码、响应头、响应体内容等)。
-
结果输出:
- 如果验证成功,即目标存在该漏洞,程序应输出漏洞名称和目标 URL。
- (选做)如果 PoC 中包含提取器(
extractors
),尝试提取并输出额外的信息。
-
成果展示:
- 提供你的验证工具源代码。
- 从社区下载几个公开的 PoC,用你的工具成功验证一个已知的漏洞。
💡 核心思路与提示
- 模板变量:PoC 中通常包含模板变量(如
{{Hostname}}
,{{BaseURL}}
),你的程序需要能正确地替换它们。 - 验证逻辑:验证规则可能包含与(AND)或(OR)逻辑,需要正确处理。
- 代码抽象:可以为不同的 PoC 格式创建不同的解析器,但底层的 HTTP 请求和验证引擎应该是通用的。
🔗 参考链接
这个作业的挑战性较高,但完成后,你将拥有一个极具扩展性的漏洞扫描框架。