
CVE-2024-51567 é um exploit PoC em Python direcionado a uma vulnerabilidade RCE no endpoint upgrademysqlstatus do CyberPanel v2.3.6, ignorando proteções CSRF.
CVE-2024-51567 é um script de exploração proof-of-concept (PoC) em Python para CVE-2024-51567, uma vulnerabilidade crítica de injeção de comandos que afeta o CyberPanel v2.3.6. Essa vulnerabilidade, encontrada no endpoint upgrademysqlstatus, permite execução remota de comandos (RCE) ao contornar as proteções de CSRF e utilizar metacaracteres de shell em parâmetros específicos.
⚠️ Aviso Importante: Este script destina-se a fins educacionais e testes de segurança autorizados em sistemas que você possui ou possui permissão explícita para testar. O uso não autorizado deste script em qualquer sistema é ilegal e passível de punição por lei. O autor não assume nenhuma responsabilidade pelo uso indevido. Sempre respeite padrões éticos e leis aplicáveis.
upgrademysqlstatus em databases/views.py do CyberPanel (anterior ao commit 5b08cd6) permite que atacantes remotos executem comandos arbitrários ao contornar as proteções do secMiddleware, que apenas filtram requisições POST. Essa vulnerabilidade pode ser explorada usando metacaracteres de shell no parâmetro statusfile./dataBases/upgrademysqlstatushttpxgit clone https://github.com/ajayalf/CVE-2024-51567.git
cd CVE-2024-51567
httpx está instalado:
pip install httpx
Para executar o script em um único alvo, use o seguinte comando:
python CVE-2024-51567.py <url-do-alvo>
Exemplo:
python CVE-2024-51567.py http://exemplo.com
Para executar o script em múltiplos alvos, crie um arquivo de texto com uma lista de URLs de destino (uma URL por linha) e use o comando:
python CVE-2024-51567.py <alvos.txt>
Exemplo:
python CVE-2024-51567.py alvos.txt
Se você quiser usar múltiplos alvos, crie um arquivo de texto chamado alvos.txt ou qualquer nome de sua preferência. O formato do arquivo deve ser uma lista de URLs, com uma URL por linha, conforme mostrado abaixo:
http://alvo1.com
http://alvo2.com
http://alvo3.com
Após o script conectar a um alvo, você pode inserir comandos de shell para executar no servidor alvo. Para sair, digite exit ou quit.
get_CSRF_token(cliente): Obtém o token CSRF dos cookies na página principal do alvo.
cliente (um objeto httpx.Client)pwn(cliente, token_CSRF, cmd): Envia um payload especialmente elaborado com o token CSRF e o comando desejado.
cliente (um objeto httpx.Client), token_CSRF (string), cmd (string)exploit(cliente, cmd): Executa a função pwn no alvo para rodar o comando e imprime a saída.
cliente (um objeto httpx.Client), cmd (string)run_exploit(alvo): Inicializa uma conexão com o alvo e inicia um loop interativo de comandos.
alvo (string, URL do alvo)exit ou quit.Execução Principal: Verifica o argumento para determinar se o alvo é uma URL única ou um arquivo com múltiplos alvos.
Se o token CSRF não for encontrado nos cookies, o script imprimirá todos os cookies recebidos e sairá com uma mensagem de erro útil.
/ é o endpoint correto para obter o token CSRF. Se for diferente, modifique a função get_CSRF_token adequadamente.Para mais informações sobre esta vulnerabilidade, consulte os seguintes recursos: