شرح CSS Injection .
السلام عليكم ورحمة الله وبركاته
-------------------
الحمد لله على جميع نِعمه علينا ما علمنا منها وما لم نعلم حمداً والصلاة والسلام على نبينا محمد اشرف الخلق والمرسلين, اما بعد :-
----------------------
# مقدمة :-
ثغرة CSS Injection هي ببساطة عملية حقن CSS Code داخل الصفحة لتقوم الصفحة بعمل rendered لهذا الكود في متصفح الضحية, وهذا يعني أن CSS Injection تصنف من Client-side vulnerabilities اي انها الثغرات التي يتأثر بها المتصفح فقط وليس السيرفر لكن تحدث تطورات على حسب السياق الذي يتم فيه حقن CSS Code في الصفحة .
------------------------
# أكتشافها :-
أكتشافها يلزمك بأن تكون على علم بما يحدث في client-side للموقع وبما قد يتأثر من server-side وهذا الشيء يلزمك بأن تكون على معرفة بHTML+CSS+JS او اي ماقد يؤثر على client-side مثلا GET/POST parameters وماقد يقع من القيم الخاص بها لتؤثر على client-side, كلامي مو مفهوم ؟ دعنا نذهب للأمثله العملية .
مثلا قام Front-end developer بكتابة هذا الكود :-
<a id="a1">Click me</a>
<script>
if (location.hash.slice(1)) {
document.getElementById("a1").style.cssText = location.hash.slice(1);
}
</script>
اولا لنفهم الكود الآتي ماذا يفعل .
يقوم location.hash وهي ضمن دوال Sources بأخذ اي قيمة مابعد # في الرابط مضمنه قبلها # ! دعني اشرح اكثر, مثلا هذا الرابط :-
http://test1337r00t.com/test#null
وظيفة location.hash انه يرجع لك #null فقط ! و slice اسند اليها 1 بمعنى انها سوف تحذف # ليتبقى null فقط
وهنا كي تتتعرف على ()document.getElementById و style.cssText. تشير الى قيمة style tag فالمختصر البسيط :-
http://test245.com/test#XXXX
اي شيء ستكتبه مكان XXXX سوف يكون قيمة style tag (CSS Code) :-
<a id="a1" style="XXXX">
وهذا يعني أننا أكتشفنا ان هناك CSS Injection .
وطبعا سيناريوهات الهجوم والأخطاء لاتقتصر على مثالي .
---------------
# أستغلالها :-
من الجيد في CSS Injection تستطيع تطويرها إلى خطر او تأثير أكبر لكن للأسف هناك بعض العوامل اللذي تحد من أستغلالها مثلا XSS لكن العوامل تتطور ف ممكن تحصل على XSS عن طريق دالة expression في متصفح IE ومن مخاطرها ايضا هو ان تقوم بعمل data exfiltration بحيث تستطيع رؤية بعض المعلومات الحساسة مثل Anti-CSRF Token لتنفذ CSRF Attack وأيضا تستطيع التأثير على UI .
---------------
# التوصيات :-
الفلترة الصحيحة بحيث اي \ تضيف قبله \ (double-backslashes) وطبعا الdouble escape backslashes و CSP هو أفضل حل للمطورين ! لكن للمستخدمين وماقد ممكن ان يعانونه من data exfilteration انصح بأضافة CSS Exfil Protection وتستطيع التحقق من هذا الرابط للتأكد من كون متصفحك معرض للأصابة او لا .
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !