
Apache Solr Poc CVE-2017-3164 CVE-2017-12629
Dieser Ordner enthält Beispiel-Exploits für Apache Solr CVE-2017-3164 CVE-2017-12629
Nur für Bildungszwecke und mit voller Erlaubnis des Besitzers des Apache Solr Servers zu verwenden.
Sie benötigen die IP oder den DNS-Namen des Apache Solr Servers sowie den Namen einer Collection.
Server-Side-Request-Forgery in Apache Solr, Versionen 1.3 bis einschließlich 7.6. Da der Parameter "shards" über keinen entsprechenden Whitelist-Mechanismus verfügt, kann ein entfernter Angreifer mit Zugriff auf den Server Solr dazu veranlassen, eine HTTP-GET-Anfrage an eine beliebige erreichbare URL zu senden.
Dieser SSRF ist extrem mächtig, da Sie lediglich eine GET-Anfrage an diesen Endpunkt senden müssen und Solr daraufhin eine POST-Anfrage an das Ziel ausführt. Zudem können Sie den POST-Anfragekörper als URL-Parameter zusammen mit der GET-Anfrage übermitteln.
Remote-Code-Ausführung in Apache Solr vor 7.1 mit Apache Lucene vor 7.1 durch Ausnutzung von XXE in Verbindung mit der Verwendung eines Config-API add-listener-Befehls, um die RunExecutableListener-Klasse zu erreichen. Elasticsearch, obwohl es Lucene verwendet, ist NICHT anfällig dafür. Beachten Sie, dass die XML-External-Entity-Expansion-Schwachstelle im XML-Abfrage-Parser auftritt, der standardmäßig für jede Abfrageanfrage mit den Parametern deftype=xmlparser verfügbar ist und ausgenutzt werden kann, um schädliche Daten an den /upload-Anfragehandler zu senden oder als Blind XXE mittels ftp-Wrapper, um beliebige lokale Dateien vom Solr Server zu lesen. Beachten Sie auch, dass die zweite Schwachstelle die Remote-Code-Ausführung mittels des RunExecutableListener betrifft, der in allen betroffenen Solr-Versionen verfügbar ist.
Ich habe mich für diesen RCE entschieden, aber Apache Solr hat viele RCE-Schwachstellen, die Sie mit dem SSRF ausnutzen könnten. Sie könnten ebenso einfach jeden anderen Server ausnutzen, auf den der Solr Server Zugriff hat, z. B. Redis-Befehle übermitteln und stattdessen eine Reverse Shell auf Redis-Servern erhalten.
Sie können diese Datei auf einem öffentlichen Webserver hosten und sie dann an den Zielbenutzer senden. Wenn der Benutzer die Webseite lädt, exploitiert das JavaScript automatisch den Apache Solr Server.
Die Portnummer muss im URL-Parameter ?n= angegeben werden. Auf diese Weise können Sie E-Mails an mehrere Ziele senden und für jedes einen eindeutigen Listener haben.