Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-22381 — اكتشاف CVE-2025-22381: Host Header Injection في مشروع Aggie مفتوح المصدر | Kitploit
أدوات/GitHubGitHub/pescada-dev/cve-2025-22381
هجمات كلمات المرورتحليل الثغرات الأمنيةالاستغلالالتصيد الاحتياليأمن الويبالتعلم والتعليم
GitHubpescada-dev/cve-2025-22381

CVE-2025-22381

اكتشاف CVE-2025-22381: Host Header Injection في مشروع Aggie مفتوح المصدر

عرض المستودع
1منذ 6 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2025-22381: حقن رأس المضيف في Aggie

تحليل تفصيلي وإثبات المفهوم لـ CVE-2025-22381، وهي ثغرة حقن رأس المضيف تم اكتشافها في مشروع Aggie مفتوح المصدر.



نظرة عامة على الثغرة+



معرف CVE: CVE-2025-22381

نُشر: أكتوبر 2025 (تعيين MITRE)

الإفصاح العام: فبراير 2026

المُبلِّغ: Anas Abderrahman Benbarek

تاريخ الاكتشاف: 17 سبتمبر 2025

المشروع المتأثر: TID-Lab/aggie

الإصدارات المتأثرة: جميع الإصدارات (بما في ذلك 2.6.1 والإصدارات الأقدم؛ لم يتم تطبيق أي إصلاح حتى فبراير 2026)

الخطورة: متوسطة إلى عالية (تقدير CVSS ~7.1–7.5)

التأثير: يمكّن هجمات التصيد التي تؤدي إلى سرقة رمز إعادة تعيين كلمة المرور واحتمال الاستيلاء على الحساب.



خلفية



أقضي قدرًا لا بأس به من الوقت في مراجعة مشاريع node.js مفتوحة المصدر على GitHub، خاصة تلك التي تتعامل مع تدفقات المصادقة. في سبتمبر 2025، أثناء النظر في مستودع Aggie، لاحظت شيئًا برز فورًا في منطق إعادة تعيين كلمة المرور. ما بدأ كقراءة روتينية للكود انتهى به الأمر ليصبح CVE-2025-22381 — ثغرة حقن رأس المضيف الكلاسيكية التي تسمح للمهاجم بالتحكم في المجال في رسائل البريد الإلكتروني لإعادة تعيين كلمة المرور.



كيف وجدتها



قمت باستنساخ المستودع وبدأت في قراءة الملفات تحت lib/api/، مع التركيز على أي شيء متعلق بالمصادقة وإنشاء البريد الإلكتروني.

الملف lib/api/reset-password.js يحتوي على منطق نقطة النهاية لـ /reset-password. الجزء الحرج موجود داخل مساعد sendEmail:

function sendEmail(user, req, callback) { var token = encodeToken(user);

mailer.sendFromTemplate({ template: 'forgotPassword', user: user, token: token, host: req.headers.host, // ← vulnerable protocol: req.protocol, acceptLanguage: req.headers['accept-language'] }, callback); }

السطر host: req.headers.host هو المشكلة. في Express، يأتي req.headers.host مباشرة من رأس HTTP الخاص بالمضيف، والذي يتحكم فيه المهاجم بالكامل. لا يوجد تحقق، ولا قائمة بيضاء، ولا تراجع إلى نطاق موثوق من التكوين.



التأكيد الأولي



قمت بسرعة بإعداد مثيل محلي باتباع تعليمات README (أوبونتو، nvm، npm install، secrets.json مع اختبار SMTP)، وبدأت الخادم، وأثارت إعادة تعيين كلمة المرور. استخدم رابط البريد الإلكتروني الذي تم إنشاؤه localhost:3000 كما هو متوقع.

ثم أعدت إرسال الطلب مع رأس مضيف معدل:

curl -X POST http://localhost:3000/reset-password
-H "Host: evil-phish.example"
-d "email=[email protected]"

احتوى البريد الإلكتروني (الملتقط عبر MailHog) على: http://evil-phish.example/reset-password?token=...

دليل قاطع. يثق التطبيق في رأس المضيف الذي يوفره العميل عند بناء رابط إعادة التعيين.



كيف يعمل الهجوم فعليًا



يرسل المهاجم طلب إعادة تعيين كلمة مرور لعنوان بريد إلكتروني للضحية، لكنه يضبط رأس المضيف على نطاق يتحكمون فيه (مثل evil-phish.example).

يولد Aggie رمز إعادة تعيين شرعي (من جانب الخادم، محدود الوقت، مشفر باستخدام سر التكوين).

يتم إرسال البريد الإلكتروني الذي يحتوي على رابط إلى نطاق المهاجم بدلاً من النطاق الحقيقي.

يتلقى الضحية البريد الإلكتروني وينقر على الرابط (شرط نجاح التصيد).

يهبط الضحية على خادم المهاجم.

يمكن لخادم المهاجم:

  • ببساطة عرض صفحة مزيفة 'فشل إعادة التعيين' وتجاهل الرمز بصمت، أو
  • التقاط الرمز من سلسلة الاستعلام (عبر تسجيل الخادم أو جافا سكريبت)، أو
  • وكيل الطلب إلى مثيل Aggie الحقيقي، التقاط الرمز، وإعادة توجيه المستخدم إلى صفحة إعادة التعيين الشرعية (حتى لا يلاحظ الضحية أي خطأ فورًا).

يستخدم المهاجم لاحقًا الرمز الملتقط على النطاق الحقيقي لإعادة تعيين كلمة مرور الضحية.

النقطة الأساسية: حقن رأس المضيف وحده لا يسمح للمهاجم باستخدام الرمز مباشرة. لا يزال المهاجم بحاجة إلى أن يزور الضحية الرابط الخبيث حتى يصل الرمز إلى بنية المهاجم التحتية. لهذا السبب تعتبر هذه ثغرة تمكّن التصيد بدلاً من الاستيلاء المباشر على الحساب دون تفاعل المستخدم.



الخطورة التقنية والتأثير



هذه مشكلة متوسطة إلى عالية الخطورة حسب السياق:

AV:N: يمكن الوصول عبر الشبكة

PR:N: لا تتطلب امتيازات

AC:L: تعقيد منخفض

UI:R: تتطلب تفاعل المستخدم

S:C: يمكن أن يتغير النطاق (يمتد التأثير إلى حساب الضحية على النطاق الشرعي)

C:L / I:H: تأثير على السرية والنزاهة لحساب الضحية

تدرج العديد من قواعد البيانات هذه الثغرة بنطاق CVSS ~7.1–7.5. أنا شخصيًا أعتبرها خطيرة في بيئات الإنتاج حيث يُستخدم Aggie للمراقبة الحساسة (الانتخابات، الأزمات)، حيث يمكن أن يؤدي التصيد الناجح هنا إلى الاستيلاء الكامل على الحساب.



إثبات المفهوم (مفصل وقابل للتكرار)



البيئة

Ubuntu 18.04/20.04 (كما هو موصى به)

Node 12.16 (وفقًا لـ .nvmrc)

MailHog: يعمل محليًا لالتقاط البريد الإلكتروني (docker run -d -p 8025:8025 -p 1025:1025 mailhog/mailhog)

Aggie مهيأ مع email.transport يشير إلى localhost:1025

خطوات تفصيلية

استنساخ وبدء Aggie:

git clone https://github.com/TID-Lab/aggie.git cd aggie nvm install npm install cp config/secrets.json.example config/secrets.json edit secrets.json → set adminPassword, add test SMTP if needed npm start

قم بإنشاء مستخدم اختبار عبر واجهة الويب أو مباشرة في MongoDB.

أثّر إعادة تعيين خبيثة:

curl -i -X POST http://localhost:3000/reset-password
-H "Host: evil-phish.example"
-H "Content-Type: application/x-www-form-urlencoded"
-d "email=[email protected]"

افتح MailHog: افحص البريد الإلكتروني المرسل. سيشير رابط إعادة التعيين إلى http://evil-phish.example/reset-password?token=...



الجدول الزمني للإفصاح



17 سبتمبر 2025: تم الاكتشاف + إثبات المفهوم المحلي

17 سبتمبر 2025: أرسل بريدًا إلكترونيًا إلى [email protected] مع التفاصيل الكاملة وإثبات المفهوم

17 سبتمبر 2025: تم التقديم إلى MITRE (طلب الخدمة 1926730 / MCID15453119)

9 أكتوبر 2025: خصصت MITRE CVE-2025-22381

أكتوبر–ديسمبر 2025: لم يُلاحظ أي تصحيح أو استجابة عامة

فبراير 2026: الإفصاح العام (هذه المقالة)



الإصلاح الموصى به



تغيير الكود

استبدل السطر الضعيف بقيمة موثوقة في lib/api/reset-password.js:

// In lib/api/reset-password.js, inside sendEmail() const config = require('../../config/secrets').get();

// Option A: Hard trust config value (recommended for single-domain) const host = config.appHost || 'localhost:3000';

// Then use it: mailer.sendFromTemplate({ template: 'forgotPassword', user: user, token: token, host: host, // Use the trusted variable protocol: config.environment === 'production' ? 'https' : req.protocol, acceptLanguage: req.headers['accept-language'] }, callback);

التكوين

أضف إلى secrets.json:

"appHost": "https://your-real-domain.com"



أفكار ختامية



يظل حقن رأس المضيف شائعًا بشكل مفاجئ في 2025–2026، خاصة في المشاريع التي بدأت منذ سنوات ولم تخضع لتدقيق كبير. Aggie أداة قيمة للتكنولوجيا المدنية ومراقبة الأزمات — آمل أن يطبق القائمون على الصيانة الإصلاح قريبًا.

إذا كنت تدير أو تستخدم Aggie، تحقق من نشرتك وقم بتصحيحها يدويًا حتى يتم إصدار تحديث رسمي. لا تتردد في التواصل إذا كانت لديك أسئلة أو تريد مناقشة مشكلات مماثلة في مشاريع أخرى.

شكرًا للقراءة وكونوا في أمان.

تنزيل الأداة