OWASP Web Security Testing Guide RAG-System mit ChromaDB, MCP für Claude Code
Ein Retrieval-Augmented Generation (RAG)-System, das den OWASP Web Security Testing Guide (WSTG) in einer Vektordatenbank indiziert und so über REST-API und MCP (Model Context Protocol) sofortigen Zugriff auf Sicherheitstestmethoden für die Integration mit Claude Code bietet.
| Kategorie | WSTG-ID | Beschreibung |
|---|
| Informationssammlung | WSTG-INFO | Fingerprinting, Enumeration, Mapping |
| Konfiguration | WSTG-CONF | Server-/Plattformkonfigurationstests |
| Identitätsmanagement | WSTG-IDNT | Benutzerregistrierung, Konto-Bereitstellung |
| Authentifizierung | WSTG-ATHN | Login, Passwortrichtlinie, MFA-Tests |
| Autorisierung | WSTG-ATHZ | Privilegieneskalation, IDOR, Zugriffskontrolle |
| Session-Management | WSTG-SESS | Session-Tokens, Cookies, Fixierung |
| Eingabevalidierung | WSTG-INPV | SQLi, XSS, Befehlsinjektion, SSTI |
| Fehlerbehandlung | WSTG-ERRH | Fehlermeldungen, Stack-Traces |
| Kryptographie | WSTG-CRYP | TLS, Verschlüsselung, Hashing |
| Geschäftslogik | WSTG-BUSL | Workflow-Umgehung, Dateiupload |
| Client-Seite | WSTG-CLNT | DOM-XSS, Clickjacking, WebSockets |
| API-Tests | WSTG-APIT | REST, GraphQL, API-Sicherheit |
cd RAG_runner
pip install -r requirements.txt
python3 build_database.py
Dies wird:
python3 -m server.http_server
Server läuft unter http://localhost:5004
# Gesundheitscheck
curl http://localhost:5004/health
# Suche nach SQL-Injection-Testmethoden
curl -X POST http://localhost:5004/search \
-H "Content-Type: application/json" \
-d '{"query": "SQL injection testing methodology"}'
# Spezifischen WSTG-Testfall abrufen
curl http://localhost:5004/wstg/WSTG-INPV-05
| Endpunkt | Methode | Beschreibung |
|---|---|---|
/health | GET | Gesundheitscheck |
/info | GET | Datenbankstatistiken |
/list | GET | Alle Dokumente auflisten |
/categories | GET | Kategorien und WSTG-IDs auflisten |
/doc/{id} | GET | Dokument anhand der ID abrufen |
/wstg/{id} | GET | Alle Chunks für die WSTG-ID abrufen |
/search | POST | Semantische Suche |
{
"query": "SQL injection testing",
"n_results": 5,
"category": "input_validation",
"wstg_id": "WSTG-INPV-05"
}
Hinzufügen zu ~/.claude.json:
{
"mcpServers": {
"owasp-wstg-rag": {
"command": "python3",
"args": ["/path/to/OWASP_WSTG_Rag/RAG_runner/server/mcp_client.py"],
"env": {
"WSTG_RAG_URL": "http://localhost:5004"
}
}
}
}
| Werkzeug | Beschreibung |
|---|---|
search_wstg | WSTG nach Testmethoden durchsuchen |
search_test_methodology | Nach Anleitungen für Testverfahren suchen |
search_test_objectives | Nach Testzielen suchen |
get_wstg_test_case | Vollständigen Testfall anhand der WSTG-ID abrufen |
get_wstg_document | Dokument anhand der ID abrufen |
list_wstg_categories | Alle Kategorien und WSTG-IDs auflisten |
wstg_health | Gesundheitscheck |
wstg_info | Datenbankstatistiken |
# Suche nach SQL-Injection-Testmethodik
search_wstg("SQL injection testing methodology")
# Spezifischen Testfall abrufen
get_wstg_test_case("WSTG-INPV-05")
# Innerhalb einer Kategorie suchen
search_wstg("authentication bypass", category_filter="authentication")
# Testziele für IDOR abrufen
search_test_objectives("IDOR insecure direct object reference")
OWASP_WSTG_Rag/
├── README.md
├── CLAUDE.md # Claude Code project guide
├── raw_data/ # OWASP WSTG HTML source files
│ ├── 01-Information_Gathering/
│ ├── 02-Configuration_and_Deployment_Management_Testing/
│ ├── 03-Identity_Management_Testing/
│ ├── 04-Authentication_Testing/
│ ├── 05-Authorization_Testing/
│ ├── 06-Session_Management_Testing/
│ ├── 07-Input_Validation_Testing/
│ ├── 08-Testing_for_Error_Handling/
│ ├── 09-Testing_for_Weak_Cryptography/
│ ├── 10-Business_Logic_Testing/
│ ├── 11-Client-side_Testing/
│ └── 12-API_Testing/
└── RAG_runner/
├── build_database.py # Main build pipeline
├── requirements.txt
├── parsers/
│ └── wstg_parser.py # HTML parser for WSTG
├── chunking/
│ └── chunker.py # Semantic chunking
├── server/
│ ├── vector_store.py # ChromaDB wrapper
│ ├── http_server.py # REST API server
│ └── mcp_client.py # MCP tools for Claude Code
└── data/
├── processed/ # Intermediate JSON files
└── chroma_db/ # Vector database
┌─────────────────────────────────────────────────────────────────┐
│ OWASP WSTG HTML Files │
│ (raw_data/*.html) │
└────────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ wstg_parser.py │
│ Parse HTML → Structured JSON │
└────────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ chunker.py │
│ Create Semantic Chunks for RAG │
└────────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ ChromaDB Vector Store │
│ (data/chroma_db/) │
└────────────────────────────┬────────────────────────────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ http_server.py │ │ mcp_client.py │
│ REST API :5004 │ │ MCP for Claude Code │
│ │ │ │
│ GET /health │ │ search_wstg() │
│ GET /info │ │ get_wstg_test_case() │
│ GET /wstg/{id} │ │ search_test_methodology │
│ POST /search │ │ list_wstg_categories() │
└──────────────────────────┘ └──────────────────────────┘
In Verbindung mit Claude Code erhalten Sie während Sicherheitsbewertungen sofortigen Zugriff auf OWASP-Testmethoden:
Benutzer: „Wie teste ich auf SQL-Injection?“
Claude: [Fragt WSTG RAG ab]
→ Gibt WSTG-INPV-05-Methodik zurück mit:
- Testzielen
- Schritt-für-Schritt-Testverfahren
- Beispiel-Payloads
- Zu verwendenden Tools
Verwenden Sie die REST-API, um WSTG-Methoden in automatisierte Sicherheits-Pipelines zu integrieren:
import requests
# Testmethodik für aktuellen Test abrufen
response = requests.post('http://localhost:5004/search', json={
'query': 'session fixation testing',
'n_results': 3
})
methodology = response.json()['results']
Schnellreferenz für Sicherheitstestmethoden während Schulungen oder CTF-Herausforderungen.
Dieses Projekt verwendet Inhalte aus dem OWASP Web Security Testing Guide, der unter Creative Commons Attribution-ShareAlike 4.0 lizenziert ist.