VictorAzariah/PathPlunderer
GitHub: VictorAzariah/PathPlunderer
一款集成目录爆破、子域名枚举、云存储探测等多模式的 Python 进攻性安全侦察 CLI 工具。
Stars: 2 | Forks: 0
```
██▓███ ▄▄▄ ▄▄▄█████▓ ██░ ██ ██▓███ ██▓ █ ██ ███▄ █ ▓█████▄ ▓█████ ██▀███ ▓█████ ██▀███
▓██░ ██▒▒████▄ ▓ ██▒ ▓▒▓██░ ██▒▓██░ ██▒▓██▒ ██ ▓██▒ ██ ▀█ █ ▒██▀ ██▌▓█ ▀ ▓██ ▒ ██▒▓█ ▀ ▓██ ▒ ██▒
▓██░ ██▓▒▒██ ▀█▄ ▒ ▓██░ ▒░▒██▀▀██░▓██░ ██▓▒▒██░ ▓██ ▒██░▓██ ▀█ ██▒░██ █▌▒███ ▓██ ░▄█ ▒▒███ ▓██ ░▄█ ▒
▒██▄█▓▒ ▒░██▄▄▄▄██░ ▓██▓ ░ ░▓█ ░██ ▒██▄█▓▒ ▒▒██░ ▓▓█ ░██░▓██▒ ▐▌██▒░▓█▄ ▌▒▓█ ▄ ▒██▀▀█▄ ▒▓█ ▄ ▒██▀▀█▄
▒██▒ ░ ░ ▓█ ▓██▒ ▒██▒ ░ ░▓█▒░██▓▒██▒ ░ ░░██████▒▒▒█████▓ ▒██░ ▓██░░▒████▓ ░▒████▒░██▓ ▒██▒░▒████▒░██▓ ▒██▒
▒▓▒░ ░ ░ ▒▒ ▓▒█░ ▒ ░░ ▒ ░░▒░▒▒▓▒░ ░ ░░ ▒░▓ ░░▒▓▒ ▒ ▒ ░ ▒░ ▒ ▒ ▒▒▓ ▒ ░░ ▒░ ░░ ▒▓ ░▒▓░░░ ▒░ ░░ ▒▓ ░▒▓░
░▒ ░ ▒ ▒▒ ░ ░ ▒ ░▒░ ░░▒ ░ ░ ░ ▒ ░░░▒░ ░ ░ ░ ░░ ░ ▒░ ░ ▒ ▒ ░ ░ ░ ░▒ ░ ▒░ ░ ░ ░ ░▒ ░ ▒░
░░ ░ ▒ ░ ░ ░░ ░░░ ░ ░ ░░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░
```
**🔍 Web 侦察与攻击面发现**
`dir` · `subdomain` · `vhost` · `fuzz` · `cloud` · `xmlrpc`
[](https://python.org)
[](https://github.com/VictorAzariah/PathPlunderer/releases)
[]()
*灵感来源于 [gobuster](https://github.com/OJ/gobuster) · [feroxbuster](https://github.com/epi052/feroxbuster) · [cloud_enum](https://github.com/initstring/cloud_enum) · [lazys3](https://github.com/nahamsec/lazys3) · [SecLists](https://github.com/danielmiessler/SecLists)*
## 🧰 概述
PathPlunderer 是一款专为进攻性安全工作打造的 Python Web 侦察工具。它集成了目录暴力破解、403 绕过、子域名枚举、虚拟主机发现、参数模糊测试 (Fuzzing)、多云存储桶枚举以及 WordPress XML-RPC 暴力破解功能——所有功能都统一在一个 CLI 中,并提供了整洁对齐的输出。
```
python3 pathplunderer.py -m dir -u https://target.com -x php --probe --secrets --bypass-403 --wayback --wayback-filter-status 200,301
```
## ⚡ 安装
```
git clone https://github.com/VictorAzariah/PathPlunderer
cd PathPlunderer
pip install -r requirements.txt
```
## 🗺️ 模式
```
python3 pathplunderer.py -m
[options]
python3 pathplunderer.py -m --help
```
| 模式 | 💡 功能说明 |
|------|----------------|
| 🗂️ `dir` | 目录与文件暴力破解——智能递归、403 绕过、爬取、Wayback、密钥检测、WP 检测 |
| 🌐 `subdomain` | DNS 子域名枚举 |
| 🖥️ `vhost` | 通过操纵 `Host:` 头进行虚拟主机发现 |
| 🎯 `fuzz` | URL / Body / Header Fuzzer——在任意位置替换 `FUZZ` 关键字 |
| ☁️ `cloud` | 多云存储桶枚举——AWS S3 · GCP Storage · Azure Blob |
| 🔑 `xmlrpc` | 通过 `xmlrpc.php` 进行 WordPress XML-RPC 凭据暴力破解 |
## 🧠 PathPlunderer 的独特之处
大多数目录扫描器要么对**所有内容**进行递归(导致请求充斥 `/images/`、`/css/`、`/fonts/`),要么完全跳过递归。PathPlunderer 两者皆非。
### 🔁 智能递归 *(默认开启——无需标志)*
自动递归进入可能包含敏感内容的目录,并静默跳过干扰项:
| ⛔ 跳过 (静态资源) | ✅ 递归进入 |
|---------------------------|----------------|
| `/images/` `/img/` `/css/` `/fonts/` | `/api/` `/admin/` `/js/` |
| `/icons/` `/sprites/` `/thumbnails/` | `/v1/` `/v2/` `/uploads/` |
| `/videos/` `/audio/` `/gfx/` | `/config/` `/backup/` `/docs/` |
```
# 🧠 智能 recurse — 默认启用,无需 flag
python3 pathplunderer.py -m dir -u https://target.com -w wordlists/big.txt
# 🔓 完全 recurse — 进入每一个发现的目录
python3 pathplunderer.py -m dir -u https://target.com -w wordlists/big.txt --recurse
# 🚫 平坦扫描 — 完全不进行递归
python3 pathplunderer.py -m dir -u https://target.com -w wordlists/big.txt --no-recurse
```
### 📂 目录列表检测 *(始终开启)*
自动检测开放的 `Index of /` 列表并立即提醒您——而不会用里面的每个文件淹没输出:
```
[DIR-LIST] Open directory listing: https://target.com/uploads/
```
### 🕷️ 扫描后爬取 *(始终开启)*
在字典扫描之后,PathPlunderer 会访问已发现的页面并从 HTML 中提取链接。任何未被字典扫描发现的新 URL 都会标记上 `[CRAWL]` 标签——包括 301、403、500 响应。404 响应会被静默丢弃。
## 🗂️ Dir 模式
### 输出格式
Feroxbuster 风格的固定宽度列——状态、方法、行数、字数、字节数、URL:
```
200 GET 65l 877w 5266c https://target.com/login.php
301 GET 2l 28w 169c https://target.com/admin → https://target.com/admin/
403 GET 0l 0w 0c https://target.com/secret [CRAWL]
```
### ⚙️ 扫描阶段
| # | 阶段 | 触发条件 |
|---|-------|-------------|
| 1 | 🔧 服务器校准——延迟、超时、通配符检测 | 始终 |
| 2 | 📋 **Dir 扫描**——字典 × 扩展名,智能递归 | 始终 |
| 3 | 🕷️ **爬取**——访问发现的页面,找出遗漏的 URL | 始终 |
| 4 | 🔭 **探测**——130+ 条已知敏感路径 | `--probe` |
| 5 | 🔓 **403 绕过**——100+ 种绕过技术 | `--bypass-403` |
| 6 | 🔑 **密钥**——扫描响应中泄露的凭据 | `--secrets` |
| 7 | 🕰️ **Wayback**——查询 Wayback Machine CDX API | `--wayback` |
### 📌 示例
```
# 默认 — 开启智能 recurse,开启 crawl,自动加载 wordlists/common.txt
python3 pathplunderer.py -m dir -u https://target.com
# 包含扩展 + 完整侦查套件
python3 pathplunderer.py -m dir -u https://target.com -w wordlists/directory-list-2.3-medium.txt -x php,html,txt --probe --secrets --bypass-403 --wayback --wayback-filter-status 200,301
# 仅 Bypass 模式(跳过 wordlist 扫描)
python3 pathplunderer.py -m dir -u https://target.com/admin --bypass-only
# 仅 Wayback 导出
python3 pathplunderer.py -m dir -u https://target.com --wayback-only --wayback-all --wayback-filter-status 200,301
# WordPress 主题 + 插件版本检测
python3 pathplunderer.py -m dir -u https://wpsite.com -x php --wp-detect
# 高速扫描
python3 pathplunderer.py -m dir -u https://target.com -w wordlists/raft-large-words.txt -t 100
```
### 🔓 403 绕过技术
PathPlunderer 对每个 403 响应运行 **100+ 种绕过技术**:
- 🛤️ **路径变体** — `/admin/./` · `/admin//` · `/%2fadmin` · `/admin%00`
- 🔤 **编码** — 双重编码 · Unicode 标准化 · 空字节
- 📨 **请求头** — `X-Forwarded-For` · `X-Original-URL` · `X-Rewrite-URL` · `X-Real-IP` · `X-Custom-IP-Authorization` · 以及 20+ 更多
- 🪟 **IIS** — `/admin;param=value` · **Tomcat** 路径参数 · **Spring Boot** Actuator 技巧
- 🌐 **CDN** — Akamai 和 Cloudflare 特定的绕过头
### 🔑 密钥检测
40+ 种模式——包括:AWS 访问密钥 · GCP 服务账号 JSON · 私钥 (RSA/EC/PGP) · JWT · Stripe / Shopify / Twilio / SendGrid API 密钥 · Slack Webhooks · GitHub / GitLab 令牌 · Telegram Bot 令牌 · 数据库连接字符串 · `.env` 变量转储
### 🌐 WordPress 检测 `--wp-detect`
在爬取过程中,PathPlunderer 解析 HTML 源码并从 `?ver=` 查询参数中提取 WordPress 主题和插件名称以及版本号:
```
[WP-THEME] twentytwentytwo ver:1.3
[WP-PLUGIN] contact-form-7 ver:5.7.6
[WP-PLUGIN] woocommerce ver:8.2.1
```
## 🌐 Subdomain 模式
```
python3 pathplunderer.py -m subdomain --domain target.com -w wordlists/subdomains-top5000.txt --resolver 8.8.8.8 --check-cname -t 200 -o subs.txt
```
## 🖥️ VHost 模式
```
# HTB / CTF 风格
python3 pathplunderer.py -m vhost -u http://10.10.11.100 -w wordlists/vhosts.txt --domain target.htb --append-domain
# 按响应大小过滤噪声
python3 pathplunderer.py -m vhost -u https://10.10.10.5 -w wordlists/subdomains-top5000.txt --domain target.htb --xs 4242
```
## 🎯 Fuzz 模式
`FUZZ` 关键字可以放在任何位置——URL 路径、POST Body 或 Headers。
```
# Path fuzzing
python3 pathplunderer.py -m fuzz -u "https://api.target.com/v1/user/FUZZ" -w wordlists/api-endpoints.txt
# POST 凭证暴力破解(URL-encoded body,类似 ffuf -d)
python3 pathplunderer.py -m fuzz -u "https://target.com/login" --data-urlencoded "user=admin&password=FUZZ" -w wordlists/rockyou.txt -b 200
# JSON body fuzzing(自动设置 Content-Type: application/json)
python3 pathplunderer.py -m fuzz -u "https://api.target.com/auth" --data-json '{"user":"admin","pass":"FUZZ"}' -w wordlists/passwords.txt -b 401
# Header fuzzing
python3 pathplunderer.py -m fuzz -u "https://target.com" -H "X-Api-Version: FUZZ" -w wordlists/fuzz-general.txt
```
## ☁️ Cloud 模式
生成关键字变体并探测所有三大云服务提供商——方法论源自 **cloud_enum** 和 **lazys3**。
```
# 单个关键字
python3 pathplunderer.py -m cloud -k acmecorp
# 多个关键字 + 自定义 mutation 列表
python3 pathplunderer.py -m cloud -k acme -k acme-corp -M wordlists/cloud_mutations.txt -t 20
# 仅精确关键字,无 mutation 扩展
python3 pathplunderer.py -m cloud -k acmecorp --quickscan
# 禁用特定 providers
python3 pathplunderer.py -m cloud -k target --disable-azure
```
| ☁️ 提供商 | 🔢 端点 |
|------------|-------------|
| AWS S3 | 22 — 虚拟托管风格 + 路径风格 + 所有主要区域 + `-local` 变体 |
| GCP Storage | 7 — googleapis.com, Firebase Storage, App Engine |
| Azure | 10 + DNS CNAME 指纹识别 |
| 🚦 状态 | 含义 |
|----------|---------|
| 🟢 **OPEN** | 存储桶存在且公开列出文件 |
| 🔒 **PRIVATE** | 存储桶存在,需要身份验证 |
| 🔵 **DNS-EXISTS** | CNAME 解析成功——即使 HTTP 被锁定,存储桶依然存在 |
## 🔑 XML-RPC 模式
通过 `xmlrpc.php` 并使用 `wp.getUsersBlogs` XML-RPC 方法对 WordPress 凭据进行暴力破解。
```
# 单个用户名 + 密码列表
python3 pathplunderer.py -m xmlrpc -u https://target.com -U admin -P wordlists/rockyou.txt -t 20
# 用户名列表 + 密码列表,首次命中即停止
python3 pathplunderer.py -m xmlrpc -u https://target.com -U wordlists/users.txt -P wordlists/passwords.txt --stop-on-first
# 通过 Burp Suite
python3 pathplunderer.py -m xmlrpc -u https://target.com -U admin -P passwords.txt --burp -t 5
```
## 📂 字典
所有字典都包含在 `wordlists/` 文件夹中。当未指定 `-w` 时,**自动加载** `wordlists/common.txt`。
| 📄 文件 | 🎯 最适合 |
|---------|------------|
| `common.txt` | 快速默认扫描(约 200 个高价值路径) |
| `directory-list-2.3-medium.txt` | DirBuster 经典——详尽的目录扫描 |
| `raft-large-words.txt` | 最佳的整体目录/Fuzz 覆盖 |
| `big.txt` | 广泛的目录扫描 |
| `subdomains-top5000.txt` | 快速子域名枚举 |
| `subdomains-top20000.txt` | 深度子域名枚举 |
| `vhosts.txt` | VHost 暴力破解 |
| `api-endpoints.txt` | API 路径 Fuzzing |
| `fuzz-general.txt` | 通用 Fuzzing Payloads |
| `cloud_mutations.txt` | 云存储桶变体(177 条记录) |
## ⚠️ 法律声明
仅限于**授权的安全测试**。在扫描任何系统之前,请确保您拥有明确的书面许可。作者不对滥用行为负责。
PathPlunderer v4.1 · 作者 Victor Azariah
灵感来源于 gobuster · feroxbuster · cloud_enum · lazys3 · SecLists
标签:403绕过, CISA项目, Web安全, 云安全测试, 子域名枚举, 安全测试, 密码管理, 开源安全工具, 攻击性安全, 数据展示, 文档结构分析, 目录爆破, 系统安全, 红队, 网络安全, 蓝队分析, 逆向工具, 逆向工程平台, 配置审计, 隐私保护