master
InfoLeak Scanner
Ein Web-Applikations-Vulnerability-Scanner mit Fokus auf Informationslecks. Findet exponierte Admin-Panels, Directory Listings, Debug-Infos und Secrets in HTTP-Responses — mit Browser-Dashboard und Live-Ergebnissen.
Features
Acht Erkennungs-Module, alle parallel pro Scan ausführbar:
- Path Prober — Testet ~100 bekannte sensitive Pfade (
.env,/.git/config,/admin,/phpinfo.php, ...) - Header Analyzer — Erkennt Versions-Disclosure (
Server,X-Powered-By) und fehlende Security-Header - Response Inspector — Sucht nach AWS-Keys, Private Keys, Stack Traces und API-Secrets in Responses
- Directory Listing Detector — Erkennt aktives Directory Listing (Apache/Nginx)
- CORS Analyzer — Findet unsichere CORS-Konfiguration (reflektierte Origin, Wildcard mit Credentials,
null-Origin) - Cookie Analyzer — Prüft
Set-Cookieauf fehlendeHttpOnly/Secure/SameSite-Flags - TLS Analyzer — Prüft Zertifikat auf Ablauf, baldigen Ablauf, Self-Signed und Hostname-Mismatch
- VCS Exposure — Erkennt exponierte
.git/.svn-Verzeichnisse mit Inhaltsvalidierung (keine Catch-all-False-Positives) - Browser-Dashboard — Live-Polling, Severity-Filter, JSON-Export
- JSON Export — Alle Findings als
.jsonherunterladen
Voraussetzungen
- Python 3.11+
Installation
git clone https://git.nb.myframework.de/jonas.hillenbrand/infoleak-scanner.git
cd infoleak-scanner
pip install -r requirements.txt
Starten
# Lokal (nur localhost)
uvicorn main:app --port 8000
# Im Netzwerk erreichbar
uvicorn main:app --host 0.0.0.0 --port 8000
Browser öffnen: http://localhost:8000
Verwendung
- URL des Ziels eingeben (z.B.
https://example.com) - Module auswählen (alle standardmäßig aktiv)
- Scan starten — Ergebnisse erscheinen live
- Findings nach Severity filtern
- JSON Export für Weiterverarbeitung
Severity-Stufen
| Stufe | Beispiele |
|---|---|
| 🔴 Critical | .env exponiert, Private Key, AWS-Key, CORS-Reflect mit Credentials, .git/.svn exponiert |
| 🟠 High | /admin erreichbar, Stack Trace, PHP-Fehler, CORS-Reflect, abgelaufenes/falsches TLS-Zertifikat |
| 🟡 Medium | Directory Listing, unbekannte exponierte Pfade, TLS bald ablaufend/Self-Signed |
| 🔵 Low | Versions-Disclosure (Server: Apache/2.4), Cookie ohne HttpOnly/Secure |
| ⚫ Info | Fehlende Security-Header, Cookie ohne SameSite, CORS-Wildcard |
API
| Method | Endpoint | Beschreibung |
|---|---|---|
POST |
/scan |
Scan starten — Body: {"url": "...", "modules": [...]} |
GET |
/scan/{id} |
Status + Findings abfragen |
GET |
/scan/{id}/export |
Findings als JSON herunterladen |
GET |
/scans |
Alle Scans der aktuellen Session |
Projektstruktur
infoleak-scanner/
├── main.py # FastAPI App + API-Routen
├── scanner/
│ ├── engine.py # Orchestrierung + In-Memory-Registry
│ ├── models.py # Finding, ScanJob Datenmodelle
│ ├── path_prober.py # Pfad-Scanner
│ ├── header_analyzer.py # Header-Analyse
│ ├── response_inspector.py# Secret-Erkennung via Regex
│ ├── directory_listing.py # Directory-Listing-Erkennung
│ ├── cors_analyzer.py # CORS-Fehlkonfiguration
│ ├── cookie_analyzer.py # Cookie-Security-Flags
│ ├── tls_analyzer.py # TLS-/Zertifikat-Prüfung
│ └── vcs_exposure.py # .git/.svn-Exposure
├── wordlists/
│ └── paths.txt # Wordlist mit ~100 sensitiven Pfaden
├── docs/ # Design-Specs & Implementierungspläne
├── static/ # Browser-Dashboard (HTML/CSS/JS)
└── tests/ # 66 Tests
Tests
pytest
Hinweise
- Scan-Ergebnisse werden nur im RAM gespeichert — nach Neustart weg
- Nur für autorisierte Tests auf eigenen oder explizit freigegebenen Systemen verwenden
- Timeout pro Request: 5 Sekunden, max. 10 parallele Requests
Description
Languages
Python
79.5%
JavaScript
8.3%
CSS
7.4%
HTML
4.8%