1. 项目概述:为什么需要一份Sudomy排障指南?
在渗透测试和信息收集的实战中,Sudomy以其强大的自动化侦察能力,已经成为许多安全从业者工具箱里的“瑞士军刀”。它能整合数十个数据源,从子域名枚举、端口扫描到服务识别,一气呵成,极大地提升了前期信息收集的效率。然而,工具越强大,其运行环境、配置选项和依赖关系也越复杂。相信很多朋友和我一样,在初次使用,甚至是多次使用Sudomy的过程中,都踩过不少坑:从最基本的“命令执行没反应”,到令人头疼的“API密钥配置无效”,再到更隐蔽的“结果输出不全”或“插件执行失败”。
这些问题往往零散地分布在各种论坛、Issue页面和聊天记录里,排查起来耗时费力。因此,我结合自己多次在红队评估和漏洞挖掘项目中使用Sudomy的经验,整理了这份《Sudomy渗透测试终极排障指南》。这不仅仅是一个问题列表,更是一个系统性的故障排查思路。我会把问题归类,从环境搭建、核心配置、插件运行到结果分析,逐一拆解,并提供经过实战验证的解决方案。无论你是刚接触Sudomy的新手,还是在复杂环境中遇到棘手问题的老手,这份指南都能帮你快速定位问题,让Sudomy重新顺畅地为你工作。
2. 环境搭建与初始化问题排查
任何工具的运行都离不开一个稳定、合规的基础环境。Sudomy基于Python和一系列系统工具,环境问题往往是第一道坎。
2.1 系统与Python环境兼容性问题
问题现象:在克隆仓库并尝试运行./sudomy或python3 sudomy.py时,系统提示“命令未找到”或报出与Python语法、模块相关的错误。
根因分析:这通常由三个原因导致:
- Python版本不匹配:Sudomy需要Python 3.6或更高版本。一些老旧的Kali Linux或自己搭建的渗透测试环境可能默认仍使用Python 2.7。
- 关键系统工具缺失:Sudomy的许多插件(如
nmap,dig,httprobe)依赖于系统中已安装的独立命令行工具。 - 依赖库安装失败或不完整:
requirements.txt中的Python库可能因为网络、权限或版本冲突而安装失败。
解决方案与实操步骤:
- 确认Python版本:首先在终端执行
python3 --version。如果版本低于3.6,需要升级。在基于Debian的系统(如Kali)上,可以使用sudo apt update && sudo apt install python3.9来安装较新版本,并通过update-alternatives命令将python3指向新版本。 - 安装系统级依赖:在运行Sudomy安装脚本前,先确保基础工具链完整。执行以下命令:
sudo apt update sudo apt install -y git curl wget nmap dnsutils libcurl4-openssl-dev libssl-devdnsutils提供了dig和nslookup命令,对域名解析至关重要。 - 完整安装Python依赖:进入Sudomy项目目录,不要简单地运行
pip install -r requirements.txt。我建议采用以下更稳健的步骤:
如果某个特定库(如cd Sudomy # 先升级pip本身,避免旧版本导致的问题 python3 -m pip install --upgrade pip # 使用国内镜像源加速安装,并忽略已安装的包以避免冲突 pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --ignore-installedrequests,dnspython)安装失败,可以尝试单独安装:pip3 install requests --upgrade。
注意:强烈建议在虚拟环境(如
venv)中安装Sudomy的依赖,以避免与系统其他Python项目的包版本冲突。可以使用python3 -m venv sudomy_env创建,然后source sudomy_env/bin/activate激活。
2.2 权限与路径导致的执行失败
问题现象:运行./sudomy时提示“Permission denied”,或者工具可以运行,但在扫描过程中无法写入文件或目录。
根因分析:
- 执行权限缺失:从Git克隆下来的
sudomy脚本可能没有可执行权限。 - 输出目录权限不足:Sudomy默认或在配置中指定的输出目录(
output/)当前用户无法写入。 - 临时目录问题:工具运行中产生的临时文件(
tmp/)路径不可用。
解决方案与实操步骤:
- 赋予执行权限:在Sudomy项目根目录下,执行
chmod +x sudomy。如果使用的是sudomy.py,则可能需要用python3 sudomy.py来运行。 - 检查并设置目录权限:手动创建输出和临时目录,并确保有写权限。
在mkdir -p output tmp chmod 755 output tmpsudomy.conf配置文件中,你也可以自定义这些路径,确保指向你有权限的位置。 - 使用绝对路径运行:如果你在非项目目录下调用Sudomy,或者通过其他脚本调用,务必使用绝对路径。例如:
/opt/tools/Sudomy/sudomy -d target.com。
3. 核心配置与API密钥问题详解
Sudomy的强大之处在于它能聚合众多外部数据源(如SecurityTrails, Censys, Shodan)。这些功能需要正确的API密钥才能工作,配置错误是导致扫描结果空洞的最常见原因。
3.1 API密钥配置无效或遗漏
问题现象:扫描报告生成后,发现来自Shodan、Censys、VirusTotal等付费或高价值数据源的结果为空,日志中可能包含“Invalid API Key”、“Quota Exceeded”或“No results found”的提示。
根因分析:sudomy.conf配置文件中的API密钥未设置、设置错误或已过期。Sudomy的配置文件结构是,每个数据源引擎(如Shodan.my)会读取配置文件中对应的环境变量。
解决方案与实操步骤:
- 定位配置文件:主配置文件是项目根目录下的
sudomy.conf。用文本编辑器(如nano或vim)打开它。 - 理解配置格式:找到以
_KEY或_SECRET结尾的配置行。例如:
这些值需要替换为你从对应平台申请的真实密钥。SHODAN_API_KEY="YOUR_SHODAN_API_KEY" CENSYS_API_ID="YOUR_CENSYS_API_ID" CENSYS_API_SECRET="YOUR_CENSYS_API_SECRET" VIRUSTOTAL_API_KEY="YOUR_VIRUSTOTAL_API_KEY" - 申请与配置API密钥:
- Shodan:访问Shodan官网注册,在账户仪表板中找到“API Key”。免费账户有额度限制。
- Censys:注册Censys账户,在“API”页面可以创建一组
API ID和Secret。 - VirusTotal:注册后,在个人资料设置中生成API密钥。社区版API有请求频率限制。
- SecurityTrails:提供有限的免费API额度,注册后在设置中获取密钥。
- 验证配置是否生效:一个简单的验证方法是,在配置好密钥后,针对一个已知存在大量资产的域名(如
github.com)进行一次快速扫描,并观察日志输出。可以启用调试模式查看更详细的信息:
在日志中搜索“Shodan”、“Censys”等关键词,看是否有成功的查询记录或错误信息。./sudomy -d github.com -o test_output --debug
实操心得:我习惯将
sudomy.conf备份为一个模板文件(如sudomy.conf.template),然后将实际配置好的、包含真实密钥的文件命名为sudomy.conf.local,并在.gitignore中忽略它。在运行前,通过脚本或软链接将其指向sudomy.conf。这样可以避免将敏感密钥误提交到版本控制系统。
3.2 配置文件语法错误导致工具崩溃
问题现象:启动Sudomy时直接报错退出,错误信息可能指向配置文件解析问题,如“syntax error near unexpected token”。
根因分析:sudomy.conf是一个Shell脚本风格的配置文件,如果编辑时格式不对,比如破坏了变量赋值、引号不匹配、或在行尾添加了不必要的空格和注释(在某些情况下),都可能导致主脚本加载配置失败。
解决方案与实操步骤:
- 使用基础文本编辑器:避免使用富文本编辑器(如Windows记事本),它可能会添加BOM头或改变换行符。推荐使用
vim,nano,VS Code,Sublime Text等。 - 检查语法:
- 确保每一行赋值语句的格式是
KEY="VALUE"。等号两边不能有空格(这是Shell脚本的语法要求)。 - 确保所有的引号都是成对出现的。
- 检查是否有未转义的特殊字符(如
$,`,\)出现在值中,如果有,可能需要用反斜杠转义或使用单引号。
- 确保每一行赋值语句的格式是
- 快速验证:可以在终端使用
source命令测试配置文件是否能被正确加载(注意:这会将变量导入当前Shell环境):# 先备份当前环境可能存在的同名变量(可选) # 然后测试加载 if source sudomy.conf > /dev/null 2>&1; then echo "配置文件语法基本正确。" # 可以测试打印一个变量 echo "输出路径是:$OUT" else echo "配置文件存在语法错误!" fi
4. 扫描执行过程中的常见故障
当环境和配置都正确后,扫描过程本身也可能遇到各种问题,导致中断或结果不完整。
4.1 子域名枚举阶段无结果或结果过少
问题现象:扫描完成后,output/target.com/subdomain目录下的文件内容很少,或者只有根域名本身。
根因分析:
- 被动枚举源失效或受限:Sudomy依赖的某个或多个公开子域名查询接口(如
crt.sh,dnsdumpster)暂时不可用、被屏蔽或返回了错误格式的数据。 - 网络连接问题:你的服务器或虚拟机无法访问某些国外数据源(如
SecurityTrails,BufferOverrun)。 - 目标域名特殊性:目标可能是一个全新的或极其私有的域名,在公开互联网上几乎没有被任何搜索引擎或证书日志收录。
- 字典爆破未启用或字典不合适:如果被动枚举无效,主动爆破是重要补充。可能
PLUGIN_GOBUSTER未启用,或者使用的字典(_GOWORDLIST)不包含目标可能使用的子域名模式。
解决方案与实操步骤:
- 启用调试与详细日志:使用
--verbose或--debug标志运行,观察每个枚举引擎的执行输出。你会看到它依次尝试访问各个数据源。注意看哪些源超时、返回错误或空结果。./sudomy -d target.com -o output --debug 2>&1 | tee scan.log - 检查网络连通性:手动测试几个关键源的连通性。例如,尝试用
curl访问https://crt.sh/?q=%.target.com&output=json,看是否能返回数据。 - 调整超时和重试参数:在
sudomy.conf中,可以找到如CURL_TIMEOUT这样的参数,适当增加超时时间(例如从默认的10秒增加到30秒),以应对不稳定的网络。 - 强化主动爆破:
- 确保
PLUGIN_GOBUSTER=true。 - 更换或合并更强大的子域名字典。可以将
All_SubdomainTOP_Seclist.txt与著名的subdomains-top1million-5000.txt或shuffledns的优质字典合并。 - 在配置中指定你的自定义字典路径:
_GOWORDLIST="/path/to/your/merged_wordlist.txt"。
- 确保
- 尝试分阶段执行:如果一次性全功能扫描失败,可以尝试先只运行被动枚举,再单独运行主动爆破,以隔离问题。
4.2 端口扫描与服务识别插件失败
问题现象:子域名列表有了,但端口扫描(nmap)结果为空,或者httprobe探测到的Web服务数量远少于预期。
根因分析:
- Nmap未安装或不在PATH:
PLUGIN_NMAP_PORTS插件直接调用系统nmap命令。 - 权限不足:默认的SYN扫描(-sS)需要root权限。如果以普通用户运行,Nmap会自动回退到TCP Connect扫描(-sT),但这可能被目标主机防火墙更严格地限制。
- 网络策略限制:你所在的网络环境可能对外出流量做了端口或速率限制,导致扫描包被丢弃。
- Httprobe探测不准确:
httprobe工具本身可能有问题,或者它探测的端口列表(默认是80,443,8080等)不包含目标使用的非标准端口。
解决方案与实操步骤:
- 验证Nmap安装:在终端执行
which nmap和nmap --version,确保已安装且可用。 - 以适当权限运行:如果需要深度端口扫描,最好使用
sudo运行整个Sudomy脚本,或者在sudomy.conf中配置NMAP_OPTIONS时,使用不需要root权限的扫描类型(如-sT),但需要意识到其差异。# 在配置文件中,可以调整Nmap参数 NMAP_OPTIONS="-sT -T4 --open -p-"-sT是TCP全连接扫描,不需要root权限,但速度较慢且更易被日志记录。 - 自定义端口列表和探测方法:
- 修改
PLUGIN_HTTPROBE_PORTS变量,增加常见的Web端口,如81,3000,8000,8080,8443,9443。 - Sudomy的
exec_httprobe插件本质上是调用httprobe。你可以考虑用更强大的工具如httpx替代,它支持更多协议和指纹识别。这需要你修改plugins/exec_httprobe脚本中的命令。
- 修改
- 分析防火墙策略:如果怀疑是网络限制,可以先对少数几个已知开放的IP进行手动Nmap扫描,测试连通性。同时,在
sudomy.conf中降低扫描速度(-T2或-T3),减少被屏蔽的风险。
4.3 资源消耗过高导致进程被杀死
问题现象:扫描大型目标(如拥有数万子域名的大型企业)时,Sudomy进程运行一段时间后突然消失,系统可能提示“Killed”或内存不足(OOM)。
根因分析:Sudomy的某些插件,特别是当它并行处理大量子域名进行解析、HTTP探测和端口扫描时,会消耗大量内存和CPU资源。如果系统资源(尤其是内存)不足,Linux内核的OOM Killer会终止最消耗资源的进程。
解决方案与实操步骤:
- 限制并行度:在
sudomy.conf中寻找控制并发数量的参数。虽然Sudomy原生可能没有显式的全局并发控制,但你可以通过限制单个插件的并发来间接控制。例如,对于httprobe,你可以修改插件脚本,在命令中添加-c 50(假设httprobe支持)来限制并发数为50。 - 分而治之:不要一次性扫描一个巨大的主域。可以先运行一次只包含被动枚举和简单解析的扫描,得到一个子域名列表。然后,将这个列表分割成多个小文件,针对每个小文件单独运行后续的端口扫描和HTTP探测任务。
- 增加系统资源:如果是在虚拟机中运行,适当增加分配给虚拟机的内存和CPU核心数。
- 使用资源监控:在运行扫描时,另开一个终端窗口,使用
top或htop命令监控内存和CPU使用情况。当看到内存使用率持续攀升接近物理上限时,就是OOM Killer即将出手的信号。
5. 结果输出与报告生成问题
扫描终于完成了,但最终的结果可能不如人意,或者报告无法生成。
5.1 HTML报告生成失败或格式错乱
问题现象:扫描结束后,在输出目录中没有找到index.html报告,或者报告打开后样式丢失、页面布局混乱。
根因分析:
- 报告生成开关未开启:配置文件中的
REPORTS=1是生成HTML报告的总开关,必须设置为1。 - 模板文件缺失或路径错误:报告依赖于
templates/report/目录下的HTML、CSS和JavaScript文件。如果该目录被误删,或者TEMPLATE_REPORT配置的路径不正确,报告就无法正常生成。 - 文件权限问题:Sudomy进程没有权限在输出目录中创建HTML文件或写入资源文件。
- 数据合并错误:在生成报告的最后阶段,需要将各个插件产生的JSON或文本数据合并。如果某个插件输出的数据格式不符合预期,可能导致报告生成脚本出错中断。
解决方案与实操步骤:
- 确认配置:检查
sudomy.conf,确保REPORTS=1且TEMPLATE_REPORT="templates/report/"路径存在且正确。 - 检查模板目录:确认项目根目录下的
templates/report/目录完整,里面应包含index.html,style.css,script.js等文件。 - 手动测试报告生成:Sudomy的报告生成逻辑通常由一个单独的脚本(如
generate_report.py或report.sh)控制。你可以尝试在扫描完成后,手动运行这个脚本,并观察其输出错误。有时错误信息会明确指出是哪个数据文件出了问题。 - 查看中间文件:进入
output/target.com/下的各个子目录(如subdomain,ports,httprobe),检查是否存在预期的结果文件(如live_subdomains.txt,nmap_scans文件夹等)。如果某个目录为空,说明对应的插件没有成功执行,需要回到前面的步骤排查插件问题。
5.2 输出结果文件不完整或缺失
问题现象:输出目录结构存在,但某些关键文件(如live_subdomains.txt,all_subdomains.txt)内容为空,或者预期的nmap扫描结果文件不存在。
根因分析:
- 插件执行顺序或依赖问题:Sudomy的插件执行有一定的流水线依赖。例如,
httprobe依赖subdomain枚举的结果,nmap可能依赖resolved的IP列表。如果上游插件失败,下游插件自然没有输入。 - 插件内部错误被静默忽略:某些插件脚本可能因为错误而退出,但主流程没有捕获到这个错误并继续执行,导致该插件的输出缺失。
- 磁盘空间不足:扫描过程中产生的临时文件或最终结果文件无法写入。
解决方案与实操步骤:
- 检查插件执行日志:Sudomy在运行时,会在终端输出或日志文件中显示每个插件的启动和结束信息。仔细查看是否有插件报错或警告。
- 独立运行问题插件:这是最有效的排查方法。找到疑似有问题的插件脚本(位于
plugins/目录),根据其需要的输入参数,手动运行它。例如,手动运行域名解析插件:
观察其输出和错误信息,这能直接定位问题根源,比如是某个DNS服务器不可用,还是解析库有问题。cd /path/to/Sudomy ./plugins/exec_resolv_sd -d target.com -o /path/to/output/target.com - 检查磁盘空间:使用
df -h命令检查输出目录所在磁盘分区的剩余空间。如果空间不足,清理旧数据或指定输出到其他分区。
6. 高级功能与自定义集成故障
当你尝试扩展Sudomy或将其集成到自动化流水线时,可能会遇到更深层次的问题。
6.1 自定义插件或脚本集成失败
问题现象:自己编写了一个插件脚本,放在plugins/目录下,并在配置中启用,但扫描时它没有被执行,或者执行出错。
根因分析:
- 插件命名与调用约定不符:Sudomy主脚本可能通过特定的命名模式(如
exec_*.sh)来发现和调用插件。你的插件文件名不符合这个模式。 - 插件缺少可执行权限:新增的脚本文件没有
chmod +x。 - 插件接口不符合预期:主脚本调用插件时,可能会传递特定的参数(如
-d域名,-o输出目录)。你的脚本没有正确接收和处理这些参数。 - 插件输出格式不兼容:如果你的插件需要将结果传递给报告生成器,那么它的输出文件格式和位置必须符合Sudomy的预期。
解决方案与实操步骤:
- 研究现有插件:仔细阅读一个工作正常的插件(如
exec_httprobe)的源代码。看它是如何开始的(Shebang行),如何接收参数,如何输出结果,以及如何记录日志的。 - 遵循模板:仿照现有插件编写你的插件。确保开头有
#!/bin/bash或#!/usr/bin/env python3,并正确处理-d和-o参数。 - 调试插件:首先在命令行手动运行你的插件,传入正确的参数,确保它能独立工作。然后,在
sudomy.conf中启用它(PLUGIN_YOURTOOL=true),并使用--debug模式运行Sudomy,观察主脚本是否调用了你的插件,以及调用时的参数是什么。 - 查看主脚本逻辑:如果问题依旧,可能需要查看
sudomy主脚本中关于插件加载和执行的部分,理解其确切的机制。
6.2 与其他工具(如Amass, Subfinder)的协同工作问题
问题现象:希望用Amass进行更全面的枚举,然后将结果导入Sudomy进行后续处理,但流程衔接不上。
根因分析:Sudomy主要是一个集成和自动化框架,虽然它内部调用了一些工具,但其输入接口设计为直接接收一个域名。将外部工具的结果“喂”给Sudomy需要一些手动处理。
解决方案与实操步骤:
- 使用Amass作为前端枚举器:先用Amass进行深度枚举(包括被动、主动、爆破等)。
amass enum -passive -d target.com -o amass_passive.txt amass enum -active -brute -d target.com -o amass_active.txt - 结果去重与合并:将Amass的结果与Sudomy自己的被动枚举源(可选)合并,并去重。
cat amass_passive.txt amass_active.txt | sort -u > all_subdomains_amass.txt - 引导Sudomy使用该列表:Sudomy的
-l或--list参数可能允许你直接输入一个子域名列表文件,跳过其自身的枚举阶段。你需要查阅Sudomy的帮助文档(./sudomy -h)来确认是否支持此参数。如果支持,命令类似:
如果不支持,你可能需要“欺骗”一下Sudomy:将你的列表文件重命名或软链接到Sudomy期望的枚举结果文件路径下(例如./sudomy -l all_subdomains_amass.txt -o output_from_amassoutput/target.com/subdomain/all_subdomains.txt),然后只启用后续的解析、探测和扫描插件(在配置中禁用枚举插件)。这需要对Sudomy的工作流程有更深入的了解。
7. 性能优化与稳定性提升技巧
除了解决问题,让Sudomy跑得更快、更稳也是实战中的关键需求。
7.1 优化扫描速度与资源占用
核心矛盾:速度、覆盖面和隐蔽性(对目标的干扰程度)三者不可兼得。我们需要根据测试类型(白盒/灰盒/黑盒)来权衡。
优化策略:
- 调整并发和延迟:
- 在
sudomy.conf或插件脚本中,找到控制并发数的参数。例如,对于HTTP探测,可以修改httprobe命令,添加-c参数限制并发数,避免瞬间发起数千个连接把目标打挂或触发WAF。 - 对于DNS解析,可以配置使用多个公共DNS服务器,并调整超时时间。
- 在
- 分阶段、分目标扫描:不要总想着一口吃成胖子。对于大型目标,按部门、按地理位置拆分出多个子域或IP段,分批进行扫描。可以编写一个简单的Shell脚本来自动化这个分批和调度的过程。
- 选择性启用插件:在初步侦察阶段,可能只需要子域名枚举和存活验证。深度端口扫描和漏洞检测可以放在第二阶段,针对存活的主机进行。通过灵活组合
PLUGIN_*开关来实现。 - 使用更高效的工具替代默认插件:例如,用
masscan进行超高速的端口发现,然后用nmap对发现的端口进行服务识别。这需要你编写自定义插件来集成masscan。
7.2 保障长时间扫描的稳定性
问题:扫描一个拥有数万子域名的大型目标,可能需要数小时甚至数天。网络波动、API限额重置、临时文件积累都可能导致扫描意外中断。
稳定性保障措施:
- 使用Screen或Tmux会话:在服务器上启动扫描前,先创建一个
screen或tmux会话。这样即使你断开SSH连接,扫描任务也会在后台持续运行。screen -S sudomy_scan ./sudomy -d large-target.com -o /data/scans/large-target --verbose # 按 Ctrl+A, 然后按 D 分离会话 # 重新连接:screen -r sudomy_scan - 实现简单的断点续扫:虽然Sudomy本身可能不支持完善的断点续传,但你可以通过架构设计来实现。例如,将扫描流程拆分成独立的脚本:
1_enum.sh,2_resolve.sh,3_httprobe.sh... 每个脚本检查上一步的输出文件是否存在,如果存在则跳过。这样,即使中间某步失败,也可以从那里重新开始。 - 日志与监控:将Sudomy的输出重定向到一个详细的日志文件,并定期检查日志尾部,观察是否有错误堆积。
./sudomy -d target.com -o output 2>&1 | tee -a sudomy_scan_$(date +%Y%m%d).log - 定期清理临时文件:对于长时间运行的任务,定期手动清理
tmp/目录下的旧文件,防止磁盘被占满。可以在你的调度脚本中加入清理逻辑。
8. 实战问题排查速查表
为了方便快速定位,我将最常见的问题、现象和解决方法浓缩成下表。当你遇到问题时,可以首先在这里按图索骥。
| 问题大类 | 具体现象 | 最可能的原因 | 首要排查步骤 |
|---|---|---|---|
| 环境与启动 | ./sudomy: command not found或Permission denied | 1. 未添加执行权限 2. 不在项目目录 | chmod +x sudomy; 使用绝对路径 |
导入Python模块错误(如No module named 'requests') | Python依赖未安装或版本冲突 | pip3 install -r requirements.txt; 检查Python版本是否为3.6+ | |
| 配置相关 | Shodan/Censys等付费源无结果 | API密钥未配置或配置错误 | 检查sudomy.conf中对应的_API_KEY变量; 申请并替换有效密钥 |
| 工具启动即崩溃,报语法错误 | sudomy.conf配置文件格式错误 | 检查等号两边有无空格,引号是否匹配; 用source sudomy.conf测试 | |
| 扫描过程 | 子域名结果极少(仅根域名) | 1. 被动枚举源被屏蔽/失效 2. 网络不通 3. 目标域名太新 | 使用--debug查看各源状态; 手动测试curl访问数据源; 启用并配置字典爆破(PLUGIN_GOBUSTER) |
| 端口扫描无结果或不全 | 1. Nmap未安装 2. 权限不足(非root运行-sS) 3. 目标防火墙拦截 | which nmap确认安装; 尝试sudo运行或改用-sT扫描; 检查本地网络策略 | |
| 进程运行中被“Killed” | 内存不足,触发OOM Killer | 监控内存使用(htop); 分割目标分批扫描; 增加系统内存 | |
| 输出结果 | 无HTML报告生成 | 报告功能未开启或模板缺失 | 确认REPORTS=1; 检查templates/report/目录是否存在且完整 |
| 报告样式错乱或空白 | 报告生成时数据合并出错 | 检查各插件输出目录是否有数据; 查看报告生成脚本的错误日志 | |
live_subdomains.txt为空 | HTTP探测插件失败或无存活服务 | 检查plugins/exec_httprobe是否执行; 手动运行httprobe测试; 增加探测端口(PLUGIN_HTTPROBE_PORTS) | |
| 网络与性能 | 扫描速度极慢 | 1. 并发设置过低 2. DNS解析慢 3. 网络延迟高 | 调整插件并发参数; 配置更快的DNS服务器; 考虑在离目标更近的VPS上运行 |
| 扫描中途网络错误中断 | 网络不稳定或长时间连接超时 | 使用screen/tmux在后台运行; 增加CURL_TIMEOUT等超时设置 |
这份指南涵盖了从环境准备到结果分析,从常见错误到高级调优的方方面面。渗透测试工具的使用从来不是一帆风顺的,遇到问题并不可怕,可怕的是没有清晰的排查思路。希望这份凝聚了多次“踩坑”经验的指南,能成为你使用Sudomy时的有力后盾,让你在自动化侦察的道路上走得更稳、更远。记住,最好的排障能力来源于对工具工作原理的深刻理解和对执行过程的细致观察。