WebSex
# WebSex
Container-native offensive security MCP toolkit with evidence-backed
vulnerability playbooks.
## What it is
- **179 MCP tools**: 107 executable-backed scanners (nmap, nuclei, sqlmap,
dalfox, ffuf, metasploit, ghidra, ...), 52 native/workspace/browser/HTTP
workbench tools, and **20 playbook probes** — deterministic, evidence-first
vulnerability checks.
- **Playbooks** (`websex_*_probe`): XSS reflection+context classification,
boolean/time SQLi oracles with controls, SSTI math canaries, command
injection echo/timing canaries, path traversal file-read, 401/403/405
bypass matrix, SSRF canary reads, open redirect confusion matrix,
IDOR/BFLA/mass-assignment authorization diffs, CORS/CSRF posture, CRLF
header injection, Host header poisoning, JWT algorithm/secret abuse against
a live oracle, race bursts, and business-logic value abuse.
- **Scope guard**: every probe validates the URL against the engagement's
declared targets before a single request leaves the container.
- **Engagements**: persistent namespaces with evidence artifacts; every probe
run is persisted as JSON under `evidence/websex/`.
- **Hardened executor**: argv-token execution (never a shell), wall-clock
deadline (default 300s), bounded output capture (default 2 MiB) with
truncation markers, process-group kill on timeout/cancel.
## Findings policy
Probe output contains `review_items` classified as `high-confidence`
(deterministic proof in the captured bytes: canary reflected raw, forged
token accepted, oracle answered) or `review` (evidence-backed lead for the
caller to confirm). Full request/response steps accompany every result.
## MCP config
```json
{
"mcp": {
"websex": {
"type": "local",
"enabled": true,
"command": ["docker", "exec", "-i", "websex", "websex-mcp"]
}
}
}
```
## Container
```bash
docker build -t websex:1.0.0 .
docker run -d --name websex -v websex-workspace:/workspace websex:1.0.0
docker exec websex websex-mcp --self-test
```
## Development
```bash
pip install -e .
websex-mcp --self-test
# local verification against the deliberately vulnerable app
python3 tests/vulnapp.py &
python3 tests/live_playbooks.py
```
## License
Apache-2.0. See LICENSE.
TDQS
Scored across 179 tools
Despite each tool wrapping a distinct external executable, there is heavy functional overlap: gobuster/ffuf/feroxbuster/dirb/dirsearch all perform directory/content brute-forcing, and multiple scanners (nuclei, nikto, wfuzz, dalfox, xsser) address the same web-audit space. The native probe tools are better differentiated, but an agent must know external tooling nuances to pick correctly.
Every tool uses the websex_ prefix with snake_case, yielding a highly predictable scheme (websex_nmap, websex_browser_navigate, websex_engagement_create). The mix of bare tool names and verb_noun compounds is still internally consistent and readable.
179 tools is far beyond any reasonable per-server surface and well past the 50-tool extreme threshold, creating a large selection burden even though each maps to a real tool. The catalog/execute compact fallback mitigates but does not resolve the overload.
Coverage is remarkably broad across recon, enumeration, web, network, wireless, credentials, exploitation, forensics, binary, and cloud, plus engagement lifecycle and native evidence-first probes. Minor gaps remain, such as no unified reporting/export beyond finding_report, but core offensive workflows are well covered.