LiteshGhute/0tokenPentester

GitHub: LiteshGhute/0tokenPentester

基于本地 Ollama 大模型驱动的零成本渗透测试编排工具,通过六阶段自动化流程覆盖 OWASP Web/API Top 10 漏洞检测并生成 Markdown 报告。

Stars: 3 | Forks: 1

0tokenPentester icon

0tokenPentester

Python 3.10+ Platform LLM Cost Use Status License

OWASP Top 10 Penetration Testing Offensive Security

本地化、LLM 驱动的渗透测试编排工具。输入目标,点击 Start,即可获取 Markdown 报告。完全在**本地 Ollama 模型**上运行,不会 有任何数据离开你的机器。 ## 目录 - [工作原理](#how-it-works) - [前置条件](#prerequisites) - [快速开始](#quick-start) - [功能](#features) - [安装说明](#installation) - [模型选择](#model-choice) - [用法](#usage) - [阶段](#phases) - [范围安全](#scope-safety) - [法律与道德](#legal--ethics) - [贡献](#contributing) - [许可证](#license) ## 工作原理 ``` flowchart TD U["User: target + credentials + model
Web UI /start"] --> SG{"ScopeGuard
is target authorized?"} SG -- No --> R["Refused, no tools run"] SG -- Yes --> O["Orchestrator starts
EngagementContext / Registry / AuthBundle / ProcRegistry"] O --> AL["Best-effort auto-login
if credentials given"] AL --> P1 subgraph Phases["6 phases / 25 tasks (phases run in order, tasks run concurrently within a phase)"] direction TB P1["Plan: LLM tool-selection
or heuristic fallback"] --> P2["Execute tools
nmap / nuclei / sqlmap / pure-Python probes
(every call re-checked against scope)"] P2 --> P3["Triage: heuristic checks
+ LLM finding-extraction"] P3 --> P4["Corroborate
second safe re-probe"] P4 --> P5["Record finding:
SQLite row + .md file, written immediately"] end P5 -.live update.-> LIVE["Web UI: findings visible immediately
while the run is still going"] P2 -.discoveries feed later tasks.-> CTX[("EngagementContext
hosts, urls, tech, endpoints, JWT-forge recipe")] CTX -.-> P1 P5 --> DONE{"All phases done,
or Stopped / crashed"} DONE --> WO["write_outputs()
report.md exec summary via LLM + findings.json + tasktree.json"] WO --> UI["/history page afterward"] ``` 这里没有任何黑盒操作:每一次工具调用在运行前都会进行范围检查, 并且每一个发现都会在被找到的瞬间保存(数据库记录 + `.md` 文件), 而不是在最后批量保存。 ## 前置条件 - macOS(针对 M1 Pro / 16 GB 调优)或 Linux - Python 3.10+ - [Ollama](https://ollama.com),已安装并正在运行 - 可选,用于更深入的主动扫描覆盖:`nmap`、`ffuf`、`gobuster`、`nuclei`、`sqlmap` ## 快速开始 除了 Ollama 本身之外的所有内容(virtualenv、依赖项、`config.yaml`、 默认模型)都会自动处理。 ``` git clone https://github.com/LiteshGhute/0tokenPentester.git cd 0tokenPentester ./start ``` - 首次运行会创建 `.venv`,安装依赖项,复制 `config.example.yaml` 为 `config.yaml`,如果 缺少默认模型则会拉取它。后续运行将跳过上述所有步骤。 - 在 `http://127.0.0.1:8787` 打开 Web UI。 - 在首次正式扫描之前,请编辑 `config.yaml` 中的 `engagement.scope.allow`。它拒绝针对未在此处列出的任何目标运行。 - `./start --port 9000` / `./start --no-browser` 也可以使用。 ## 功能 **核心** - Web UI:一个 Start 按钮,实时进度,最终报告。 - `/scope`:无需编辑 `config.yaml` 即可添加/删除授权目标。 - `/history`:查看、下载或批量删除过去的运行记录。 - 实时显示发现结果,而不是仅在结束时显示。 - 每次运行和发现的 SQLite 历史记录(`runs/pentester.db`)。 - 每个发现的 Markdown 导出(严重程度/CWE/证据/复现/修复)。 - 6 阶段、25 任务的树状结构;使用本地 LLM 进行规划/分流/报告编写。 **Recon** - 子域名枚举:被动(crt.sh)+ 主动 DNS 暴力破解(5,000 词的列表)。 - 子域名接管检测(指向 GitHub Pages/S3/Heroku/Azure 的悬空 CNAME)。 - 暴露的 `.git`/`.env`/`.svn`/`.DS_Store` 检测,通过真实的文件结构进行验证。 - 通过 endoflife.date 检测过时组件。 - 真正内置的字典(SecLists):`common.txt`、`raft-medium-directories.txt`、`subdomains.txt`、`api_paths.txt`。 **漏洞检测** - 注入套件:路径遍历、XXE、盲打命令注入、SSTI、sqlmap。仅限非破坏性 payload。 - XSS:反射型/存储型/DOM,加上在固定 payload 被过滤时的 LLM 自适应绕过机制。 - SSRF,包括专用的云元数据探测(AWS/Azure/GCP)。 - 开放重定向测试(读取 `Location`,从不跟随跳转)。 - 无限制文件上传测试(惰性 payload,从不触发执行)。 - JWT 安全测试(`alg:none`、弱密钥、claim 泄露)。 **认证与业务逻辑** - BOLA/BFLA 链式攻击:可伪造的 JWT 会自动伪造其他身份,无需手动设置。 - 一到两个身份:token/cookie 或尽力而为的自动登录。 - 速率限制、HTTP 动词篡改、CSRF token、IDOR 启发式检测。 - 点击劫持 + CORS 检查(包括 `Origin: null`)。 **自动化与安全** - 主动任务默认自动运行(P1/P2);P0(RCE、BOLA/BFLA)始终需要确认。 - 到处都强制执行范围检查;HTTP 工具是重定向安全的。 - 在称某事被“确证”之前,会进行跨工具的交叉验证。 - 出现新的严重/高危发现时会写入 `ALERT.txt`。 ## 安装说明 ``` git clone https://github.com/LiteshGhute/0tokenPentester.git cd 0tokenPentester python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt ``` **Ollama + 模型:** ``` brew install ollama && ollama serve & ollama pull qwen2.5-coder:7b # 16 GB Macs ollama pull qwen2.5-coder:14b # more RAM available ``` **安全工具(可选):** ``` # macOS brew install nmap ffuf gobuster nuclei sqlmap # Debian/Kali/Ubuntu sudo apt install -y nmap ffuf gobuster sqlmap go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest ``` 任何被跳过的工具都会报告为不可用;纯 Python 的探测仍会运行。 **更大的字典:**已经内置,无需获取步骤。将 `tools.wordlist` 指向 `wordlists/raft-medium-directories.txt` 可获得更深度的覆盖。 **配置:** ``` cp config.example.yaml config.yaml # 设置 engagement.scope.allow,选择一个 model,可选择性地固定 tool paths ``` 或者改用 Web UI 的 `/scope` 页面。 ## 模型选择 | 模型 | RAM (q4) | 用途 | |---|---|---| | `qwen2.5-coder:14b` | ~9 GB | 最佳规划/推理 | | `qwen2.5-coder:7b` | ~5 GB | 更快的默认选项 | | `llama3.1:8b` | ~5 GB | 通用备选方案 | 在 16 GB 内存下,`llm.model` 和 `llm.report_model` 均使用 7B 模型;只有一个模型会驻留在内存中。 ## 用法 ``` ./start ``` 输入目标 + 可选的身份 A/B(token/cookie 或用户名+密码), 选择模型,勾选授权框,**Start assessment**。范围在 `/scope` 进行管理,而不是在此表单上。运行仅绑定到 `127.0.0.1`。 `/history` 列出过去的运行记录:查看、下载 `report.md`,或删除(单个 或批量)。 P1/P2 主动任务默认自动运行;P0 仍然会提示确认。设置 `auto_approve_priorities: []` 可确认所有内容。 输出位于 `runs/-/` 中:`report.md`、`findings.json`、 `findings/*.md`、`tasktree.json`、`ALERT.txt`(如果出现了新的严重/高危 发现)。每次运行也会更新插入到 `pentester.db` 中。 ## 阶段 1. **Recon**:子域名、DNS、爬取、内容发现、暴露的文件 2. **服务 ID**:端口、版本、OpenAPI/GraphQL、子域名接管 3. **高风险验证**:RCE/反序列化、身份验证绕过、文件访问 4. **常见 Web/API 漏洞**:注入、SSRF、XSS、上传、开放重定向 5. **认证/授权/业务逻辑**:提权、速率限制、headers、JWT 6. **OWASP API Top 10**:BOLA、BFLA、批量赋值、资产盘点
OWASP API Top 10 覆盖范围 | # | 类别 | 已覆盖 | |---|---|---| | API1 | Broken Object Level Auth | ✅ 6.1 ID 枚举 + JWT 伪造的跨账户攻击 | | API2 | Broken Authentication | ✅ 5.2 速率限制 + 5.5 JWT 检查 | | API3 | Broken Object Property Auth | ✅ 6.3 批量赋值 | | API4 | Unrestricted Resource Consumption | ✅ 5.2 速率限制 | | API5 | Broken Function Level Auth | ✅ 6.2 权限声明伪造 | | API7 | SSRF | ✅ 4.2 nuclei + 元数据探测 | | API8 | Security Misconfiguration | ✅ 4/5 headers、CORS、HTTP 动词 | | API9 | Improper Inventory | ✅ 6.4 旧版本探测 |
OWASP Web Top 10 (2021) 覆盖范围 | # | 类别 | 已覆盖 | |---|---|---| | A01 | Broken Access Control | ✅ HTTP 动词篡改、上传、IDOR、BOLA/BFLA、开放重定向 | | A02 | Cryptographic Failures | ✅ TLS 检查 + JWT 检查 | | A03 | Injection | ✅ sqlmap、nuclei、遍历/XXE/cmdi/SSTI、XSS | | A05 | Security Misconfiguration | ✅ 暴露的文件、接管、headers、点击劫持、CORS | | A06 | Vulnerable Components | ✅ endoflife.date 查询 | | A07 | Auth Failures | ✅ 速率限制 + JWT 检查 | | A10 | SSRF | ✅ nuclei + 元数据探测 |
## 范围安全 - 针对真实的互联网目标工作,而不仅仅是本地测试服务器。 - 发现的子域名/API endpoint 只有在匹配 `engagement.scope.allow` 时才会被扫描。 - 重定向安全:纯 Python 的 HTTP 工具在每一跳之前都会检查范围,从不默默追踪跨域重定向。 - 一个限制:外部 CLI 工具(`nuclei`、`gobuster`、`ffuf`、`sqlmap`)管理自己的重定向行为;范围*关卡*仍然适用于它们各自得到的 URL。 ## 法律与道德 攻防安全工具仅用于**授权**的测试任务。保持你的 范围列表准确,保留书面授权,绝不测试你不 拥有或未签约测试的系统。作者对滥用行为不承担任何责任。 ## 贡献 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。`dev` 是活跃分支,也是 Pull Request 的默认目标;`main` 仅接收来自 `dev` 的合并。 ## 许可证 [MIT](LICENSE)。随你怎么用,不提供任何担保。
标签:AI风险缓解, DLL 劫持, GitHub, LLM评估, Ollama, Python, TCP SYN 扫描, Web UI, 大语言模型, 安全报告, 实时处理, 密码管理, 无后门, 本地部署, 自动化编排