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 支持 **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安全, 反编译, 可自定义解析器, 插件扩展, 搜索引擎优化, 攻击面挖掘, 敏感路径扫描, 网络安全, 蓝队分析, 请求拦截, 逆向工具, 隐私保护