blue0x1/xpath
GitHub: blue0x1/xpath
一款基于 Nim 的高性能 XPath 注入扫描器,支持多种检测技术和自动化数据提取。
Stars: 2 | Forks: 0
用于授权安全测试的高级 XPath 注入扫描器。
由 Chokri Hammedi (blue0x1) 编写 · MIT 许可证
## 概述
`xpath` 是一个快速、多技术的 XPath 注入扫描器,使用 Nim 编写。它专注于针对现实世界中基于 XML 的应用程序进行实用检测、响应比较、可见提取、盲注提取以及 payload 覆盖。
除了 Nim 标准库之外,它没有其他外部运行时依赖。
## 功能特性
| 领域 | 支持情况 |
|---|---|
| 检测 | 报错型、布尔型盲注、时间型盲注、身份验证绕过、联合/节点选择 |
| 提取 | 可见 HTML 解析、选择器联合提取、XPath 盲注数据提取 |
| Payload | 经典、谓词、基于函数、路径跳出、编码、实体、大小写混合变体 |
| 发现 | URL 参数检测与 HTML 表单抓取 |
| 绕过 | WAF/IDS 指示器、URL 编码和基于实体的绕过 payload |
| 输出 | 人类可读的终端报告和 JSON 报告导出 |
| 传输 | Cookies、headers、proxy、retry、timeout、User-Agent、重定向控制 |
## 安装说明
### Nimble
```
nimble install xpath
```
这将从官方 Nim 包列表中安装最新的包。
### 从源码构建
```
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
```
Linux 二进制文件将写入:
```
dist/xpath-linux-amd64
```
### 全局安装
```
sudo make install
```
默认安装:
```
/usr/local/bin/xpath
```
更改安装前缀:
```
sudo make install PREFIX=/usr
```
### Debian 软件包
```
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
```
### Windows 交叉编译
```
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
TARGET
-u, --url Target URL
-m, --method HTTP method: GET or POST
-d, --data POST body, use * to mark injection point
-p, --param Parameter(s) to test, comma-separated
-c, --cookie Cookie string
-H, --header Extra header, repeatable
DETECTION
-t, --technique E, B, T, U, P, or A
-l, --level <1-5> Payload thoroughness level
-x, --extract Extract data after confirming injection
--xpath XPath expression for extraction
OUTPUT
-o, --output Save report
-f, --format text or json
-v, --verbose Verbose output
```
## 技术原理
### 报错型
发送格式错误的 XPath payload,并检测来自 Java、.NET、PHP、libxml2、Saxon、Xalan 和 W3C XQuery 错误码的特定于框架的错误签名。
```
xpath -u "http://target.local/item?id=1" -p id -t E
```
### 布尔型盲注
使用主体相似度和大小差异来比较成对的 TRUE/FALSE payload 响应。当结果未直接打印但应用程序行为发生改变时,此技术非常有用。
```
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
```
### 身份验证绕过
检查谓词破坏 payload、基于位置的 payload、角色子字符串 payload、布尔函数和上下文感知的绕过形式。
```
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
```
## 数据提取
当启用 `-x` 时,`xpath` 会选择最佳的可用提取模式:
| 模式 | 描述 |
|---|---|
| 可见身份验证响应 | 解析成功绕过响应中的新行、链接、重定向和渲染值 |
| 可见联合路径 | 从联合/节点选择 payload 中提取新渲染的文本 |
| 盲注提取 | 使用 `string-length()`、`substring()`、`name()` 和 `count()` 推断 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])"
```
## Payload 级别
| 级别 | 侧重点 |
|---|---|
| `1` | 快速经典 payload |
| `2` | 常见的真实场景谓词破坏 |
| `3` | 默认均衡扫描 |
| `4` | 编码、实体和路径跳出 payload |
| `5` | 最大覆盖率和特殊变体 |
## 构建目标
| 目标 | 输出 |
|---|---|
| `make linux` | `dist/xpath-linux-amd64` |
| `make windows` | `dist/xpath-windows-amd64.exe` |
| `make install` | 安装至 `$(PREFIX)/bin/xpath` |
| `make deb` | `dist/xpath_1.0.0_amd64.deb` |
| `make clean` | 删除 `build/` 和 `dist/` |
## 项目结构
```
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](LICENSE)。
## 法律声明
本工具仅供授权安全测试使用。请仅在您拥有或获得明确书面授权进行测试的系统上使用。标签:CISA项目, Nim语言, WAF绕过, Web安全, XML安全, XPath注入, 加密, 安全测试, 开源安全工具, 授权渗透测试, 攻击性安全, 数据提取, 漏洞扫描器, 演示模式, 爬虫与发现, 盲注检测, 网络安全, 蓝队分析, 逆向工程平台, 隐私保护