VictorAzariah/PathPlunderer

GitHub: VictorAzariah/PathPlunderer

一款集成目录爆破、子域名枚举、云存储探测等多模式的 Python 进攻性安全侦察 CLI 工具。

Stars: 2 | Forks: 0

``` ██▓███ ▄▄▄ ▄▄▄█████▓ ██░ ██ ██▓███ ██▓ █ ██ ███▄ █ ▓█████▄ ▓█████ ██▀███ ▓█████ ██▀███ ▓██░ ██▒▒████▄ ▓ ██▒ ▓▒▓██░ ██▒▓██░ ██▒▓██▒ ██ ▓██▒ ██ ▀█ █ ▒██▀ ██▌▓█ ▀ ▓██ ▒ ██▒▓█ ▀ ▓██ ▒ ██▒ ▓██░ ██▓▒▒██ ▀█▄ ▒ ▓██░ ▒░▒██▀▀██░▓██░ ██▓▒▒██░ ▓██ ▒██░▓██ ▀█ ██▒░██ █▌▒███ ▓██ ░▄█ ▒▒███ ▓██ ░▄█ ▒ ▒██▄█▓▒ ▒░██▄▄▄▄██░ ▓██▓ ░ ░▓█ ░██ ▒██▄█▓▒ ▒▒██░ ▓▓█ ░██░▓██▒ ▐▌██▒░▓█▄ ▌▒▓█ ▄ ▒██▀▀█▄ ▒▓█ ▄ ▒██▀▀█▄ ▒██▒ ░ ░ ▓█ ▓██▒ ▒██▒ ░ ░▓█▒░██▓▒██▒ ░ ░░██████▒▒▒█████▓ ▒██░ ▓██░░▒████▓ ░▒████▒░██▓ ▒██▒░▒████▒░██▓ ▒██▒ ▒▓▒░ ░ ░ ▒▒ ▓▒█░ ▒ ░░ ▒ ░░▒░▒▒▓▒░ ░ ░░ ▒░▓ ░░▒▓▒ ▒ ▒ ░ ▒░ ▒ ▒ ▒▒▓ ▒ ░░ ▒░ ░░ ▒▓ ░▒▓░░░ ▒░ ░░ ▒▓ ░▒▓░ ░▒ ░ ▒ ▒▒ ░ ░ ▒ ░▒░ ░░▒ ░ ░ ░ ▒ ░░░▒░ ░ ░ ░ ░░ ░ ▒░ ░ ▒ ▒ ░ ░ ░ ░▒ ░ ▒░ ░ ░ ░ ░▒ ░ ▒░ ░░ ░ ▒ ░ ░ ░░ ░░░ ░ ░ ░░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ``` **🔍 Web 侦察与攻击面发现** `dir` · `subdomain` · `vhost` · `fuzz` · `cloud` · `xmlrpc` [![Python](https://img.shields.io/badge/python-3.8%2B-00BFFF?style=plastic&logo=python&logoColor=white)](https://python.org) [![Version](https://img.shields.io/badge/version-4.1-FF1493?style=plastic&logo=github&logoColor=white)](https://github.com/VictorAzariah/PathPlunderer/releases) [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Windows%20%7C%20macOS-00C853?style=plastic&logo=linux&logoColor=white)]() *灵感来源于 [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 ```

PathPlunderer Demo

## ⚡ 安装 ``` 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安全, 云安全测试, 子域名枚举, 安全测试, 密码管理, 开源安全工具, 攻击性安全, 数据展示, 文档结构分析, 目录爆破, 系统安全, 红队, 网络安全, 蓝队分析, 逆向工具, 逆向工程平台, 配置审计, 隐私保护