关于LinkFinder
LinkFinder是一个用于在JavaScript文件中发现端点及其参数的Python脚本。通过这种方式,渗透测试人员和漏洞赏金猎人能够在他们测试的网站上收集新的、隐藏的端点。这可能会产生新的测试领域,可能包含新的漏洞。它通过使用Python版的jsbeautifier结合一个相当大的正则表达式来实现这一目的。该正则表达式由四个小型正则表达式组成,负责查找:
- 完整URL(
https://example.com/*
) - 绝对URL或带点的URL(
/\*
或../*
) - 至少包含一个斜杠的相对URL(
text/test.php
) - 不包含斜杠的相对URL(
test.php
)
输出以HTML或纯文本形式给出。@karel_origin为LinkFinder编写了一个Chrome扩展,可以在这里找到。
截图
安装
LinkFinder支持Python 3。
$ git clone https://github.com/GerbenJavado/LinkFinder.git
$ cd LinkFinder
$ python setup.py install
依赖项
LinkFinder依赖于argparse
和jsbeautifier
Python模块。这些依赖项都可以使用pip安装。
$ pip3 install -r requirements.txt
使用方法
简短形式 | 长形式 | 描述 |
---|---|---|
-i | --input | 输入:URL、文件或文件夹。对于文件夹可以使用通配符(例如'/*.js')。 |
-o | --output | "cli"表示打印到标准输出,否则指定保存HTML文件的位置。默认:output.html |
-r | --regex | 用于对发现的端点进行过滤的正则表达式(例如^/api/) |
-d | --domain | 分析整个域时使用的开关。遍历所有找到的JS文件。 |
-b | --burp | 输入Burp"保存选定"文件(包含多个JS文件)时使用的开关 |
-c | --cookies | 向请求添加cookies |
-h | --help | 显示帮助信息并退出 |
示例
- 最基本的用法,在在线JavaScript文件中查找端点并将HTML结果输出到results.html:
python linkfinder.py -i https://example.com/1.js -o results.html
- CLI/标准输出(不使用jsbeautifier,速度非常快):
python linkfinder.py -i https://example.com/1.js -o cli
- 分析整个域及其JS文件:
python linkfinder.py -i https://example.com -d
- Burp输入(在目标中选择要保存的文件,右键点击,"保存选定项目",将该文件作为输入):
python linkfinder.py -i burpfile -b
- 枚举整个文件夹中的JavaScript文件,同时查找以/api/开头的端点,最后将结果保存到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许可下发布。
- 感谢@jackhcable为我提供反馈。
- 特别感谢@edoverflow使这个项目更加清晰和出色。