enderphan94/pikascan
GitHub: enderphan94/pikascan
一款模块化 Web 应用安全扫描器,整合自研检测模块与 16 款主流安全工具,覆盖从子域名枚举到漏洞发现的完整攻击面。
Stars: 0 | Forks: 0
# pikascan — Web 应用安全扫描器
```
╔════════════════════════════════════════════════════════════╗
║ pikascan — Web App Security Scanner ║
║ author: Ender Phan ║
╚════════════════════════════════════════════════════════════╝
```
一款为渗透测试人员和漏洞赏金猎人打造的模块化、通用型 Web 应用安全扫描器。pikascan 结合了手工编写的 Python 检测模块与行业标准的第三方工具(nuclei, dalfox, retire.js, katana, nikto, nmap 等),助您对任何 Web 目标的完整攻击面进行深度覆盖。
## 目的
pikascan 旨在自动化 Web 应用渗透测试中的侦查和漏洞发现阶段。其覆盖范围包括:
- 子域名枚举和接管检测
- JavaScript 文件分析(密钥、XSS 注入点、DOM 漏洞)
- 安全头部和 Cookie 属性审计
- 认证和会话安全测试
- API 安全和授权绕过测试
- 前端/HTML DOM 漏洞分析
- 集成 16+ 款外部安全工具以进行高级扫描
该工具生成结构化的 JSON 和 Markdown 报告,适合人工审查或 AI 辅助分析。
## 内置模块
| 模块 | 检查内容 |
|---|---|
| **subdomains** | CT 日志枚举、DNS 暴力破解(80 词列表)、CNAME 悬空 DNS、子域名接管指纹(30+ 服务:GitHub Pages, S3, Heroku, Netlify, Azure, GCS, …) |
| **js** | 下载并分析所有 JavaScript 文件 — 40+ 模式覆盖 API 密钥、JWT 密钥、云凭证(AWS, Stripe, Twilio, SendGrid, Slack, Firebase, Sentry, …)、DOM XSS 注入点(innerHTML, eval, postMessage, 原型污染, JSONP)以及配置泄露 |
| **headers** | CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, COOP, CORP; CORS 通配符+凭证, X-Powered-By/Server 泄露; cookie Secure/HttpOnly/SameSite 标记 |
| **auth** | 账户枚举(时间/消息差异)、限速缺失、会话令牌强度、CSRF 令牌存在性、邮箱更改双重确认检查、隐藏登录端点发现 |
| **api** | 对 19+ 个受保护路径的未认证访问、CORS 源绕过(evil.com / null / 子域名)、管理面板暴露(Strapi, Kibana, Grafana, …)、调试端点泄露(.env, .git, actuator, Swagger, GraphQL, phpinfo)、异常类泄露 |
| **frontend** | 跨域脚本/样式的 SRI、反向标签劫持(`target=_blank` 缺少 `rel=noopener`)、iframe 沙箱、无 CSRF 的表单、HTTP 表单 action、混合内容、内联事件处理器、冗长的 HTML 注释、base 标签注入风险、敏感输入上的自动完成、模板注入标记、点击劫持、CSP 质量 |
## 外部工具(通过 `--tools` 或 `--all` 启用)
pikascan 会自动检测已安装的工具,并静默跳过任何缺失的工具。
### 第 1 层 — 核心
| 工具 | 用途 |
|---|---|
| [nuclei](https://github.com/projectdiscovery/nuclei) | 基于模板的漏洞扫描器(CVE, 配置错误, 默认凭证, XSS, SQLi, SSRF, LFI, RCE) |
| [dalfox](https://github.com/hahwul/dalfox) | 深度 DOM-XSS 和反射型 XSS 扫描器 |
| [retire.js](https://github.com/retirejs/retire.js) | 检测具有已知 CVE 的易受攻击 JavaScript 库 |
| [katana](https://github.com/projectdiscovery/katana) | 快速的 JS 感知 Web 爬虫 — 为 dalfox/nuclei 提供 URL 列表 |
| [gau](https://github.com/lc/gau) | 从 Wayback Machine 和 URLScan 获取历史 URL |
| [httpx](https://github.com/projectdiscovery/httpx) | 快速 HTTP 探测器,具备技术指纹识别功能 |
| [subfinder](https://github.com/projectdiscovery/subfinder) | 被动子域名枚举 |
### 第 2 层 — 侦查与基础设施
| 工具 | 用途 |
|---|---|
| [amass](https://github.com/owasp-amass/amass) | 基于 OSINT 的子域名枚举 |
| [wafw00f](https://github.com/EnableSecurity/wafw00f) | WAF 检测和指纹识别 |
| [nikto](https://github.com/sullo/nikto) | Web 服务器配置错误扫描器 |
| [whatweb](https://github.com/urbanadventurer/WhatWeb) | 技术指纹识别器(CMS, 框架, 版本) |
| [nmap](https://nmap.org/) | 端口和服务扫描器 — 标记暴露的 DB/缓存端口 |
| [testssl.sh](https://github.com/drwetter/testssl.sh) | TLS/SSL 配置和密码分析 |
### 第 3 层 — 可选扩展
| 工具 | 用途 |
|---|---|
| [dnsx](https://github.com/projectdiscovery/dnsx) | DNS 工具包,用于通配符检测和暴力破解 |
| [subjack](https://github.com/haccer/subjack) | 子域名接管确认 |
| [ffuf](https://github.com/ffuf/ffuf) | 目录和端点发现(使用 SecLists 字典) |
| [trufflehog](https://github.com/trufflesecurity/trufflehog) | JS 和 Git 历史中的实时密钥检测 |
| [wapiti](https://github.com/wapiti-scanner/wapiti) | 功能齐全的 Web 漏洞扫描器 |
## 安装
### 快速安装(推荐)
```
git clone https://github.com/enderphan/pikascan.git
cd pikascan
bash install.sh
```
`install.sh` 将会:
1. 检测您的操作系统
2. 创建一个 Python **虚拟环境** (`venv/`) — 避免系统 pip 冲突
3. 将 Python 依赖项安装到 venv 中
4. 安装 Go 运行时(如果缺失)
5. 安装 Node.js / npm(如果缺失)
6. 通过 `go install`, `brew`, `apt`, 或 `npm` 安装所有 16 个外部工具
7. 下载用于 ffuf 的 SecLists 字典
8. 更新 nuclei 模板
9. 生成一个自动激活 venv 的 `run.sh` 包装脚本
### 手动安装(仅 Python)
```
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### 系统要求
- Python 3.9+
- Go 1.20+(用于基于 Go 的工具)
- Node.js + npm(用于 retire.js)
- 带有 Homebrew 的 macOS **或者** Debian/Kali Linux
## 用法
### 使用包装脚本(运行 `install.sh` 后)
```
# 运行所有内容
bash run.sh example.com --all
# Lite 扫描(仅内置模块)
bash run.sh example.com --lite
# 特定模块
bash run.sh example.com --frontend --headers
# 使用所有工具进行认证扫描
bash run.sh example.com -u user@example.com -p Password1 --all
```
### 手动激活 venv
```
source venv/bin/activate
python pikascan.py example.com --all
```
### 扫描模式
| 标志 | 描述 |
|---|---|
| `--all` | 运行**所有内容** — 所有内置模块 + 所有外部工具 |
| `--lite` | 仅运行所有内置模块,不运行外部工具(默认) |
| *(无)* | 与 `--lite` 相同 |
| `--tools` | 在选定的内置模块之上增加外部工具 |
### 单个模块标志
组合以下任意标志以仅运行特定检查:
```
python pikascan.py example.com --subdomains --js
python pikascan.py example.com --headers --frontend
python pikascan.py example.com --auth --api
```
### 凭证与会话选项
```
# 登录凭据(启用 Rate-limit、枚举和会话检查)
python pikascan.py example.com -u user@example.com -p Password123
# 现有会话 Token
python pikascan.py example.com --session
# HTTP Basic Auth
python pikascan.py example.com --basic-auth admin:password
# 自定义登录端点
python pikascan.py example.com -u user -p pass --login-url /auth/login
```
### 输出
```
# 将报告保存到自定义目录
python pikascan.py example.com --all -o ./reports/example_com
# 跳过文件保存(仅终端输出)
python pikascan.py example.com --lite --no-report
```
报告保存为:
- `scan_results/report_.json` — 用于 AI 分析或自动化的结构化 JSON
- `scan_results/report_.md` — 带目录的人类可读 Markdown
## 项目结构
```
pikascan/
├── pikascan.py # Main entry point / CLI
├── run.sh # Venv wrapper (generated by install.sh)
├── install.sh # Full installer for all tools
├── requirements.txt # Python dependencies
├── modules/
│ ├── __init__.py # Finding dataclass (shared by all modules)
│ ├── subdomains.py # Subdomain enumeration + takeover detection
│ ├── js_analyzer.py # JavaScript secret and DOM sink analysis
│ ├── headers.py # Security headers and cookie auditing
│ ├── auth.py # Auth, session, and rate-limit testing
│ ├── api.py # API authorization bypass and CORS testing
│ ├── frontend.py # HTML/DOM frontend vulnerability checks
│ ├── tool_runner.py # External tool integration (16 tools)
│ └── reporter.py # Terminal output + JSON/Markdown reports
└── scan_results/ # Generated reports (created at runtime)
```
## 输出示例
```
╔════════════════════════════════════════════════════════════╗
║ pikascan — Web App Security Scanner ║
║ author: Ender Phan ║
╚════════════════════════════════════════════════════════════╝
Target : https://www.example.com (example.com)
Modules: subdomains, js, headers, auth, api, frontend, tools
Started: 2025-08-10 14:32:01
══ Subdomain Enumeration ══
[+] Found 23 subdomains via crt.sh
[+] 18 resolved and responding
══ Security Findings Summary ══
CRITICAL 2
HIGH 7
MEDIUM 11
LOW 4
INFO 9
```
发现在终端中以颜色区分(红色 → 严重,橙色 → 高危,黄色 → 中危),并针对严重和高危问题打印包含 POC 证据和修复建议的完整详情。
## 发现严重级别
| 严重性 | 含义 |
|---|---|
| **CRITICAL** | 即时利用风险 — 密钥泄露、S3/Azure 子域名接管、未认证的管理员访问 |
| **HIGH** | 重大安全影响 — XSS、登录页缺少 HSTS、通配符 CORS、原型污染注入点 |
| **MEDIUM** | 特定条件下可利用 — 缺少 CSP、SameSite=None 的 cookies、开放的调试端点 |
| **LOW** | 纵深防御改进 — 冗长的头部、缺少 Referrer-Policy |
| **INFO** | 信息性质 / 技术指纹识别 — 无直接影响 |
## 免责声明
## 许可证
MIT License
Copyright (c) 2025 Ender Phan
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
标签:API安全测试, Bug Bounty, Cookie属性检测, CT日志监控, Dalfox, DNS爆破, DOM XSS, HTTP头部安全, JavaScript安全分析, MITM代理, Nikto, Nmap, Nuclei集成, Python安全工具, Web安全扫描器, 代码生成, 可自定义解析器, 子域名接管, 子域名枚举, 实时处理, 密码管理, 应用安全, 日志审计, 渗透测试工具, 系统安全, 网络安全, 自动化侦察, 虚拟驱动器, 足迹分析, 逆向工具, 鉴权绕过, 隐私保护