本文介绍一种在渗透测试或安全研究中,自动化收集目标网站 JavaScript 文件并从中分析潜在敏感信息(如API密钥、端点、令牌)的方法。请注意,本文内容仅供网络安全研究学习之用。
如何从目标收集 JavaScript 文件
我们将使用多款工具进行地毯式收集,以确保覆盖面。

1. 使用工具:Katana
Katana 是一款快速、安全的网络爬虫。我们可以尝试不同的扫描策略来最大化覆盖率。
katana -u https://target.com -d 5 -jc -aff -fx -s depth-first -o katana-df.txt
katana -u https://target.com -d 5 -jc -aff -fx -s breadth-first -o katana-bf.txt
katana -u https://target.com -d 5 -jc -c 50 -o katana_normal_scan
2. 从 Katana 结果中提取 JS 文件
cat katana*.txt | grep .js$ | sort -u | tee katana_js_yourtarget.txt
3. 使用工具:urlfinder
urlfinder -d target.com -all -o urlfinder_yourtarget.txt
4. 从 urlfinder 结果中提取 JS 文件
cat urlfinder_yourtarget.txt | grep .js$ | sort -u | tee urlfinder_js_yourtarget.txt
5. 使用工具:hakrawler
echo https://target.com | hakrawler -d 5 -t 30 -subs -u | tee hakrawler_yourtarget.txt
6. 从 hakrawler 结果中提取 JS 文件
cat hakrawler_yourtarget.txt | grep .js$ | sort -u | tee hakrawler_js_yourtarget.txt
7. 使用工具:waybackurls
echo https://target.com | waybackurls > wayback_yourtarget.txt
8. 从 waybackurls 结果中提取 JS 文件
cat wayback_yourtarget.txt | grep .js$ | sort -u | tee wayback_js_yourtarget.txt
9. 使用工具:waymore
waymore -i yourtarget.com -oU waymore_yourtarget.txt
10. 从 waymore 结果中提取 JS 文件
cat waymore_yourtarget.txt | grep .js$ | sort -u | tee waymore_js_yourtarget.txt
11. 合并所有收集到的 JS 文件链接
cat katana_js_yourtarget.txt urlfinder_js_yourtarget.txt hakrawler_js_yourtarget wayback_js_yourtarget.txt waymore_js_yourtarget.txt | sort -u | tee all_js_files.txt
12. 去重并筛选有效 URL
使用 uro 进行 URL 规范化,再用 httpx 验证存活状态(状态码200)。
cat all_js_files.txt | uro | sort -u | httpx -mc 200 -o final_js_files.txt
至此,JavaScript 文件的收集阶段已经完成。我们得到了一个经过清理和验证的 JS 文件 URL 列表 final_js_files.txt。
进入自动化分析阶段
接下来,我们将使用一系列专门工具对收集到的 JS 文件进行自动化分析,以挖掘潜在的敏感信息。这是安全/渗透/逆向测试中的常见环节。
1. 使用 Mantra 搜索 API 密钥与令牌
mantra 工具可以快速从文本中匹配多种常见的密钥和令牌模式。
cat final_js_files.txt | mantra
2. 使用 SecretFinder 探测敏感数据
SecretFinder 是一个 Python 脚本,专门用于在 JS 文件中查找硬编码的秘密信息。
cd secretfinder
source venv/bin/activate
cat ~/PATH/target/final_js_files.txt | while read url; do python3 SecretFinder.py -i $url -o cli >> ~/PATH/target/sortedsecret.txt; done
3. 使用 jsecret 检测源代码中的敏感信息
jsecret 是另一款专注于 JS 文件分析的敏感信息检测工具。
cat final_js_files.txt | jsecret
4. 使用 Nuclei 进行暴露信息扫描
Nuclei 拥有庞大的漏洞模板库,我们可以使用其 exposures 分类下的模板进行扫描。
nuclei -l final_js_files.txt -t /home/user/.local/nuclei-templates/http/exposures/ -mhe 4
不可或缺的人工审查
自动化工具虽然强大,但并非万能。完成上述自动化分析后,关键的一步仍然是手动审查这些 JavaScript 文件。自动化工具可能会遗漏一些上下文相关的敏感信息,例如:
- 端点:未被常见模式匹配的内部API或服务地址。
- API:新的或自定义的API接口路径。
- 凭证:以非标准格式硬编码的用户名、密码。
- 开发者注释:代码注释中可能无意间留下的配置信息、调试路径或内部系统名称。
很多时候,最关键的信息就藏在显而易见但却需要人类逻辑判断的地方。

希望这套结合了自动化工具链与人工审查的方法,能帮助你更高效地进行安全研究,发现潜在的风险点。更多关于自动化安全测试的技巧和工具分享,欢迎关注云栈社区的讨论。