شرح CSS Injection .

1337r00tمنذ 5 سنوات

السلام عليكم ورحمة الله وبركاته

-------------------

الحمد لله على جميع نِعمه علينا ما علمنا منها وما لم نعلم حمداً والصلاة والسلام على نبينا محمد اشرف الخلق والمرسلين, اما بعد :-

----------------------


# مقدمة :-
ثغرة 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 وتستطيع التحقق من هذا الرابط للتأكد من كون متصفحك معرض للأصابة او لا .

كلمات دليلية: css injection
3
إعجاب
3073
مشاهدات
0
مشاركة
1
متابع

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !