我用这一份侦察清单找到了 100 个漏洞

71 阅读5分钟

官网:http://securitytech.cc/

我用这一份侦察清单找到了 100 个漏洞

这是我在每一个漏洞赏金项目中都会严格执行的逐步方法论

几个月前,我的 漏洞赏金(Bug Bounty) 经历就像是在 一百个草堆里找一根针

我随意地跑工具,把大量时间浪费在毫无结果的目标上。由于我的 漏洞挖掘 没有任何结构,很多关键资产被直接错过。我看起来很忙,但效率极低。

后来,一切都改变了。

按回车或点击可查看大图

照片来源:Boitumelo,Unsplash

我强迫自己去构建 一份侦察清单(Recon Checklist) —— 一份单一、可重复、每次都严格遵循的文档。正是这个决定,彻底改变了我的结果。

这就是那份清单。 它是我找到 100 多个有效漏洞 背后的 逐步方法论。 它不是关于什么秘密工具,而是一套 将混乱转化为稳定产出的成熟工作流

下面,让我们一步一步走一遍。


为什么清单胜过“即兴发挥”

想想飞机起飞前的飞行员。他们不会“差不多记得流程”,而是 严格对照清单

安全测试 也是一样。

侦察清单 能降低认知负担,确保不会遗漏关键步骤,把原本零散、随意的过程,变成一个 可复用、可验证的工作流

“目标不是某一天当个天才,而是每天都稳定地产出效果。”

正是从“灵感式猜测”到“系统化流程”的转变,让我的 漏洞赏金成果 实现了质的提升。


5 分钟的前期准备

在执行任何命令之前,我都会做一点准备工作,这能在后面节省大量时间。

第一步:收集 API Key

很多优秀的 自动化侦察工具 都依赖 API,这些是我常用的:

  • Shodan:用于发现设备与历史数据
    • VirusTotal:被动子域与 IP 信息
    • GitHub Token:用于代码与接口爬取
    • Wayback Machine:获取历史 URL

我会把它们放在一个简单的配置文件里:

# ~/.config/recon_keys.env

SHODAN_API_KEY="your_key_here"
GITHUB_TOKEN="your_token_here"

第二步:创建项目目录

良好的组织结构是高效侦察的一部分。

mkdir target.com && cd target.com
mkdir subs urls alive nuclei_results

现在,真正的工作可以开始了。


Phase 1:发现所有数字资产

这一阶段是 子域枚举(Subdomain Enumeration)。 目标很简单:找出目标名下的每一扇“数字大门”

问题在于: 只依赖一个工具,意味着你会错过大多数资产。

清单的解决方案: 从多个不同来源收集数据,再统一整合。

Step A:被动信息收集

这些工具不会直接访问目标,而是向第三方服务查询已有数据。

subfinder -d target.com -silent -o subs/subfinder.txt
assetfinder --subs-only target.com > subs/assetfinder.txt
amass enum -passive -d target.com -o subs/amass_passive.txt

Step B:公共档案与历史记录

证书透明日志和历史快照中,往往藏着被遗忘的系统。

# 来自证书透明日志(CT Logs)

curl -s "https://crt.sh/?q=%25.target.com&output=json" | jq -r '.[].name_value' | sort -u > subs/crtsh.txt

# 来自 Wayback Machine

curl -s "http://web.archive.org/cdx/search/cdx?url=*.target.com/*&output=text&fl=original&collapse=urlkey" | sed 's_https\*://\_\_' | cut -d'/' -f1 | sort -u > subs/wayback.txt

Step C:整合所有结果

cat subs/*.txt | sort -u > all_subs.txt

结果: 你会得到一份比任何单一工具大 3–5 倍 的完整子域列表。

上个月在一个私有项目中,这个阶段发现了一个 dev-api.target.com 的子域,公开资料中完全没有记录,最终带来了 5 个严重漏洞。


Phase 2:绘制攻击面

子域只是名字,我们需要知道它们真正提供了什么功能。 这一步是 端点发现(Endpoint Discovery)

Step A:存活主机探测

cat all_subs.txt | httpx -silent -ports 80,443,8080,8443 -o alive/alive_subs.txt

Step B:URL 收集(被动 + 主动)

被动方式:

cat alive_subs.txt | gau --subs --threads 50 | sort -u > urls/gau_urls.txt

主动爬取:

cat alive_subs.txt | katana -d 3 -silent -o urls/katana_urls.txt

Step C:提取参数(真正的“黄金”)

cat urls/*.txt | grep '=' | sort -u > urls/parameters.txt

此时,一个域名已经被转化成了一张完整的应用地图。


Phase 3:过滤噪音

URL 成千上万,不可能全部测试,这一阶段是 优先级筛选

关键过滤规则包括:

  1. 技术类型.php.asp 更适合特定漏洞测试
    1. 功能关键词loginuploadapiadmin
    1. 文件类型.js.json.config.bak

提取 JavaScript 文件:

cat urls/katana_urls.txt | grep '\.js' > urls/javascript_files.txt

规则很简单:精准的搜索,永远胜过无差别扫描。


Phase 4:漏洞狩猎

现在,真正的 漏洞挖掘流程 开始了。

自动化扫描(Nuclei)

cat alive/alive_subs.txt | nuclei -t ~/nuclei-templates/http/ -severity low,medium,high,critical -o nuclei_results/initial_scan.txt

cat urls/parameters.txt | nuclei -t ~/nuclei-templates/http/vulnerabilities/ -o nuclei_results/parameter_scan.txt

手动验证与思考

  • JS 文件里是否藏有 API Key?
    • ?next= 是否存在开放重定向?
    • ?user_id= 是否可枚举?

自动化 + 人工判断,才是核心。


深入案例:信息泄露漏洞

完整流程:

  1. 目标:urls/javascript_files.txt
    1. 自动扫描:
cat urls/javascript_files.txt | nuclei -t ~/nuclei-templates/http/exposures/ -o nuclei_results/js_exposure.txt
  1. 手动关键词搜索:
cat urls/javascript_files.txt | httpx -silent | xargs -I % curl -s % | grep -i -E "api[_-]?key|secret|password|token|aws|auth"
  1. 分析影响与可利用性

上周我就在一个压缩后的 app.js 中发现了硬编码的 AWS Key,15 分钟内完成确认并提交。


自动化整个清单

#!/bin/bash

# recon_auto.sh

TARGET=$1
echo "[+] Starting recon on $TARGET"

mkdir $TARGET && cd $TARGET

echo "[+] Phase 1"
subfinder -d $TARGET -o subs.txt
amass enum -passive -d $TARGET -o amass.txt
cat \*.txt | sort -u > all_subs.txt

echo "[+] Phase 2"
cat all_subs.txt | httpx -silent -o live.txt
cat live.txt | gau --subs | sort -u > urls.txt

echo "[+] Phase 3/4"
cat live.txt | nuclei -severity medium,high,critical -o findings.txt

echo "[+] Recon complete"

漏洞报告阶段

一份合格报告必须包含:

  1. 清晰标题
    1. 可复现步骤
    1. 明确影响
    1. PoC
    1. 修复建议

工具栈

  • 子域:subfinder / amass / assetfinder
    • 存活检测:httpx
    • 爬虫:katana / gau
    • 扫描:nuclei
    • 可视化:aquatone

常见误区

  • 跳过被动侦察
    • 未授权扫描
    • 忽视漏洞影响
    • 工具堆砌

结语

这份 Recon 清单 不是魔法。

它是一套 系统化方法论。 它用流程取代运气,用稳定性换取产出。

这就是我找到 100 个漏洞的原因。

你最离不开的侦察步骤是什么?欢迎分享你的工具或技巧。

公众号:安全狗的自我修养

vx:2207344074

Gitee:gitee.com/haidragon

GitHub:github.com/haidragon

Bilibili:haidragonx