
An open, local-first security testing platform for pentesters, AI agents, CI/CD pipelines, and teams.
CI: suite · goldens · perf-check — baseline 281.9ms / 19 pages (tests/perf/baseline.json) — .github/workflows/ci.yml
One security testing engine. Every interface.
An open, local-first security testing platform for pentesters, AI agents, CI/CD pipelines, and teams.
Traditional security tools were designed around a single tester using a desktop interface.
pwnproxy is built around a shared security testing engine that can be controlled through a terminal, TUI, REST API, WebSocket streams, CI/CD pipelines, or AI agents through MCP.
┌─────────────────────┐
│ pwnproxy core │
│ │
│ Proxy · Scanners │
│ Repeater · Intruder │
│ Sessions · Plugins │
└──────────┬──────────┘
│
┌───────────┬───────────┼───────────┬───────────┐
▼ ▼ ▼ ▼ ▼
CLI TUI REST API WebSocket MCP
│ │ │ │ │
Pentesters Pentesters Automation Teams AI Agents
The same core is used whether you are manually intercepting traffic, running an automated scan, integrating security checks into CI/CD, or giving an AI agent access to your testing workflow.
The proxy, scanners, storage, and automation run on your infrastructure.
No cloud dependency is required for the core testing workflow.
The CLI, TUI, REST API, WebSocket streams, and MCP server are interfaces to the same underlying system.
You do not need separate tools for manual testing and automation.
Run scans directly from the command line, consume JSON or SARIF output, and integrate findings into CI/CD pipelines.
pwnproxy exposes its capabilities through a native MCP server so compatible AI agents can interact with the same testing engine used by human operators.
Scanners and hooks use a plugin architecture designed for built-in and third-party extensions.
git clone https://github.com/ericmtzmtz/pwnproxy.git
cd pwnproxy
poetry install
Python 3.12 or later is required.
poetry run pwnproxy start --proxy-port 8080 --api-port 8000
This starts:
127.0.0.1:8080127.0.0.1:8000http://127.0.0.1:8000/docscurl -x http://127.0.0.1:8080 http://httpbin.org/get
poetry run pwnproxy history
poetry run pwnproxy scan url https://example.com \
--scanners sqli,xss \
--output sarif \
--output-file report.sarif
Exit codes:
| Code | Meaning |
|---|---|
| 0 | Scan completed, no findings |
| 1 | Scan completed, findings found |
| 2 | Error |
pwnproxy is currently installed from source using Poetry (0.1.0 pre-release; 0.2.0-dev in CHANGELOG.md). PyPI packaging is planned for a future release.
Configuration lives in ~/.pwnproxy/config.toml — see config.example.toml for [triage] / [llm] / max_llm_per_scan and scope settings. Core testing (proxy, scanners, storage) works without an LLM API key; triage runs on heuristics by default.
Pause, inspect, modify, and resume HTTP/HTTPS traffic.
Built-in scanners currently include:
| Scanner | Detection |
|---|---|
| SQLi | Error-based (signatures + muted 5xx with negative controls / anti-WAF guards), boolean-blind (multi-round + baseline), time-based, OOB |
| XSS | Reflected/stored with context-aware exploitability (reflection ≠ XSS); static DOM sink signals (dom-xss, inferred) |
| LFI | Content signatures, traversal, and PHP wrappers |
| XXE | Error-based, XInclude, JSON mutation, and OOB workflows |
| SSRF | OOB/callback confirmation only (fail-closed; no speculative error-based SSRF) |
Findings use three confidence levels — tentative, inferred, and confirmed — so weak signals are not treated as exploits. LLM triage is opt-in; by default the pipeline stays on heuristics and never sends tentative findings to the LLM judge.
Scanners consume captured flows and can also be executed directly in headless mode.
Replay and modify raw HTTP requests independently from the proxy.
Findings preserve request data so detected issues can be manually validated.
Request fuzzing using Burp-style §marker§ positions.
Supported modes include:
Wordlist-based path and file discovery with:
Automatically extract and store:
Sessions are isolated and persisted locally.
Extend pwnproxy with custom scanners and hooks.
Plugins can be:
The same plugin interface is used for built-in and third-party scanners.
A watchdog tracks plugin failures and can automatically disable repeatedly failing plugins.
Run pwnproxy directly from the terminal.
pwnproxy start
pwnproxy history
pwnproxy findings
pwnproxy scan url https://example.com
pwnproxy plugin list
pwnproxy session list
Use an interactive terminal interface for:
Control the platform programmatically.
curl http://127.0.0.1:8000/api/v1/flows
The API exposes functionality for:
Interactive API documentation is available at:
http://127.0.0.1:8000/docs
Consume real-time events for traffic, findings, crawler activity, and other workflows.
Example streams:
/ws/traffic/ws/findings/ws/eventsThis allows external interfaces and automation systems to react to testing activity in real time.
pwnproxy includes a native MCP server that exposes the testing platform to MCP-compatible agents.