
A comprehensive vulnerability scanner for CVE-2025-13780, a Remote Code Execution (RCE) vulnerability in pgAdmin 4 versions ≤ 8.14.
Un scanner de vulnérabilités complet pour CVE-2025-13780, une vulnérabilité d'exécution de code à distance (RCE) dans pgAdmin 4 versions ≤ 8.14.
La vulnérabilité se trouve dans la fonctionnalité Restore de pgAdmin 4. L'application tente de bloquer les commandes shell dangereuses (commençant par \) à l'aide d'une expression régulière. Cependant, cette vérification peut être contournée.
(^|\n)[ \t]*\\\xef\xbb\xbf fait échouer la correspondance de la regex\n\r au lieu de \n avant la barre oblique inverse# Clone the repository
git clone https://github.com/ThemeHackers/CVE-2025-13780.git
cd CVE-2025-13780
# Install dependencies
pip install -r requirements.txt
requests - HTTP library for API requestsrich (optional) - Enhanced terminal output with colors and progress barspython-socketio & websocket-client (optional) - WebSocket support for exploit mode# Basic scan
python3 scanner.py http://localhost:5050
# With authentication
python3 scanner.py http://localhost:5050 --email [email protected] --password admin
# Verbose mode
python3 scanner.py http://localhost:5050 -v
# Scan from file
python3 scanner.py -f targets.txt
# With multi-threading (default: 5 threads)
python3 scanner.py -f targets.txt --threads 10
# Export results to JSON
python3 scanner.py -f targets.txt -o results.json --json
Le scanner calcule un score de confiance (0-100) basé sur plusieurs facteurs :
Pour les versions ≤ 8.14 :
Pour les versions > 8.14 :
Pour les versions inconnues :
Utilisez Docker Compose pour configurer une instance vulnérable de pgAdmin 4 :
docker-compose up -d
[email protected]admin| Code | Signification |
|---|---|
| 0 | Aucune vulnérabilité trouvée |
| 1 | Une ou plusieurs cibles vulnérables trouvées |
| 2 | Des erreurs de scan sont survenues |
╔═══════════════════════════════════════════════════════════════╗
║ 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 ⚠️
Cet outil est fourni à des fins éducatives et de test de sécurité autorisé uniquement.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
| Option | Description |
|---|
target | URL cible (ex. http://localhost:5050) |
-f, --file | Fichier contenant la liste des cibles (une par ligne) |
-e, --email | Email pgAdmin pour l'authentification |
-p, --password | Mot de passe pgAdmin pour l'authentification |
-o, --output | Fichier de sortie pour les résultats |
--json | Résultats au format JSON |
-q, --quiet | Supprimer la bannière et les messages d'information |
-v, --verbose | Activer la sortie verbose/débogage |
-t, --timeout | Délai d'attente de la requête en secondes (défaut : 10) |
--threads | Nombre de threads pour le scan multi-cibles (défaut : 5) |
--exploit-demo | Exécuter le mode de démonstration d'exploitation |
--exploit | Exécuter un véritable exploit (nécessite --lhost) |
--lhost | IP de l'attaquant pour le callback du reverse shell |
--lport | Port de l'attaquant pour le reverse shell (défaut : 4444) |
--cmd | Commande personnalisée à exécuter (optionnel) |
| Facteur | Points max | Détails |
|---|
| Version dans la plage vulnérable (≤ 8.14) | 40 | Version détectée comme ≤ 8.14 |
| Version inconnue | 15 | Quand la version ne peut être déterminée |
| Point de terminaison Restore accessible | 25 | API Restore accessible sans authentification |
| Point de terminaison Restore (nécessite auth) | 15 | API Restore existe mais nécessite une authentification |
| Contournements BOM et CRLF fonctionnent | 25 | Les deux méthodes de contournement de la regex réussissent |
| Une méthode de contournement fonctionne | 20 | Soit le contournement BOM, soit CRLF réussit |
| Point de terminaison navigateur accessible | 10 | Interface principale pgAdmin accessible |