GerbenJavado/LinkFinder

GitHub: GerbenJavado/LinkFinder

LinkFinder 是一款 Python 编写的 JavaScript 端点提取工具,用于在 JS 文件中自动发现隐藏的 URL 路径及其参数。

Stars: 4345 | Forks: 656

## 关于 LinkFinder LinkFinder 是一个 Python 脚本,用于发现 JavaScript 文件中的 endpoint 及其参数。通过这种方式,渗透测试人员和漏洞猎人能够在他们测试的网站上收集到新的、隐藏的 endpoint。这将带来新的测试范围,其中可能包含新的漏洞。它通过结合适用于 Python 的 [jsbeautifier](https://github.com/beautify-web/js-beautify) 和一个相当大的正则表达式来实现此功能。该正则表达式由四个小型正则表达式组成,分别负责查找: - 完整 URL(`https://example.com/*`) - 绝对 URL 或点分 URL(`/\*` 或 `../*`) - 至少包含一个斜杠的相对 URL(`text/test.php`) - 不包含斜杠的相对 URL(`test.php`) 输出结果以 HTML 或纯文本形式提供。[@karel_origin](https://twitter.com/karel_origin) 为 LinkFinder 编写了一个 Chrome 扩展程序,可以在[这里](https://github.com/GerbenJavado/LinkFinder/tree/chrome_extension)找到。 ## 截图 ![LinkFinder](https://i.imgur.com/JfcpYok.png "LinkFinder in action") ## 安装说明 LinkFinder 支持 **Python 3**。 ``` $ git clone https://github.com/GerbenJavado/LinkFinder.git $ cd LinkFinder $ python setup.py install ``` ## 依赖项 LinkFinder 依赖于 `argparse` 和 `jsbeautifier` Python 模块。可以使用 [pip](https://pypi.python.org/pypi/pip) 安装所有这些依赖项。 ``` $ pip3 install -r requirements.txt ``` ## 用法 短格式 | 长格式 | 描述 ------------- | ------------- |------------- -i | --input | 输入:URL、文件或文件夹。对于文件夹,可以使用通配符(例如 '/*.js')。 -o | --output | "cli" 表示打印到 STDOUT,否则指定 HTML 文件的保存位置。默认值:output.html -r | --regex | 用于根据找到的 endpoint 进行过滤的正则表达式(例如 ^/api/) -d | --domain | 在分析整个域时启用的开关。枚举所有找到的 JS 文件。 -b | --burp | 在输入包含多个 JS 文件的 Burp“保存选中项”文件时使用的开关 -c | --cookies | 为请求添加 cookies -h | --help | 显示帮助信息并退出 ### 示例 * 在线 JavaScript 文件中查找 endpoint 并将 HTML 结果输出到 results.html 的最基本用法: `python linkfinder.py -i https://example.com/1.js -o results.html` * CLI/STDOUT 输出(不使用 jsbeautifier,速度非常快): `python linkfinder.py -i https://example.com/1.js -o cli` * 分析整个域及其 JS 文件: `python linkfinder.py -i https://example.com -d` * Burp 输入(在目标中选择要保存的文件,右键单击,`Save selected items`,将该文件作为输入提供): `python linkfinder.py -i burpfile -b` * 枚举整个文件夹中的 JavaScript 文件,同时查找以 /api/ 开头的 endpoint,最后将结果保存到 results.html: `python linkfinder.py -i 'Desktop/*.js' -r ^/api/ -o results.html` ## Docker * 构建 Docker 镜像: ``` docker build -t linkfinder``` * 使用 Docker 运行 ` docker run --rm -v $(pwd):/linkfinder/output linkfinder -i http://example.com/1.js -o /linkfinder/output/output.html` 确保在输出路径中使用路径 `/linkfinder/output`,否则当容器退出时输出将会丢失。 ## 单元测试 * 需要 pytest `pytest test_parser.py` ## 最终说明 - 这是我第一次公开发布工具。非常感谢您的贡献! - LinkFinder 采用 [MIT License](https://github.com/GerbenJavado/LinkFinder/blob/master/LICENSE) 发布。 - 感谢 [@jackhcable](https://twitter.com/jackhcable) 为我提供的反馈。 - 特别感谢 [@edoverflow](https://twitter.com/edoverflow) 使这个项目变得更加整洁和出色。
标签:Bug Bounty, jsbeautifier, JS爬虫, Python3, URL提取, Web安全, 反编译, 可自定义解析器, 插件扩展, 搜索引擎优化, 攻击面挖掘, 敏感路径扫描, 网络安全, 蓝队分析, 请求拦截, 逆向工具, 隐私保护