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

في مايو 2017 ، لفت
kyprizel الانتباه إلى حقيقة أن سطح مكتب التلغراف يمكنه تحميل أرشيفات ZIP إلى
خادمه tdesktop.com . كما اتضح فيما بعد ، ليس فقط ZIP ، ولكن في الداخل هناك معلومات حول تعطل التطبيق ، بحيث يمكن للمطور أن يدرس في أي ظروف حدث التعطل. بالإضافة إلى ذلك ، يمكن للمطور الوصول إليها من خلال واجهة الويب ، وذلك وفقًا لنموذج المصادقة. أضفت المضيف إلى الملاحظات ونسيت بأمان.

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

سنة أخرى مرت ، دعيت للتحدث في مؤتمر
#PartyHack في قازان. وعندما لا تتوفر لديك المواد اللازمة للتحدث ، تنظر إلى الملاحظات. ماذا لدينا هناك؟ مضيف مشبوه في برقية.
نظرًا لأن الخادم يستخدم PHP ، كما يتضح من crash.php ، فقد قررت أن أتصفح الملفات ذات هذا الامتداد قليلاً ، ثم صادفت info.php ، حيث كانت محتويات الدالة phpinfo () موجودة. أول شيء لاحظته هو استخدام خادم الويب Apache. كيف ذلك؟ التلغرام كله هو nginx ، وهنا أباتشي! والذي يستخدم اباتشي في عام 2019؟

ما الذي يتبادر إلى الذهن أولاً عندما تسمع أباتشي؟ أتذكر على الفور حول mod_status ، والتي بنيت معها بشكل افتراضي. تقوم هذه الوحدة بإنشاء صفحة بالحالة الحالية للخادم ، حول موارد النظام ، طلبات الخادم ، وسرعة معالجتها. في أغلب الأحيان ، يكون المسار إلى / حالة الخادم ، ونادراً ما يكون مجرد / حالة. لفهم مدى شعبية هذا الخطأ الإداري ، فقط تذكر أنه معلق على موقع الويب apache.org لسنوات عديدة
لسنوات عديدة ، كنت أقوم بتجميع المسارات إلى الملفات والدلائل التي يحتمل أن تكون خطرة في مشروع fuzz.txt ، لذلك كانت حالة الخادم طبيعية هناك.بشكل عام ، من الجدير بالذكر في حالة الخادم أنه يُظهر أيضًا عناوين IP للعملاء الذين يرسلون طلبات إلى الخادم. ولكن في هذه الحالة ، كانت جميع الطلبات من 127.0.0.1 إلى المجال الظاهري preston-desktop.com. لقد قام Nginx في المقدمة بتوجيه جميع الطلبات إلى apache المحلي ، لذلك لم يكن هناك إفصاح عن معلومات المستخدم. ومع ذلك ، كان الأمر يستحق وضع حالة الخادم لمراقبة ، هنا
نص صغير تم إعداده على الركبة يضع صفوفًا فريدة في قاعدة بيانات sqlite. لفترة قصيرة من الوقت ، تم جمع الكثير من الروابط الفريدة ، ولكن كانت هذه في الأساس طلبات للحصول على تحديثات (تشير إلى الإصدار) ، ولم يكن هناك أي تنزيلات تقريبًا. بعد فترة رأيت المشرف.

على الرغم من حقيقة أن لدينا طولًا محدودًا من الخطوط ، يمكن ملاحظة من السجلات أن المسؤول يقوم أحيانًا بتنزيل سجلات الخريف لمزيد من التحليل ، ويتم تمرير المعلمات المضحكة __login و __token هناك. وطلبات ما بعد في لقطة هي الألغام.
بالنظر إلى المصدر ، يمكنك ملاحظة طريقتين مثيرتين.
الأول هو
query_report ، الذي يحتوي على خيارات apiid وإصدار و dmp و platform إضافية. تقوم بإرجاع ما إذا كانت هناك حاجة إلى المزيد من السجلات حول تعطل التطبيق ، أو إذا كان الإصدار جديدًا بالفعل والأخطاء معروفة. تم إنشاء الآلية بحيث لا تحصل على الكثير ، ولكن لتصحيح فقط الفعلي.

والثاني هو
التقرير نفسه. بالفعل دون معلمات إضافية. إذا عادت كلمة إلى الطلب السابق الذي يشير إلى الحاجة إلى إرسال ملف تفريغ ، يتم إرسال الملف.

هناك يمكنك أن ترى أن البيانات يتم إرسالها باستخدام متعدد الأجزاء ، حيث يكون اسم الملف هو report.telegramcrash ، والتطبيق / نوع المحتوى الثماني.

وبالتالي ، يمكنك محاولة تحميل الملفات الخاصة بك واختبار نقاط الضعف المرتبطة بإلغاء حزم ZIP وغيرها من عمليات التحميل.

وسأحاول كذلك إرسال حمل مختلف للعثور على نوع من الضعف على الأقل ، إن لم يكن لخدعة واحدة. إذا استبدلنا أسماء المعلمات المعروفة من طلب آخر ، والقيم الصالحة التي أخذناها من حالة الخادم ، في طريقة التقرير ، فيمكننا محاولة استخدام هجوم سري لجميع قراصنة الويب.
باستخدام قوة megazord (علامة اقتباس مفردة) في معلمة النظام الأساسي ، كان من الممكن ملاحظة السلوك الشاذ للمورد.

هناك علامة اقتباس - خطأ ، لا توجد علامة اقتباس - كل شيء على ما يرام. للتحقق من الصلاحية ، يمكنك كتابة بعض التعبيرات المنطقية ، على سبيل المثال platform = mac 'AND' a '=' a. الجواب تم ، كما هو الحال مع تحميل ملف ناجح.
حسنًا ، لا عجب في أنهم توصلوا إلى الأتمتة ، لذلك أقوم بفصل sqlmap ، التي أصبحت بالفعل متربة من التقاعس عن العمل. توقع الأسئلة - تم تكوين كل شيء آخر بشكل جيد ، المستخدم في DBMS ليس متميزًا.

أُرسلت إلى security@telegram.org ، بعد ذلك بقليل تلقيت الرسالة المرغوبة حول الجائزة البالغة 30000 دولار.
مجرد مزاح ، 2000 دولار للكيللي ، و 500 دولار لل phpinfo وحالة الخادم ، وهو أمر جيد أيضًا. والذئاب آمنة والأغنام ممتلئة ، أو العكس.

لم أقم باختراق المستخدمين (المراسلات الخاصة بك آمنة) ، ولم أستطع تطوير الهجوم بشكل أكبر ، فالخادم الذي يحتوي على مقالب من المستخدمين العشوائيين (أي مقالب التعطل دون معلومات حول المعرف في التلغراف والهاتف والرسائل والدردشات) يمثل قيمة مشكوك فيها. من الناحية النظرية ، سيكون من الممكن ضخ الأعطال ودراستها واستغلالها بنفسك. بعد أن تعلمت كيف يتم إسقاط البرقيات ، كان من الممكن إسقاطها من الضحية ، ثم دراسة كل شيء يمكن إخراجه من سجلات السقوط ، إن أمكن تنزيله من خلال هذا الحقن.
فريد
الأصلي .