
xpath is a fast, multi-technique XPath injection scanner written in Nim. It focuses on practical detection, response comparison, visible extraction, blind extraction.
用于授权安全测试的高级 XPath 注入扫描器。
由 Chokri Hammedi (blue0x1) 编写 · MIT 许可
xpath 是一个使用 Nim 编写的快速、多技术 XPath 注入扫描器。它专注于实际检测、响应比较、可见提取、盲提取,以及针对真实世界 XML 支持应用的负载覆盖。
它除了 Nim 标准库外没有外部运行时依赖。
| 领域 | 支持 |
|---|---|
| 检测 | 基于错误、布尔型盲注、时间型盲注、认证绕过、联合/节点选择 |
| 提取 | 可见 HTML 解析、选择器联合提取、盲 XPath 数据提取 |
| 负载 | 经典、谓词、函数、路径逃逸、编码、实体、大小写混合变体 |
| 发现 | URL 参数检测和 HTML 表单爬取 |
| 规避 | WAF/IDS 指示器、URL 编码和基于实体的绕过负载 |
| 输出 | 可读的终端报告和 JSON 报告导出 |
| 传输 | Cookie、标头、代理、重试、超时、User-Agent、重定向控制 |
nimble install xpath
这将从官方 Nim 包列表安装最新包。
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
make test
Linux 二进制文件写入到:
dist/xpath-linux-amd64
sudo make install
默认安装到:
/usr/local/bin/xpath
要更改安装前缀:
sudo make install PREFIX=/usr
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
make windows
Windows 二进制文件写入到:
dist/xpath-windows-amd64.exe
在 Linux 上,Windows 构建需要 MinGW:
sudo apt install mingw-w64
扫描一个 GET 参数:
xpath -u "http://target.local/search?q=test" -p q
扫描所有检测到的查询参数:
xpath -u "http://target.local/search?q=test&id=1"
扫描一个 POST 请求体:
xpath -u "http://target.local/login" -m POST -d "user=*&pass=test"
运行所有技术,并在可能时提取可见或盲数据:
xpath -u "http://target.local/search?q=test" -p q -t A -x
使用代理:
xpath -u "http://target.local/search?q=test" -p q --proxy http://127.0.0.1:8080
保存 JSON 输出:
xpath -u "http://target.local/search?q=test" -p q -t A -o report.json -f json
USAGE
xpath [OPTIONS] -u <URL>
TARGET
-u, --url <URL> 目标 URL
-m, --method <METHOD> HTTP 方法:GET 或 POST
-d, --data <DATA> POST 请求体,使用 * 标记注入点
-p, --param <PARAM> 要测试的参数,逗号分隔
-c, --cookie <COOKIE> Cookie 字符串
-H, --header <HEADER> 额外标头,可重复
DETECTION
-t, --technique <FLAGS> E, B, T, U, P 或 A
-l, --level <1-5> 负载详尽级别
-x, --extract 确认注入后提取数据
--xpath <EXPR> 用于提取的 XPath 表达式
OUTPUT
-o, --output <FILE> 保存报告
-f, --format <FMT> text 或 json
-v, --verbose 详细输出
发送格式错误的 XPath 负载,并检测来自 Java、.NET、PHP、libxml2、Saxon、Xalan 和 W3C XQuery 错误码的框架特定错误特征。
xpath -u "http://target.local/item?id=1" -p id -t E
使用响应体相似性和大小差异比较配对的 TRUE/FALSE 响应。当结果未直接打印但应用程序行为发生变化时,这很有用。
xpath -u "http://target.local/search?q=test" -p q -t B
使用计算成本高的 XPath 表达式创建可测量的响应时间差异,当基于内容的信号不可用时。
xpath -u "http://target.local/search?q=test" -p q -t T --time-sec 3
测试选择器类型的参数是否可以与绝对或相对 XPath 路径联合,例如 //text()、../../..//text()、//@* 和索引路径。
xpath -u "http://target.local/search?q=INVALID&field=name" -p field -t U -x
检查谓词破坏负载、基于位置的负载、角色子字符串负载、布尔函数和上下文感知绕过形式。
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
当启用 -x 时,xpath 会选择最佳可用提取模式:
| 模式 | 描述 |
|---|---|
| 可见认证响应 | 从成功的绕过响应中解析新行、链接、重定向和渲染的值 |
| 可见联合路径 | 从联合/节点选择负载中提取新渲染的文本 |
| 盲提取 | 使用 、、 和 推断 XML 数据 |
示例:
xpath -u "http://target.local/query?q=test" -p q -t A -x
自定义表达式:
xpath -u "http://target.local/query?q=test" -p q -x --xpath "name(/*[1])"
src/
xpath.nim
core/
analyzer.nim
crawler.nim
extractor.nim
http.nim
payloads.nim
reporter.nim
scanner.nim
utils/
cli.nim
config.nim
logger.nim
MIT 许可。参见 LICENSE。
此工具仅用于授权安全测试。仅在你拥有或已获得明确书面许可的系统上使用。
string-length()substring()name()count()| 级别 |
|---|
| 重点 |
|---|
1 | 快速经典负载 |
2 | 常见真实世界谓词破坏 |
3 | 默认平衡扫描 |
4 | 编码、实体和路径逃逸负载 |
5 | 最大覆盖和奇异变体 |
| 目标 | 输出 |
|---|
make linux | dist/xpath-linux-amd64 |
make windows | dist/xpath-windows-amd64.exe |
make test | 运行 Nim 测试套件 |
make install | 安装到 $(PREFIX)/bin/xpath |
make deb | dist/xpath_1.0.0_amd64.deb |
make clean | 移除 build/ 和 dist/ |