
إثبات المفهوم لـ CVE-2022-45782: رموز إعادة تعيين كلمة المرور في dotCMS قابلة للتنبؤ، مع مُخترق الرموز وسلسلة استغلال كاملة.
يحتوي هذا المستودع على إثبات مفهوم لاستغلال CVE-2022-45782، وهي ثغرة في dotCMS حيث يتم إنشاء رموز إعادة تعيين كلمة المرور باستخدام الطريقة غير المشفرة RandomStringUtils.randomAlphanumeric().
نظرًا لأن هذا الرمز يمكن توقعه، يمكن للمهاجم تخمينه أو استنتاجه بالقوة الغاشمة وإعادة تعيين كلمة مرور حساب المسؤول.
يوضح هذا الإثبات سلسلة الاستغلال الكاملة:
يستخدم هذا المستودع وحدة فرعية من Git تحتوي على أداة الكسر لوظيفة توليد الرمز الضعيفة.
وهي عبارة عن تنفيذ بلغة C لأداة الكسر المستخدمة لاستنتاج/تخمين رموز إعادة تعيين كلمة المرور المولدة بواسطة RandomStringUtils.randomAlphanumeric().
استنساخ مع الوحدة الفرعية:
git clone https://github.com/alex91ar/randomstringutils.git
يجب أن يرسل dotCMS رسائل إعادة التعيين لكي يعمل إثبات المفهوم.
قم بتحرير ملف docker-compose.yml:
DOT_MAIL_SMTP_USER: "<smtp_email>"
DOT_MAIL_SMTP_PASSWORD: "<smtp_pass>"
(إذا كنت تستخدم Gmail: فعّل كلمة مرور التطبيق واستخدم كلمة المرور المكونة من 16 حرفًا التي تم إنشاؤها.)
docker compose up
إذا فشل (شائع في التشغيل الأول)، قم بتشغيله مرة أخرى فقط.
صفحة تسجيل الدخول: https://localhost:8443/dotAdmin/#/public/login
داخل dotCMS:
سيتم استخدام هذين الحسابين بواسطة إثبات المفهوم.
randomstringutils هي أداة القوة الغاشمة/الكسر لرمز dotCMS غير الآمن.
قم بتجميعها باستخدام:
cd randomstringutils
gcc -lpthread -O3 -o randomutils randomutils.c
ينتج عن هذا الملف الثنائي السريع لأداة كسر الرمز.
python3 poc.py
إذا نجح الأمر، يستخدم البرنامج النصي رمز المسؤول المكسور لإعادة تعيين حساب المسؤول.
هذا المستودع مخصص للأغراض التعليمية والأكاديمية واختبار الأمان المصرح به فقط.
لا تستخدم هذا الاستغلال ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.