星河虽存永夜,与你便是长明。
这是第二篇Z0Scan介绍文章哈,第一篇在 Z0Scan设计与实现:通用插件与分布式扫描新思路
如有不足希望各位师傅们多多指点~
指纹识别与POC集成机制#
指纹 + POCs 精准匹配#
早在EZ扫描器时代就提出了”指纹 + POCs”的理念,通过精准的指纹识别实现POC的智能匹配。在Z0中,这一机制得到了进一步完善:
实现流程:
检查指纹 → 匹配指纹名称 → 映射plugins文件夹 → 加载对应POC插件
ObserverWard的启发#
当功能开发接近完成时,🍊师傅向我提起了一个优秀的指纹识别工具ObserverWard
出乎我意料的是其设计理念与Z0的POCs开发思路极度相似,但实现更为成熟:
- 独立维护的FingerprintHub指纹库
- 与Nuclei联动,以实现模板集成,获得更大的可维护性
经过深入评估,最终决定回滚原有的指纹识别代码,改为集成ObserverWard:
这种集成方案既利用了ObserverWard成熟的指纹识别能力,又保持了Z0在POC执行和报告生成方面的灵活性。
智能请求失败统计与IP封禁检测#
大规模扫描过程中,IP被目标封禁是常见问题。
连续的请求失败不仅影响当前任务,还会阻塞后续扫描队列。试试自适应IP封禁检测?
- 提前终止被封IP的扫描,避免资源浪费
- 不影响其他主机的扫描队列
智能爬虫集成:Crawlee#
为什么选择Crawlee?#
Crawlee作为一款优秀的Python爬虫库,它为Z0提供了两种扫描模式:
多模式支持:
它们分别是:
- 基于BeautifulSoup的常规爬虫
- 基于浏览器爬虫(Playwright)
浏览器爬虫支持有头(可视化调试)与无头两种模式
在开发过程中遇到点小问题。
Crawlee在处理非200页面时会报错与重试(这不太适合实际的需要),在翻了用户手册又Github逛了一圈都没找到相关的解决,
提交个ISSUE吧:
[failed and reached maximum retries, Assuming the session is blocked based on HTTP status code 403](https://github.com/apify/crawlee-python/issues/1581)
二级参数解析:深度参数挖掘#
启发于Yakit靶场的SQL注入题让Z0实现了深层次的参数自动发现和解析:
解析层级:
原始请求 → 一级参数解析 → 二级参数值解析 → 自动解码
应用场景:
- 发现隐藏在参数值中的嵌套参数
- 自动解码URL编码、Base64等格式
- 适应JSON格式参数的深度解析
