
Uno scanner completo di vulnerabilità per CVE-2025-13780, una vulnerabilità di esecuzione remota di codice (RCE) nelle versioni di pgAdmin 4 ≤ 8.14.
Uno scanner completo di vulnerabilità per CVE-2025-13780, una vulnerabilità di esecuzione di codice remoto (RCE) in pgAdmin 4 versioni ≤ 8.14.
La vulnerabilità risiede nella funzionalità Ripristino di pgAdmin 4. L'applicazione tenta di bloccare comandi shell pericolosi (che iniziano con \) utilizzando un'espressione regolare. Tuttavia, questo controllo può essere aggirato.
(^|\n)[ \t]*\\\xef\xbb\xbf fa fallire la regex\n\r invece di \n prima del backslash# Clona il repository
git clone https://github.com/ThemeHackers/CVE-2025-13780.git
cd CVE-2025-13780
# Installa le dipendenze
pip install -r requirements.txt
requests - Libreria HTTP per richieste APIrich (opzionale) - Output avanzato del terminale con colori e barre di avanzamentopython-socketio e websocket-client (opzionale) - Supporto WebSocket per la modalità exploit# Scansione base
python3 scanner.py http://localhost:5050
# Con autenticazione
python3 scanner.py http://localhost:5050 --email [email protected] --password admin
# Modalità verbose
python3 scanner.py http://localhost:5050 -v
# Scansione da file
python3 scanner.py -f targets.txt
# Con multi-threading (default: 5 thread)
python3 scanner.py -f targets.txt --threads 10
# Esporta risultati in JSON
python3 scanner.py -f targets.txt -o results.json --json
Lo scanner calcola un punteggio di confidenza (0-100) basato su molteplici fattori:
Per versioni ≤ 8.14:
Per versioni > 8.14:
Per versioni sconosciute:
Usa Docker Compose per impostare un'istanza vulnerabile di pgAdmin 4:
docker-compose up -d
[email protected]admin| Codice | Significato |
|---|---|
| 0 | Nessuna vulnerabilità trovata |
| 1 | Uno o più target vulnerabili trovati |
| 2 | Si sono verificati errori di scansione |
╔═══════════════════════════════════════════════════════════════╗
║ CVE-2025-13780 pgAdmin 4 Scanner ║
║ Regex Bypass Remote Code Execution ║
║ ║
║ Affected: pgAdmin 4 <= 8.14 ║
╚═══════════════════════════════════════════════════════════════╝
[*] Checking connectivity to http://localhost:5050
[+] Target appears to be pgAdmin
[+] Detected version: 8.14
[+] CSRF token obtained
[!] Version 8.14 is in vulnerable range (<= 8.14)
[*] Testing regex bypass patterns
[+] BOM bypass: BYPASSED
[+] CRLF bypass: BYPASSED
⚠️ VULNERABILITY DETECTED ⚠️
Questo strumento è fornito esclusivamente per scopi di test di sicurezza autorizzati ed educativi.
Questo progetto è concesso in licenza MIT - vedi il file LICENSE per i dettagli.
| Opzione | Descrizione |
|---|
target | URL del target (es. http://localhost:5050) |
-f, --file | File contenente l'elenco dei target (uno per riga) |
-e, --email | Email pgAdmin per l'autenticazione |
-p, --password | Password pgAdmin per l'autenticazione |
-o, --output | File di output per i risultati |
--json | Output dei risultati in formato JSON |
-q, --quiet | Sopprime il banner e i messaggi informativi |
-v, --verbose | Abilita output verbose/debug |
-t, --timeout | Timeout della richiesta in secondi (default: 10) |
--threads | Numero di thread per la scansione multi-target (default: 5) |
--exploit-demo | Esegue la modalità dimostrativa dell'exploit |
--exploit | Esegue l'exploit reale (richiede --lhost) |
--lhost | IP dell'attaccante per il callback della reverse shell |
--lport | Porta dell'attaccante per la reverse shell (default: 4444) |
--cmd | Comando personalizzato da eseguire (opzionale) |
| Fattore | Punti Massimi | Dettagli |
|---|
| Versione nell'intervallo vulnerabile (≤ 8.14) | 40 | Versione rilevata ≤ 8.14 |
| Versione sconosciuta | 15 | Quando la versione non può essere determinata |
| Endpoint Restore accessibile | 25 | API Restore accessibile senza autenticazione |
| Endpoint Restore (richiede autenticazione) | 15 | API Restore esiste ma richiede autenticazione |
| Entrambi i bypass BOM e CRLF funzionano | 25 | Entrambi i metodi di bypass regex riescono |
| Un metodo di bypass funziona | 20 | Funziona il bypass BOM o CRLF |
| Endpoint Browser accessibile | 10 | Interfaccia principale di pgAdmin accessibile |