-
-
漏洞扫描引擎开发:Nuclei+SQLMap+Nikto集成与去重实战
-
发表于: 2026-9-26 17:25 117
-
一、为什么需要自己的漏洞扫描引擎
市面上有很多漏洞扫描器:Nessus、AWVS、Xray、Nuclei。但它们各有局限:
- Nessus/AWVS:商业软件,贵,且扫描结果需要人工分析
- Xray:被动扫描强,主动扫描弱
- Nuclei:模板化扫描快,但只扫已知漏洞
- SQLMap:专门搞SQL注入,但只能单URL测试
我的目标是做一个统一调度层:把多个扫描器的结果汇总、去重、误报过滤,然后交给AI分析。
二、扫描器集成架构
目标URL → 扫描调度器(Nuclei/SQLMap/Nikto)→ 结果归一化 → 去重引擎 → 误报过滤 → 最终漏洞列表
三、Nuclei集成
Nuclei是最快的模板化扫描器,支持几千个模板。集成的关键是模板选择:
async def nuclei_scan(url: str, templates: list[str] = None) -> list[Vuln]: if templates is None: templates = ["cves/", "exposed-panels/", "misconfiguration/"] cmd = ["nuclei", "-u", url, "-t", ",".join(templates), "-severity", "high,critical", "-json", "-silent"] result = await run_command(cmd, timeout=300) return parse_nuclei_json(result)
关键优化:分级扫描(先高危再中危)、每天自动更新模板、支持自定义POC。
四、SQLMap集成
SQLMap是SQL注入的神器,但它只能单URL测试。我的做法是先用Nuclei扫出可能存在注入的参数,再传给SQLMap深度测试:
async def sqlmap_scan(url: str, param: str) -> list[Vuln]: cmd = ["sqlmap", "-u", url, "-p", param, "--batch", "--level", "3", "--risk", "2", "--json"] result = await run_command(cmd, timeout=600) return parse_sqlmap_result(result)
五、去重引擎
多个扫描器可能报同一个漏洞,去重是关键。我的策略是三维度去重:URL + 漏洞类型 + 受影响参数:
def dedup_vulns(vulns: list[Vuln]) -> list[Vuln]: seen = set() result = [] for v in vulns: key = (normalize_url(v.url), v.vuln_type, v.affected_param or "") if key not in seen: seen.add(key) result.append(v) else: existing = next(x for x in result if normalize_url(x.url)==key[0] and x.vuln_type==key[1]) existing.sources.extend(v.sources) return result
六、误报过滤
去重之后还有误报。我的误报过滤分两层:
规则层:401/403页面报的信息泄露→误报;WAF拦截页面→丢弃;测试环境默认密码→标记但不删除。
AI层:把扫描器输出喂给大模型,让AI判断是否有明确的漏洞证据:
async def ai_verify_vuln(vuln: Vuln) -> bool:
prompt = f"分析以下漏洞是否为真实漏洞:URL:{vuln.url} 类型:{vuln.vuln_type} 输出:{vuln.raw_output}"
result = await ai_chat(prompt)
return "真实漏洞" in result七、实战效果
对一个真实目标的扫描结果对比:
| 扫描器 | 发现漏洞 | 去重后 | AI验证后 | 真实漏洞 |
|---|---|---|---|---|
| Nuclei | 47 | 23 | 15 | 12 |
| SQLMap | 8 | 5 | 4 | 3 |
| Nikto | 31 | 12 | 6 | 4 |
| 合计 | 86 | 40 | 25 | 19 |
去重+误报过滤把86条结果压缩到19条真实漏洞,减少了78%的人工分析量。
八、小结
漏洞扫描引擎的核心不是"集成更多扫描器",而是结果质量。去重和误报过滤才是真正体现技术深度的地方。
下一篇分享AI决策引擎:大模型如何根据扫描结果自动规划下一步测试动作。
本文是「AI安全渗透测试实战」系列的第3篇。完整课程包含12章40节,从环境搭建到完整平台开发。项目开源地址:3fbK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5I4L8%4g2^5K9h3I4A6M7$3W2Q4x3V1k6S2K9g2)9J5k6s2y4W2j5%4g2J5K9i4c8&6i4K6u0V1j5h3N6W2L8Y4c8Q4x3X3c8H3L8r3q4@1k6X3!0J5L8i4j5@1y4g2)9J5k6e0l9`. · 12领域59个安全代理 · MIT许可证
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。