در نسخههای JeecgBoot تا ورژن 3.9.5، یک آسیبپذیری از نوع عدم احراز صلاحیت (Missing Authorization) در نقطه اتصال GET /sys/api/getUserByName شناسایی شده است. این نقص امنیتی به کاربران احراز هویت شدهای که دسترسیهای محدودی دارند (Low-privileged users) اجازه میدهد تا مقدار رمز عبور ذخیره شده برای هر کاربری در سیستم را بازیابی کنند.
جزئیات فنی حمله
عامل تهدید میتواند از طریق یک زنجیره حمله برای دستیابی به دسترسیهای مدیریتی اقدام کند:
- استخراج داده: مهاجم با استفاده از API مذکور، مقدار رمز عبور رمزنگاری شده کاربر هدف (مانند مدیر سیستم) را دریافت میکند.
- رمزگشایی: پاسخهای دریافتی با الگوریتم AES-CBC محافظت شدهاند، اما کلید رمزنگاری بهصورت Hard-coded در سیستم قرار دارد و از طریق نقطه اتصال
/sys/getEncryptedStringدر دسترس است. - دسترسی نهایی: با استفاده از این کلید، مهاجم میتواند متن رمزنگاری شده (Ciphertext) رمز عبور مدیران را رمزگشایی کرده و سپس از طریق روشهای حدس زدن آفلاین (Offline Guessing)، رمز عبور واقعی را به دست آورد.