news 2026/9/17 3:32:31

scan4all 实战场景指南:外网资产、内网 B 段与 WAF 拦截下的漏洞扫描策略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
scan4all 实战场景指南:外网资产、内网 B 段与 WAF 拦截下的漏洞扫描策略

scan4all 实战场景指南:外网资产、内网 B 段与 WAF 拦截下的漏洞扫描策略

【免费下载链接】scan4allOfficial repository vuls Scan: 15000+PoCs; 23 kinds of application password crack; 7000+Web fingerprints; 146 protocols and 90000+ rules Port scanning; Fuzz, HW, awesome BugBounty( ͡° ͜ʖ ͡°)...项目地址: https://gitcode.com/GitHub_Trending/sca/scan4all

本文围绕 scan4all 官方场景文档(static/scenario.md)展开,覆盖外网资产扫描、内网 B 段探测优化、WAF 拦截下的降级检测三类典型实战场景,并结合 命令行参数定义 与 检测引擎实现 说明各参数背后的行为差异,帮助读者按目标环境选择正确的命令组合,避免在大规模扫描中浪费时间或被 WAF 清零。

一、三类场景的总体思路

scan4all 的定位是一条完整的自动化漏洞扫描流水线:端口扫描(naabu 内核)→ HTTP 服务识别与指纹(httpx 内核)→ POC 漏洞检测(Go 编写的 pocs_go 与 YAML 模板 pocs_yml)。程序入口在 main.go,由util.DoInit(&config)初始化内嵌的config目录(其中包含 pocs_yml 模板集 与 Go POC 集),随后调用 lib/api/main.go 中的api.StartScan(nil)启动整条流水线。

lib/api/main.go 中的调用链可以确认这一点:

  1. naaburunner.ParseOptions()解析命令行参数(参数定义见 pkg/naabu/v2/pkg/runner/options.go);
  2. naabuRunner.RunEnumeration()执行端口枚举;
  3. naabuRunner.Httpxrun(nil, nil)在端口扫描完成后自动衔接 Web 扫描与 POC 检测。

理解了这条流水线,就能理解官方场景文档中三类场景的命令差异:它们本质上都是在回答同一个问题——当前环境下,应该跑流水线中的哪些阶段、以什么输入规模去跑

二、外网场景:先做资产归一化,再快速扫描

外网场景的核心是输入资产的质量。官方文档给出的操作路径是:

  1. 自己收集目标的外网资产信息,包括资产的域名、C 段、相关 IP 等;
  2. 将资产汇总后去重,保存于本地文件;
  3. 使用该文件驱动 scan4all 快速扫描:
scan4all -l input.txt -ceyeapi xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -ceyedomain xxxxxx.ceye.io -csv -o output.csv

input.txt内可以是多种格式混排的资产:URL、域名、C 段、IP。这里有一条关键的行为边界——URL 地址不会进行端口扫描,只有裸 IP/域名/C 段才会触发 naabu 端口枚举。这与参数设计中-l对应的HostsFile字段("list of hosts to scan ports (file)")一致,而 URL 输入在进入流水线后只会走 Web 阶段的指纹与 POC 检测。

参数逐项说明

结合 options.go 中的注册逻辑,上述命令涉及的参数含义如下:

参数源码注册位置作用
-l, -listHostsFile,"list of hosts to scan ports (file)"指定待扫描资产列表文件,支持 URL/域名/C 段/IP 混排
-ceyeapiCeyeApi,"ceye.io api key"ceye.io 的 OOB(带外)交互 API Key
-ceyedomainCeyeDomain,"ceye.io subdomain"ceye.io 的交互子域名
-csvCSV,"write output in csv format"结果以 CSV 格式输出
-o, -outputOutput,"file to write output to (optional)"结果写入的文件路径

其中-ceyeapi-ceyedomain是 scan4all 区别于一般扫描器的关键配置。源码中可以看到其实际用途:lib/util/util.go 中通过http://api.ceye.io/v1/records?token=%s&type=dns&filter=%s主动查询 DNS 交互记录。也就是说,对于 log4j、fastjson、Shiro 等基于OOB 回连的漏洞,工具在 POC 发送后会回查 ceye 的 DNS 记录来确认是否真正命中,从而降低无回显漏洞的误报率。如果 POC 集合中不需要回连验证,可以不提供这两个参数;但要获得完整、可信的检测结果,建议配置。

三、内网场景:用存活探测为 B 段扫描提速

官方文档指出了一个现实问题:直接使用 scan4all 对 B 段(/24)进行扫描速度非常慢,原因是需要对该段 254 个地址做大量端口扫描。推荐做法分两步:

  1. 先用 fscan 一类的工具对内网进行 B 段IP 存活探测(注意:fscan 是 scan4all 依赖/推荐搭配的外部工具,官方场景文档中给出了链接,安装方式以 fscan 项目自身说明为准);
  2. 将存活 IP 列表导入 scan4all 进行完整扫描:
scan4all -l ips.txt -ceyeapi xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -ceyedomain xxxxxx.ceye.io -csv -o output.csv

这与外网场景命令形式相同,区别仅在于输入文件ips.txt已经过存活过滤的 IP 列表,把"存活判断"这一最耗时的粗筛工作交给更轻量、更专注探测的工具完成,scan4all 则专注于后续的端口、指纹、POC 精扫。

可进一步调优的参数

内网扫描时,还可以结合 usage.md 中列出的完整参数表对规模进行控制:

  • -host, -list, -exclude-hosts, -exclude-file:输入与排除;
  • -port, -top-Ports, -exclude-Ports, -Ports-file, -exclude-cdn:端口范围控制,内网目标若已知只开放常用端口,可用-top-Ports限定 top 端口以进一步提速;
  • -c(worker 线程数,默认 25)、-rate(每秒发包数):并发与速率控制;
  • -scan-all-ips, -sa:解析域名关联的所有 IP 并扫描。

四、WAF 场景:先保指纹,再补 POC

这是场景文档中最有实战价值的一条建议:如遇到 WAF 封禁 IP 的情况,建议先对资产进行指纹识别,再对 URL 地址进行 POC 检测——这样至少能得到资产的指纹列表,不至于完全没有结果。对应两条命令:

第一步,跳过 POC 检测,只做指纹识别:

scan4all -l input.txt -np -csv -o output.csv

第二步,把 URL 资产单独列出,再补 POC 检测:

scan4all -l urls.txt -ceyeapi xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -ceyedomain xxxxxx.ceye.io -csv -o poc_output.csv

-np参数在源码中的行为

-np在 options.go 中注册为NoPOC,帮助文本为 "Skip pocs_go check"。解析完成后会通过os.Setenv("NoPOC", ...)写入环境变量,供全链路读取:

  • pkg/httpx/runner/runner.go 中 Web 扫描阶段以if !scanopts.NoPOC作为 POC 检测的开关;
  • engine/engineImp.go 的事件循环中,PocCheck_pipe收到指纹结果后,若util.GetValAsBool("NoPOC")为真则直接跳过pocs_go.POCcheck(...)调用。

因此第一步命令的实际效果是:完整跑端口扫描与 Web 指纹识别(指纹数据会进入引擎事件队列并被记录),但在 POC 下发环节整体短路。这一步对 WAF 的价值在于:指纹识别的请求特征与频次远小于全量 POC 轰击,更容易在封禁发生前拿到有价值的资产信息。

第二步中,urls.txt应只包含第一步指纹结果中确认的 URL(而非原始资产全量)。由于输入是 URL,按前述规则不会触发端口扫描,请求只集中在 Web 层 POC 检测,把攻击面与流量规模都压到最小。若 POC 仍被 WAF 拦截,还可以参考 config/WAFBypasHd.txt 中的 WAF 绕过请求头,配合-h输出中的调试参数(-debug-v)观察实际请求行为。

五、三个场景的共性要点与注意事项

  1. 输入文件先行去重:三类场景都依赖-l列表文件。列表重复会直接放大请求量并触发 WAF,外网资产收集阶段就应去重。
  2. 输出统一使用-csv -o:CSV 输出便于在指纹与 POC 两步之间做数据衔接(例如从output.csv中筛出 URL 生成urls.txt),也便于事后复盘。
  3. ceye 参数的适用范围-ceyeapi/-ceyedomain影响的是 OOB 回连验证类 POC 的准确性,属于"锦上添花但强烈建议"的配置;不配置不会导致程序报错,只是回连类漏洞只能依赖响应特征判断。
  4. SYN 与 CONNECT 扫描类型的权限差异:options.go 中showNetworkCapabilities逻辑显示,-s(SYN)扫描需要 root(Linux 下为CAP_NET_RAW)权限,非特权环境下自动降级为 CONNECT 扫描。内网大规模扫描时这一点直接影响速度与隐蔽性。
  5. 结果文件中的断点续扫:参数表中提供-resume(基于 resume.cfg 恢复扫描),长时间的内网全段扫描中断后可复用该能力,避免重复起扫。

六、小结

scan4all 的三类场景可以浓缩为一套决策口诀:

  • 外网:资产收集 → 去重入文件 →scan4all -l input.txt -ceyeapi ... -ceyedomain ... -csv -o output.csv,URL 不走端口扫描;
  • 内网:fscan 存活探测 → 存活 IP 入文件 → 同一条命令精扫,必要时用-top-Ports-c-rate控制规模;
  • WAF-np先取指纹保底 → 指纹 URL 单独列表 → 再补 POC 检测,把流量与攻击面拆开。

更多参数细节可参考仓库内 static/usage.md 的完整参数表与 static/running.md 的运行说明,POC 模板与 Go POC 的组成可分别在 pocs_yml 与 pocs_go 目录下查看。

【免费下载链接】scan4allOfficial repository vuls Scan: 15000+PoCs; 23 kinds of application password crack; 7000+Web fingerprints; 146 protocols and 90000+ rules Port scanning; Fuzz, HW, awesome BugBounty( ͡° ͜ʖ ͡°)...项目地址: https://gitcode.com/GitHub_Trending/sca/scan4all

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 3:32:21

MCP协议与Skills广场:工业AI时代的OPC UA新范式

1. 这不是一场技术发布会,而是一场开发者生存方式的重构最近在几个核心开发群和工业自动化论坛里,几乎每天都有人甩出同一张截图:一个叫“Skills广场”的界面,上面密密麻麻挂着“PLC逻辑校验”、“OPC UA节点自动发现”、“Modbus…

作者头像 李华
网站建设 2026/9/17 3:31:41

Milvus + AI 知识库实战:Docker 部署、语义检索与 RAG

1. 从一个具体的痛点说起:为什么我要给知识库加"记忆"我手上有一堆文档,几百份技术资料、产品手册、内部会议纪要,平时想找点东西全靠 CtrlF 关键词硬搜。问题很快就暴露了:我记得某个文档里讲过"错误码处理要统一…

作者头像 李华
网站建设 2026/9/17 3:30:08

PHP数组性能优化:packed array与hash array底层原理及实战

昨天线上一个队列消费脚本突然CPU飙到 90%,我看了一眼火焰图,热点全在一个批量写入的函数里。那个函数其实简单得很,就是循环往一个数组里塞数据,按理说 PHP 数组写入不至于这么夸张。后来我定位了半天,发现问题根本不…

作者头像 李华
网站建设 2026/9/17 3:28:52

从零搭建森林负氧离子监测站:传感器选型、数据上云与野外部署实战

1. 项目背景与整体设计思路1.1 为什么要在林间测负氧离子第一次冒出这个念头,是前年带孩子在森林公园里看到一块小小的负氧离子显示屏,当时上面跳着“3680个/cm”这个数字。旁边一位游客跟我聊起来,说这就是“空气维生素”,吸一口…

作者头像 李华
网站建设 2026/9/17 3:28:10

mistral.rs 部署 Phi-3.5-Vision:HTTP 服务端多模态推理实战指南

mistral.rs 部署 Phi-3.5-Vision:HTTP 服务端多模态推理实战指南 【免费下载链接】mistral.rs Fast, flexible LLM inference 项目地址: https://gitcode.com/GitHub_Trending/mi/mistral.rs 本篇技术指南讲解如何在 mistral.rs 中通过 OpenAI 兼容的 HTTP 服…

作者头像 李华