
تحليل
ملاحظة: لقد كشفت عن هذا الخطأ بالكامل لفريق Freenet وعملت معهم للتحقق من تصحيحهم. تم نشر التصحيح الآن في أحدث إصدار من Freenet.
لقد اكتشفت مؤخرًا ثغرة أمنية في Freenet قد تسمح للمهاجم بإزالة إخفاء هوية الهدف أو إرسال مستندات ضارة عبر Freenet.
تؤثر هذه الثغرة على مستخدمي Freenet الذين يستخدمون Firefox كمتصفح لهم. إنها تسمح بإزالة إخفاء الهوية وسلوكيات ضارة أخرى على جهاز المستخدم. وهي موجودة في جميع الإصدارات حتى 1483.
يعمل هذا الاستغلال عن طريق استغلال الانفصال بين Firefox وFreenet فيما يتعلق بمعالجة أنواع MIME. يأتي Freenet مزودًا بمرشحات للعديد من أنواع المحتوى المختلفة - وقد بُذل جهد كبير لضمان أن المحتوى جيد التكوين وغير المُحتوي على نصوص برمجية فقط هو الذي يمكن عرضه دون عدد من التحذيرات للمستخدم.
يقوم Freenet عمومًا بعمل جيد في معالجة البيانات بالطريقة الصحيحة والسماح للمستخدم بتحديد ما إذا كان يريد معالجتها بطريقة أخرى.
من ناحية أخرى، فإن Firefox أكثر دقة إلى حد ما في كيفية تحديد نوع MIME للملف. وتحديدًا كما هو موثق هنا. معظم العمليات الموثقة في هذه الصفحة خارج نطاق سيطرة المهاجم، خاصة إذا كان يجب عليه الهجوم عبر Freenet. ومع ذلك، هناك شيء واحد يقع ضمن سيطرة المهاجم، وهو نوع MIME للبيانات التي يتم إدراجها. عند إدراج البيانات في شبكة Freenet، يمكن للمستخدم تحديد نوع MIME - عندما يُترك هذا الحقل فارغًا، تُعالج البيانات على أنها application/octet-stream وتتلقى كل المعالجة المناسبة فيما يتعلق بالتحذيرات.
ومع ذلك، عند الانتقال إلى قسم HTTP في وثائق Mozilla، نرى أن Firefox يقوم فعليًا بتخميناته الخاصة حول نوع MIME للبيانات عندما لا يتم استيفاء شروط معينة من قبل التطبيق الذي يقدم المحتوى. على وجه التحديد، عندما لا يتم إرسال ترويسة Content-Encoding بواسطة تطبيق، فإن Firefox يفحص المحتوى فعليًا ليقرر ما يجب فعله به. إذا كانت الكتلة الأولى من البيانات غير نصية، فسيتعامل Firefox مع الملف على أنه نوع MIME المشار إليه بالامتداد.
اتضح أن Freenet لم يكن يرسل هذه الترويسة في استجاباته، مما يسمح لنا بتحويل هذا إلى شيء قابل للاستخدام. نظرًا لأنه يمكن إدراج بياناتنا كنوع MIME text/plain، والذي من الواضح أنه لا يتلقى تصفية متطورة، ولكن يمكن تسليمه كأي نوع MIME يشير إليه امتداد الملف، لدينا الآن طريقة لتسليم مستند HTML غير مفلتر (أو PDF أو .docx...). هذا أمر كبير لأنه عادةً ما يُنصح بتحميل جميع المحتويات الخطرة إلى مجلد أو مساحة مؤقتة وفتحها خارج المتصفح.
هذا فيديو سريع للاستغلال وهو يعمل - في هذه الحالة لتسليم ملف HTML غير مفلتر.
للحصول على مثال عملي، قم بتثبيت 1483 أو إصدار سابق وانتقل إلى:
بالنسبة لأي شخص يجرب الأمر في المنزل، يمكنك الحصول على أحدث إصدار ضعيف من Freenet هنا.
إذًا كيف يمكننا استخدام هذا في العالم الحقيقي؟
اتضح أنه إذا قمت بالربط بالمحتوى الضار الخاص بك داخل Freenet على صفحة يتصفحها المستخدم بالفعل، فسيحرص Freenet على معاملة الملف كنوع المشار إليه بامتداده. سيرى Freenet أن الجزء الأول من بياناتنا ثنائي ويحذر المستخدم من أن ملفنا ضار.
:(
هذا يعني أننا إذا أردنا أن يشاهد هدفنا صفحتنا الضارة مع تشغيل JS عليها، فيجب علينا الربط بها خارجيًا. هذا جيد في الواقع، لأن أنظمة المراسلة الأكثر شيوعًا في Freenet لا تعمل من خلال وكيل الويب الخاص بـ Freenet.
على سبيل المثال، إذا تم الربط بـ URI التجريبي في هذه المقالة داخل FMS، فلن يكون هناك فحص إضافي ويمكننا تشغيل حمولتنا.
كل ما هو ضروري لإزالة إخفاء هوية عدد من مستخدمي Freenet هو إنشاء محتوى بعنوان مثير للاهتمام، وإدراج ملف مع الكتلة الأولى من البيانات كبيانات ثنائية، ثم إنشاء صفحة ويب مقنعة تُبلغ سرًا عن عنوان IP والنشاط في الخلفية. ادمج هذا مع مجموعة أدوات مثل إطار عمل BeEF وستحصل على بعض الفرص المثيرة للاهتمام.
يمكننا بالطبع أيضًا استخدام هذا كمتجه لتسليم ملف PDF ضار أو .docx أو ملفات أخرى والحصول على موطئ قدم أكثر ديمومة على جهاز المستخدم.
إصلاح هذا الخطأ بسيط للغاية - من الآن فصاعدًا، سيقوم FProxy دائمًا بتمرير ترويسة HTTP الخاصة بـ Content-Encoding عندما يقدم المحتوى. تخبر هذه الترويسة متصفح Firefox بمعاملة أنواع MIME بشكل صريح كما هو محدد بواسطة FProxy. ونتيجة لذلك، سيتم دائمًا عرض البيانات من نوع text/plain كنص عادي وليس كأي نوع MIME آخر.
كان هذا الخطأ، في المجمل، بسيطًا إلى حد ما - ومع ذلك كانت لديه القدرة على التأثير على وظائف Freenet بشكل كبير. يعد التحقق من نوع MIME أمرًا مهمًا حقًا، والدرس الكبير المستفاد من هذا الخطأ هو أن أنواع MIME لا تتم معالجتها دائمًا بطريقة متسقة عند تمرير البيانات من برنامج إلى آخر.
فقط أدخل بعض البيانات إلى Freenet بنوع MIME text/plain والكتلة الأولى تحتوي على بيانات ثنائية فقط. سيتعامل Firefox معها كأي نوع يحدده امتداد الملف وسيتم تسليمها إلى المستخدم مباشرة بدلاً من تصفيتها بواسطة Freenet. أرسلها إلى ضحاياك على FMS أو Frost. اجمع عناوين IP الخاصة بهم أو احصل على تشغيل حمولة ثنائية. اربح!