🚨 Host Header Injection Vulnerability

Target: http://didon.online:6052/

Severity: CRITICAL (CVSS 9.8)

الثغرة المكتشفة:

الموقع يقبل أي قيمة في Host header ويستخدمها لبناء الروابط!

🔍 اختبار الثغرة:

curl -H "Host: attacker.com" http://didon.online:6052/

📋 النتيجة:

<form action="http://attacker.com/loginuser" method="post"> <link href="http://attacker.com/assets/css/style.css"> <img src="http://attacker.com/assets/images/logo.png">

⚔️ سيناريو الهجوم 1: سرقة بيانات تسجيل الدخول

  1. الهاكر يرسل طلب مع Host: evil.com
  2. الصفحة تُعرض مع <form action="http://evil.com/loginuser">
  3. المستخدم يدخل username و password
  4. البيانات تُرسل إلى موقع الهاكر بدلاً من didon.online!
  5. الهاكر يحصل على: username + password + CSRF token

⚔️ سيناريو الهجوم 2: Password Reset Poisoning

  1. الهاكر يعرف email الضحية (مثلاً: admin@company.com)
  2. يرسل طلب password reset مع Host: evil.com
  3. الضحية يستلم email به: http://evil.com/reset?token=ABC123
  4. الضحية ينقر على الرابط
  5. الهاكر يحصل على reset token ويغير كلمة السر!

⚔️ سيناريو الهجوم 3: Web Cache Poisoning

  1. الهاكر يرسل Host: evil.com
  2. إذا كان هناك cache (Cloudflare, Varnish)
  3. الصفحة المسمومة تُخزن في الـ cache
  4. جميع المستخدمين يحصلون على الصفحة المسمومة!
  5. كل تسجيلات الدخول تذهب لموقع الهاكر

✅ الإصلاح:

في Laravel (.env):

APP_URL=http://didon.online:6052

في Laravel (config/app.php):

'url' => env('APP_URL', 'http://didon.online:6052'),

في Apache config:

# Validate Host header <If "%{HTTP_HOST} != 'didon.online:6052'"> Require all denied </If>

🔬 التحقق من الإصلاح:

# بعد الإصلاح، هذا الأمر يجب أن يفشل: curl -H "Host: evil.com" http://didon.online:6052/ # أو يُرجع روابط ثابتة لـ didon.online فقط