haylipatz/PatzRecon
GitHub: haylipatz/PatzRecon
一款基于 Python 的模块化 Web 安全侦察框架,旨在通过结构化探测帮助安全从业者在授权环境中快速识别潜在漏洞类别并减少手动枚举时间。
Stars: 0 | Forks: 0
# PatzRecon
PatzRecon:教育用途的侦察框架
PatzRecon 是一个基于 Python 的模块化侦察工具,旨在帮助安全从业人员在受控且已授权的环境中识别潜在的漏洞类别。它不是一个漏洞利用框架;它通过执行结构化的探测,来减少渗透测试任务或 CTF 挑战期间手动枚举所花费的时间。 # 核心理念: 授权优先:该工具需要明确定义目标(URL/IP),并假定用户拥有测试该目标的合法权限。
无误报(尽最大努力):探测的设计尽可能做到确定性(例如,检查特定的 headers、status codes 或已知的文件路径),而不是依赖经常导致误报的启发式猜测。
模块化:31 个 PortSwigger Web Security Academy 主题中的每一个都由一个独立的模块处理,便于轻松更新和维护。 # 工作原理 PatzRecon 作为一个“实验室范围的侦察助手”运行。它不是盲目地攻击目标,而是系统地对应用程序的结构和行为进行指纹识别。
1. 输入:用户提供目标 URL(例如 https://example.net/)以及可选的凭据或 session cookies。
2. 编排:主引擎(PatzRecon.py)加载全部 31 个漏洞模块。
3. 探测:每个模块执行一系列非破坏性的检查:
被动分析:检查 HTML 源代码、HTTP headers 和 JavaScript 文件以寻找线索(例如,X-Powered-By、CSRF tokens、CORS headers)。
主动指纹识别:发送特定且安全的请求来检测行为(例如,发送格式错误的 JSON body 以检查反序列化错误,或请求 /admin 以检查访问控制响应)。
4. 报告:将结果汇总成结构化报告,根据观察到的指标指出可能存在哪些漏洞类别。
示例场景:
目标:一个 PortSwigger 实验室 ID acme123。
操作:PatzRecon 向主页发送一个请求。
模块:SQL 注入:检查输入参数是否反映在错误消息中,或者特定的 SQL 关键字是否触发数据库错误。
模块:CORS:检查 Access-Control-Allow-Origin header 是否设置为 * 或是否不当反映了 Origin header。
输出:“在 'productId' 参数中检测到潜在的 SQL 注入。发现 CORS 配置错误。”
# PatzRecon 架构
该项目分为主编排器和独立的漏洞模块。这遵循了策略模式和插件架构。
目录结构: ``` PatzRecon/ ├── core/ │ ├── __init__.py │ ├── engine.py # Main orchestrator │ ├── http_client.py # Async HTTP handler │ ├── cache.py # SQLite deduplication │ ├── matcher.py # Fuzzy detection logic │ └── reporter.py # Output formatting ├── modules/ # 31 vulnerability modules │ ├── sqli/ │ ├── xss/ │ ├── csrf/ │ ├── cors/ │ ├── idor/ │ └── ... (31 topics) ├── payloads/ # YAML payload database │ ├── sqli.yaml │ ├── xss.yaml │ └── ... ├── utils/ │ ├── lab_parser.py # PortSwigger URL parser │ ├── auth_handler.py # Session management │ └── validators.py # Input validation ├── reports/ # Output directory ├── patzrecon.py # CLI entry point └── requirements.txt ``` ## 安装指南
步骤 1:前置条件 ``` # 需要 Python 3.8+ python3 --version # 如有需要安装 pip sudo apt-get install python3-pip # Debian/Ubuntu brew install python3 # macOS ```
步骤 2:安装 PatzRecon ``` # Clone 或解压 archive cd PatzRecon # 创建 virtual environment(推荐) python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt ```
步骤 3:验证安装 ``` python patzrecon.py --help ```
步骤 4:配置(可选)
在 PatzRecon 目录中创建 config.yaml: ``` max_concurrent: 10 timeout: 30 rate_limit_delay: [1, 3] user_agent: "PatzRecon/1.0" min_confidence: low ``` ## 用法示例
初学者用法 ``` # Lab 的基础扫描 python patzrecon.py -u "https://abc123.web-security-academy.net" # 带 session 的扫描(已登录测试) python patzrecon.py -u "https://target.com" --cookie "session=xyz789" # 输出到文件 python patzrecon.py -u "https://target.com" -o results.json --format json ```
专业用法 ``` # BSCP 考试模式 - 所有相关模块 python patzrecon.py -u "https://exam-id.web-security-academy.net" \ --bscp-mode \ --proxy http://127.0.0.1:8080 \ -o bscp_report.html \ --format html \ -v # 带认证的特定模块 python patzRecon.py -u "https://app.com/admin" \ -m sqli,idor,access_control,jwt \ --auth-header "Bearer eyJ0eXAiOiJKV1Qi..." \ --cookie "admin=true; session=abc" \ --scope "https://app.com/api,https://app.com/admin" \ -o findings.json # HTB/CTF 模式 python patzrecon.py -u "http://10.10.10.10" \ -m file_upload,lfi,ssti,cmd_injection \ --threads 20 \ --timeout 60 \ -o htb_results.json ```
主流程工作原理 ``` 1. CLI Parsing ↓ 2. Lab URL Analysis (detect PortSwigger patterns) ↓ 3. Target Configuration (cookies, auth, scope) ↓ 4. Engine Initialization ├── Load async session ├── Initialize SQLite cache └── Dynamically load 31 modules ↓ 5. Module Execution (async with rate limiting) ├── Each module probes independently ├── Confidence scoring per finding └── Deduplication via hash caching ↓ 6. Result Aggregation ↓ 7. Report Generation (JSON/CSV/HTML) ```
实验室集成示例: ``` # BSCP 考试工作流 target_url = "https://0a7b00xx.yy" engine = PatzReconEngine() await engine.initialize() # 从 URL 自动检测 lab 类型 lab = PortSwiggerLabParser().parse(target_url) # 返回: {'lab_id': '0a7b00xx', 'lab_type': 'sqli_union', ...'} # BSCP 模式根据考试大纲优化模块顺序 findings = await engine.scan(target, selected_modules=bscp_priority_modules) # 输出映射到 PortSwigger 分类 { "vulnerability": "SQL Injection (Union-based)", "portswigger_topic": "SQL injection UNION attacks", "tryhackme_module": "SQL Injection" } ``` ## 防止误报
PatzRecon 通过以下方式消除误报:
1. 多重确认:需要多个指标
2. 上下文感知:验证 HTML/JS 上下文
3. 响应分析:差异对比
4. 置信度阈值设定:忽略低置信度结果
5. 模式验证:具有严格边界的正则表达式 ## Kali Linux 安装指南
方法 1:直接安装(推荐) ``` # 步骤 1:更新系统包 sudo apt update && sudo apt upgrade -y # 步骤 2:安装系统依赖 sudo apt install -y \ python3 \ python3-pip \ python3-venv \ python3-dev \ git \ libssl-dev \ libffi-dev \ build-essential # 步骤 3:创建安装目录 sudo mkdir -p /opt/patzrecon sudo chown $(whoami):$(whoami) /opt/patzrecon cd /opt/patzrecon # 步骤 4:Clone repository(或解压 archive) # git clone https://github.com/haylipatz/patzrecon.git . # 或者如果你有 archive: # tar -xzf patzrecon.tar.gz -C /opt/patzrecon # 步骤 5:创建 Python virtual environment python3 -m venv venv # 步骤 6:激活 virtual environment source venv/bin/activate # 步骤 7:升级 pip 并安装依赖 pip install --upgrade pip wheel pip install -r requirements.txt # 步骤 8:设置为全局可执行 chmod +x patzrecon.py sudo ln -sf /opt/patzrecon/patzrecon.py /usr/local/bin/patzrecon # 步骤 9:验证安装 patzrecon --help ```
方法 2:特定于 Kali 的软件包安装 ``` # 安装 Kali 预打包的 Python 工具 sudo apt install -y \ python3-aiohttp \ python3-bs4 \ python3-yaml \ python3-colorama \ python3-tqdm # 然后通过 pip 安装剩余依赖 pip install fuzzywuzzy python-Levenshtein ```
方法 3:Docker 安装(可选)
创建 Dockerfile ``` FROM kalilinux/kali-rolling # 安装依赖 RUN apt update && apt install -y \ python3 \ python3-pip \ python3-venv \ git \ && rm -rf /var/lib/apt/lists/* # 设置工作目录 WORKDIR /app # 复制源码 COPY . /app/ # 安装 Python 依赖 RUN python3 -m venv venv && \ . venv/bin/activate && \ pip install --upgrade pip && \ pip install -r requirements.txt # Entry point ENTRYPOINT ["venv/bin/python", "patzrecon.py"] ```
构建并运行: ``` # Build image sudo docker build -t patzrecon . # Run(交互模式) sudo docker run -it --rm \ --network host \ -v $(pwd)/reports:/app/reports \ patzrecon -u https://target.com # 通过 Burp proxy 运行 sudo docker run -it --rm \ --network host \ -e HTTP_PROXY=http://127.0.0.1:8080 \ patzrecon -u https://target.com --proxy http://127.0.0.1:8080 ```
方法 4:快速安装脚本
另存为 install_kali.sh ``` #!/bin/bash # PatzRecon Kali Linux 安装程序 set -e echo "[*] Installing PatzRecon on Kali Linux..." # 颜色 RED='\033[0;31m' GREEN='\033[0;32m' NC='\033[0m' # 检查是否以 root 运行 if [ "$EUID" -eq 0 ]; then echo -e "${RED}[!] Do not run as root${NC}" exit 1 fi # 更新系统 echo "[*] Updating package lists..." sudo apt update # 安装依赖 echo "[*] Installing system dependencies..." sudo apt install -y python3 python3-pip python3-venv git # 创建目录 INSTALL_DIR="$HOME/tools/patzrecon" echo "[*] Creating directory: $INSTALL_DIR" mkdir -p "$INSTALL_DIR" cd "$INSTALL_DIR" # 创建 virtual environment echo "[*] Setting up Python virtual environment..." python3 -m venv venv source venv/bin/activate # 如果不存在则创建 requirements.txt cat > requirements.txt << 'EOF' aiohttp>=3.8.0 beautifulsoup4>=4.11.0 pyyaml>=6.0 colorama>=0.4.0 tqdm>=4.64.0 requests>=2.28.0 fuzzywuzzy>=0.18.0 python-Levenshtein>=0.12.0 EOF # 安装 Python 包 echo "[*] Installing Python dependencies..." pip install --upgrade pip pip install -r requirements.txt # 创建主脚本(用于测试的最小版本) cat > patzrecon.py << 'EOF' #!/usr/bin/env python3 """PatzRecon - Placeholder until full source download""" print("PatzRecon installed successfully!") print("Replace this with actual source files.") EOF chmod +x patzrecon.py # 添加到 PATH echo "[*] Adding to PATH..." if ! grep -q "patzrecon" "$HOME/.zshrc"; then echo "export PATH=\"$INSTALL_DIR:\$PATH\"" >> "$HOME/.zshrc" echo "alias patzrecon='cd $INSTALL_DIR && source venv/bin/activate && python patzrecon.py'" >> "$HOME/.zshrc" fi echo -e "${GREEN}[+] Installation complete!${NC}" echo "[*] Usage: patzrecon -u"
echo "[*] Reload terminal or run: source ~/.zshrc"
```
运行 ``` chmod +x install_kali.sh ./install_kali.sh ```
依赖文件 (requirements.txt) ``` # Core async HTTP aiohttp>=3.8.4 aiofiles>=23.0.0 # HTML 解析 beautifulsoup4>=4.12.0 lxml>=4.9.0 # 数据处理 pyyaml>=6.0 # Async 工具 asyncio-throttle>=1.0.2 # Fuzzy 匹配(用于消除 FP) fuzzywuzzy>=0.18.0 python-Levenshtein>=0.12.0 # 进度条 tqdm>=4.65.0 # 输出格式化 colorama>=0.4.6 tabulate>=0.9.0 # 可选:用于 WSL 上的 Windows 兼容性 dnspython>=2.3.0 ``` ## Kali Linux 集成
Burp Suite Pro 集成 ``` # 配置 PatzRecon 以使用 Burp patzrecon -u https://target.com \ --proxy http://127.0.0.1:8080 \ -o /root/patzrecon_results.json # 或设置环境变量 export HTTP_PROXY=http://127.0.0.1:8080 export HTTPS_PROXY=http://127.0.0.1:8080 patzrecon -u https://target.com ```
添加到 Kali 菜单
创建 ``` /usr/share/applications/patzrecon.desktop ```
ini ``` [Desktop Entry] Name=PatzRecon Comment=Web Security Academy Reconnaissance Tool Exec=gnome-terminal -- /opt/patzrecon/venv/bin/python /opt/patzrecon/patzrecon.py Type=Application Terminal=true Icon=kali-web Categories=03-webapp-analysis; ```
刷新菜单: ``` sudo update-desktop-database ```
验证测试 ``` # 测试基本功能 patzrecon --help # 在 PortSwigger 公开 lab 上测试(故意存在漏洞) patzrecon -u "https://portswigger.net" -v # 检查所有模块是否加载 python3 -c " from core.engine import PatzReconEngine import asyncio async def test(): engine = PatzReconEngine() await engine.initialize() print(f'Loaded {len(engine.modules)} modules') print('Modules:', list(engine.modules.keys())) await engine.close() asyncio.run(test()) " # 从 virtual environment 测试 cd /opt/patzrecon source venv/bin/activate python patzrecon.py -u https://httpbin.org --format json ```
从 Kali 卸载 ``` # 移除安装 sudo rm -rf /opt/patzrecon sudo rm -f /usr/local/bin/patzrecon sudo rm -f /usr/share/applications/patzrecon.desktop # 从 PATH 中移除(编辑 ~/.zshrc 或 ~/.bashrc) sed -i '/patzrecon/d' ~/.zshrc sed -i '/patzrecon/d' ~/.bashrc ```
快速开始(安装后) ``` # 1. 打开终端 # 2. 导航到工具 cd /opt/patzrecon # 3. 激活环境 source venv/bin/activate # 4. 对 target 运行 python patzrecon.py -u "https://0a7b001xxxxx.web-security-academy.net" --bscp-mode # 5. 或使用全局命令(如果创建了 symlink) patzrecon -u "https://target.com" -o /root/reports/findings.json ``` 该工具现在已准备好在您的 Kali Linux 渗透测试环境中与 Burp Suite、OWASP ZAP 和其他标准工具一起使用。
## 其他工具的不足 → PatzRecon 的改进 一个全面、模块化的侦察工具 PatzRecon 解决了其他工具的局限性,并对全部 31 个 PortSwigger Web Security Academy 主题提供了无误报的强大检测能力。 | 其他工具 | PatzRecon 解决方案 | |-----------------|-------------------| | 无 rate limiting | 带有抖动的自适应限流 | | 缺少 async/并发 | 基于 Asyncio 的连接池 | | 无误报过滤 | 模糊匹配 + 置信度评分 | | 硬编码 payloads | 外部基于 YAML 的 payload 数据库 | | 无 proxy 支持 | Burp/OWASP ZAP proxy 集成 | | 缺少 lab ID 解析 | 自动 URL 模式识别 | | 单线程 | ThreadPoolExecutor + async 混合 | | 无身份验证处理 | Session cookie/JWT 支持 | | 输出格式不佳 | JSON/CSV/HTML 报告 | | 无缓存机制 | 用于防止重复的 SQLite 缓存 |
PatzRecon 是一个基于 Python 的模块化侦察工具,旨在帮助安全从业人员在受控且已授权的环境中识别潜在的漏洞类别。它不是一个漏洞利用框架;它通过执行结构化的探测,来减少渗透测试任务或 CTF 挑战期间手动枚举所花费的时间。 # 核心理念: 授权优先:该工具需要明确定义目标(URL/IP),并假定用户拥有测试该目标的合法权限。
无误报(尽最大努力):探测的设计尽可能做到确定性(例如,检查特定的 headers、status codes 或已知的文件路径),而不是依赖经常导致误报的启发式猜测。
模块化:31 个 PortSwigger Web Security Academy 主题中的每一个都由一个独立的模块处理,便于轻松更新和维护。 # 工作原理 PatzRecon 作为一个“实验室范围的侦察助手”运行。它不是盲目地攻击目标,而是系统地对应用程序的结构和行为进行指纹识别。
1. 输入:用户提供目标 URL(例如 https://example.net/)以及可选的凭据或 session cookies。
2. 编排:主引擎(PatzRecon.py)加载全部 31 个漏洞模块。
3. 探测:每个模块执行一系列非破坏性的检查:
被动分析:检查 HTML 源代码、HTTP headers 和 JavaScript 文件以寻找线索(例如,X-Powered-By、CSRF tokens、CORS headers)。
主动指纹识别:发送特定且安全的请求来检测行为(例如,发送格式错误的 JSON body 以检查反序列化错误,或请求 /admin 以检查访问控制响应)。
4. 报告:将结果汇总成结构化报告,根据观察到的指标指出可能存在哪些漏洞类别。
示例场景:
目标:一个 PortSwigger 实验室 ID acme123。
操作:PatzRecon 向主页发送一个请求。
模块:SQL 注入:检查输入参数是否反映在错误消息中,或者特定的 SQL 关键字是否触发数据库错误。
模块:CORS:检查 Access-Control-Allow-Origin header 是否设置为 * 或是否不当反映了 Origin header。
输出:“在 'productId' 参数中检测到潜在的 SQL 注入。发现 CORS 配置错误。”
# PatzRecon 架构
该项目分为主编排器和独立的漏洞模块。这遵循了策略模式和插件架构。
目录结构: ``` PatzRecon/ ├── core/ │ ├── __init__.py │ ├── engine.py # Main orchestrator │ ├── http_client.py # Async HTTP handler │ ├── cache.py # SQLite deduplication │ ├── matcher.py # Fuzzy detection logic │ └── reporter.py # Output formatting ├── modules/ # 31 vulnerability modules │ ├── sqli/ │ ├── xss/ │ ├── csrf/ │ ├── cors/ │ ├── idor/ │ └── ... (31 topics) ├── payloads/ # YAML payload database │ ├── sqli.yaml │ ├── xss.yaml │ └── ... ├── utils/ │ ├── lab_parser.py # PortSwigger URL parser │ ├── auth_handler.py # Session management │ └── validators.py # Input validation ├── reports/ # Output directory ├── patzrecon.py # CLI entry point └── requirements.txt ``` ## 安装指南
步骤 1:前置条件 ``` # 需要 Python 3.8+ python3 --version # 如有需要安装 pip sudo apt-get install python3-pip # Debian/Ubuntu brew install python3 # macOS ```
步骤 2:安装 PatzRecon ``` # Clone 或解压 archive cd PatzRecon # 创建 virtual environment(推荐) python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt ```
步骤 3:验证安装 ``` python patzrecon.py --help ```
步骤 4:配置(可选)
在 PatzRecon 目录中创建 config.yaml: ``` max_concurrent: 10 timeout: 30 rate_limit_delay: [1, 3] user_agent: "PatzRecon/1.0" min_confidence: low ``` ## 用法示例
初学者用法 ``` # Lab 的基础扫描 python patzrecon.py -u "https://abc123.web-security-academy.net" # 带 session 的扫描(已登录测试) python patzrecon.py -u "https://target.com" --cookie "session=xyz789" # 输出到文件 python patzrecon.py -u "https://target.com" -o results.json --format json ```
专业用法 ``` # BSCP 考试模式 - 所有相关模块 python patzrecon.py -u "https://exam-id.web-security-academy.net" \ --bscp-mode \ --proxy http://127.0.0.1:8080 \ -o bscp_report.html \ --format html \ -v # 带认证的特定模块 python patzRecon.py -u "https://app.com/admin" \ -m sqli,idor,access_control,jwt \ --auth-header "Bearer eyJ0eXAiOiJKV1Qi..." \ --cookie "admin=true; session=abc" \ --scope "https://app.com/api,https://app.com/admin" \ -o findings.json # HTB/CTF 模式 python patzrecon.py -u "http://10.10.10.10" \ -m file_upload,lfi,ssti,cmd_injection \ --threads 20 \ --timeout 60 \ -o htb_results.json ```
主流程工作原理 ``` 1. CLI Parsing ↓ 2. Lab URL Analysis (detect PortSwigger patterns) ↓ 3. Target Configuration (cookies, auth, scope) ↓ 4. Engine Initialization ├── Load async session ├── Initialize SQLite cache └── Dynamically load 31 modules ↓ 5. Module Execution (async with rate limiting) ├── Each module probes independently ├── Confidence scoring per finding └── Deduplication via hash caching ↓ 6. Result Aggregation ↓ 7. Report Generation (JSON/CSV/HTML) ```
实验室集成示例: ``` # BSCP 考试工作流 target_url = "https://0a7b00xx.yy" engine = PatzReconEngine() await engine.initialize() # 从 URL 自动检测 lab 类型 lab = PortSwiggerLabParser().parse(target_url) # 返回: {'lab_id': '0a7b00xx', 'lab_type': 'sqli_union', ...'} # BSCP 模式根据考试大纲优化模块顺序 findings = await engine.scan(target, selected_modules=bscp_priority_modules) # 输出映射到 PortSwigger 分类 { "vulnerability": "SQL Injection (Union-based)", "portswigger_topic": "SQL injection UNION attacks", "tryhackme_module": "SQL Injection" } ``` ## 防止误报
PatzRecon 通过以下方式消除误报:
1. 多重确认:需要多个指标
2. 上下文感知:验证 HTML/JS 上下文
3. 响应分析:差异对比
4. 置信度阈值设定:忽略低置信度结果
5. 模式验证:具有严格边界的正则表达式 ## Kali Linux 安装指南
方法 1:直接安装(推荐) ``` # 步骤 1:更新系统包 sudo apt update && sudo apt upgrade -y # 步骤 2:安装系统依赖 sudo apt install -y \ python3 \ python3-pip \ python3-venv \ python3-dev \ git \ libssl-dev \ libffi-dev \ build-essential # 步骤 3:创建安装目录 sudo mkdir -p /opt/patzrecon sudo chown $(whoami):$(whoami) /opt/patzrecon cd /opt/patzrecon # 步骤 4:Clone repository(或解压 archive) # git clone https://github.com/haylipatz/patzrecon.git . # 或者如果你有 archive: # tar -xzf patzrecon.tar.gz -C /opt/patzrecon # 步骤 5:创建 Python virtual environment python3 -m venv venv # 步骤 6:激活 virtual environment source venv/bin/activate # 步骤 7:升级 pip 并安装依赖 pip install --upgrade pip wheel pip install -r requirements.txt # 步骤 8:设置为全局可执行 chmod +x patzrecon.py sudo ln -sf /opt/patzrecon/patzrecon.py /usr/local/bin/patzrecon # 步骤 9:验证安装 patzrecon --help ```
方法 2:特定于 Kali 的软件包安装 ``` # 安装 Kali 预打包的 Python 工具 sudo apt install -y \ python3-aiohttp \ python3-bs4 \ python3-yaml \ python3-colorama \ python3-tqdm # 然后通过 pip 安装剩余依赖 pip install fuzzywuzzy python-Levenshtein ```
方法 3:Docker 安装(可选)
创建 Dockerfile ``` FROM kalilinux/kali-rolling # 安装依赖 RUN apt update && apt install -y \ python3 \ python3-pip \ python3-venv \ git \ && rm -rf /var/lib/apt/lists/* # 设置工作目录 WORKDIR /app # 复制源码 COPY . /app/ # 安装 Python 依赖 RUN python3 -m venv venv && \ . venv/bin/activate && \ pip install --upgrade pip && \ pip install -r requirements.txt # Entry point ENTRYPOINT ["venv/bin/python", "patzrecon.py"] ```
构建并运行: ``` # Build image sudo docker build -t patzrecon . # Run(交互模式) sudo docker run -it --rm \ --network host \ -v $(pwd)/reports:/app/reports \ patzrecon -u https://target.com # 通过 Burp proxy 运行 sudo docker run -it --rm \ --network host \ -e HTTP_PROXY=http://127.0.0.1:8080 \ patzrecon -u https://target.com --proxy http://127.0.0.1:8080 ```
方法 4:快速安装脚本
另存为 install_kali.sh ``` #!/bin/bash # PatzRecon Kali Linux 安装程序 set -e echo "[*] Installing PatzRecon on Kali Linux..." # 颜色 RED='\033[0;31m' GREEN='\033[0;32m' NC='\033[0m' # 检查是否以 root 运行 if [ "$EUID" -eq 0 ]; then echo -e "${RED}[!] Do not run as root${NC}" exit 1 fi # 更新系统 echo "[*] Updating package lists..." sudo apt update # 安装依赖 echo "[*] Installing system dependencies..." sudo apt install -y python3 python3-pip python3-venv git # 创建目录 INSTALL_DIR="$HOME/tools/patzrecon" echo "[*] Creating directory: $INSTALL_DIR" mkdir -p "$INSTALL_DIR" cd "$INSTALL_DIR" # 创建 virtual environment echo "[*] Setting up Python virtual environment..." python3 -m venv venv source venv/bin/activate # 如果不存在则创建 requirements.txt cat > requirements.txt << 'EOF' aiohttp>=3.8.0 beautifulsoup4>=4.11.0 pyyaml>=6.0 colorama>=0.4.0 tqdm>=4.64.0 requests>=2.28.0 fuzzywuzzy>=0.18.0 python-Levenshtein>=0.12.0 EOF # 安装 Python 包 echo "[*] Installing Python dependencies..." pip install --upgrade pip pip install -r requirements.txt # 创建主脚本(用于测试的最小版本) cat > patzrecon.py << 'EOF' #!/usr/bin/env python3 """PatzRecon - Placeholder until full source download""" print("PatzRecon installed successfully!") print("Replace this with actual source files.") EOF chmod +x patzrecon.py # 添加到 PATH echo "[*] Adding to PATH..." if ! grep -q "patzrecon" "$HOME/.zshrc"; then echo "export PATH=\"$INSTALL_DIR:\$PATH\"" >> "$HOME/.zshrc" echo "alias patzrecon='cd $INSTALL_DIR && source venv/bin/activate && python patzrecon.py'" >> "$HOME/.zshrc" fi echo -e "${GREEN}[+] Installation complete!${NC}" echo "[*] Usage: patzrecon -u
运行 ``` chmod +x install_kali.sh ./install_kali.sh ```
依赖文件 (requirements.txt) ``` # Core async HTTP aiohttp>=3.8.4 aiofiles>=23.0.0 # HTML 解析 beautifulsoup4>=4.12.0 lxml>=4.9.0 # 数据处理 pyyaml>=6.0 # Async 工具 asyncio-throttle>=1.0.2 # Fuzzy 匹配(用于消除 FP) fuzzywuzzy>=0.18.0 python-Levenshtein>=0.12.0 # 进度条 tqdm>=4.65.0 # 输出格式化 colorama>=0.4.6 tabulate>=0.9.0 # 可选:用于 WSL 上的 Windows 兼容性 dnspython>=2.3.0 ``` ## Kali Linux 集成
Burp Suite Pro 集成 ``` # 配置 PatzRecon 以使用 Burp patzrecon -u https://target.com \ --proxy http://127.0.0.1:8080 \ -o /root/patzrecon_results.json # 或设置环境变量 export HTTP_PROXY=http://127.0.0.1:8080 export HTTPS_PROXY=http://127.0.0.1:8080 patzrecon -u https://target.com ```
添加到 Kali 菜单
创建 ``` /usr/share/applications/patzrecon.desktop ```
ini ``` [Desktop Entry] Name=PatzRecon Comment=Web Security Academy Reconnaissance Tool Exec=gnome-terminal -- /opt/patzrecon/venv/bin/python /opt/patzrecon/patzrecon.py Type=Application Terminal=true Icon=kali-web Categories=03-webapp-analysis; ```
刷新菜单: ``` sudo update-desktop-database ```
验证测试 ``` # 测试基本功能 patzrecon --help # 在 PortSwigger 公开 lab 上测试(故意存在漏洞) patzrecon -u "https://portswigger.net" -v # 检查所有模块是否加载 python3 -c " from core.engine import PatzReconEngine import asyncio async def test(): engine = PatzReconEngine() await engine.initialize() print(f'Loaded {len(engine.modules)} modules') print('Modules:', list(engine.modules.keys())) await engine.close() asyncio.run(test()) " # 从 virtual environment 测试 cd /opt/patzrecon source venv/bin/activate python patzrecon.py -u https://httpbin.org --format json ```
从 Kali 卸载 ``` # 移除安装 sudo rm -rf /opt/patzrecon sudo rm -f /usr/local/bin/patzrecon sudo rm -f /usr/share/applications/patzrecon.desktop # 从 PATH 中移除(编辑 ~/.zshrc 或 ~/.bashrc) sed -i '/patzrecon/d' ~/.zshrc sed -i '/patzrecon/d' ~/.bashrc ```
快速开始(安装后) ``` # 1. 打开终端 # 2. 导航到工具 cd /opt/patzrecon # 3. 激活环境 source venv/bin/activate # 4. 对 target 运行 python patzrecon.py -u "https://0a7b001xxxxx.web-security-academy.net" --bscp-mode # 5. 或使用全局命令(如果创建了 symlink) patzrecon -u "https://target.com" -o /root/reports/findings.json ``` 该工具现在已准备好在您的 Kali Linux 渗透测试环境中与 Burp Suite、OWASP ZAP 和其他标准工具一起使用。
## 其他工具的不足 → PatzRecon 的改进 一个全面、模块化的侦察工具 PatzRecon 解决了其他工具的局限性,并对全部 31 个 PortSwigger Web Security Academy 主题提供了无误报的强大检测能力。 | 其他工具 | PatzRecon 解决方案 | |-----------------|-------------------| | 无 rate limiting | 带有抖动的自适应限流 | | 缺少 async/并发 | 基于 Asyncio 的连接池 | | 无误报过滤 | 模糊匹配 + 置信度评分 | | 硬编码 payloads | 外部基于 YAML 的 payload 数据库 | | 无 proxy 支持 | Burp/OWASP ZAP proxy 集成 | | 缺少 lab ID 解析 | 自动 URL 模式识别 | | 单线程 | ThreadPoolExecutor + async 混合 | | 无身份验证处理 | Session cookie/JWT 支持 | | 输出格式不佳 | JSON/CSV/HTML 报告 | | 无缓存机制 | 用于防止重复的 SQLite 缓存 |
标签:Python, 侦察扫描, 实时处理, 密码管理, 无后门, 请求拦截, 逆向工具