390 ألفًا. مواقع الويب مع مجلد .git مفتوح

في يوليو / تموز ، قرر الباحث الأمني ​​فلاديمير سميتكا فحص الإنترنت بحثًا عن وجود مجلدات .git مفتوحة بعد إجراء تدقيق مشابه مؤخرًا لنطاقات الإنترنت في جمهورية التشيك وسلوفاكيا.


تسرب


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


أسباب الضعف


يمكن للمهاجم رسم الكثير من المعلومات المهمة لأمان الموقع من دليل .git . هذا ما تبدو عليه شجرة المشروع النموذجية.


 ├── HEAD ├── branches ├── config ├── description ├── hooks │ ├── pre-commit.sample │ ├── pre-push.sample │ └── ... ├── info │ └── exclude ├── objects │ ├── info │ └── pack └── refs ├── heads └── tags 

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


في كثير من الأحيان ، كما هو متوقع ، تؤدي محاولة فتح المجلد .git ظهور خطأ HTTP 403 ، ولكن السبب ببساطة هو عدم وجود index.html / index.php وحقوق الفهرسة التلقائية للمجلد ، بينما لا تزال الملفات الفردية متاحة . للتأكد من أن الموقع ليس ضعيفًا ، يجب عليك فتح صفحة /.git/HEAD .


يحتوي هذا الملف على رابط لفرع المشروع الحالي.


 $ cat .git/HEAD ref: refs/heads/master 

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


وسائل الإنتاج


على الرغم من تعقيد المهمة وطموحها ، كانت التكاليف من حيث المال متواضعة. لكل شيء ، كل شيء استغرق 250 دولارًا أمريكيًا.


الخادم


استأجرت سميكا للمشروع 18 VPS و 4 خوادم مادية. ووفقًا له ، فإن اختياره لم يقع على AWS نظرًا لأنه لا يمكن حساب التكلفة الكاملة للخدمة ، مع الأخذ في الاعتبار الأحجام الهائلة المتوقعة لحركة المرور ومساحة القرص الكبيرة وتحميل وحدة المعالجة المركزية العالية. تم تحديد سعر VPS المستأجر مسبقًا.


قائمة المجالات


تعتمد القائمة على السجلات النصية لمشروع OpenData Rapid7 JSON .


مخطط قاعدة بيانات DNS إلى الأمام
 { "$id": "https://opendata.rapid7.com/sonar.fdns_v2/", "type": "object", "definitions": {}, "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "timestamp": { "$id": "/properties/timestamp", "type": "string", "description": "The time when this response was received in seconds since the epoch" }, "name": { "$id": "/properties/name", "type": "string", "description": "The record name" }, "type": { "$id": "/properties/type", "type": "string", "description": "The record type" }, "value": { "$id": "/properties/value", "type": "string", "description": "The response received for a record of the given name and type" } } } 

بعد إجراء بعض التصفية لنطاقات المستوى الأعلى ونطاقات المستوى الثاني ، لا تزال القائمة تحتوي على أكثر من 230 مليون إدخال .


بعد ذلك ، تم تقسيم قاعدة البيانات إلى كتل من 2 مليون سجل وتم توزيع الحمل عبر خوادم مختلفة باستخدام تطبيق PHP.


البرمجيات


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


لتحديد النظام الأساسي والملف الشخصي للمواقع المعرضة للخطر ، استخدمت Smitha الأداة المساعدة WAD ، استنادًا إلى قاعدة بيانات Wappalyzer ، وهي امتداد لمتصفح الويب الذي يسمح لك بتحديد التقنيات المستخدمة في الصفحة.


تم استخدام أدوات سطر الأوامر البسيطة مثل GNU Parallels أيضًا لتسريع وقت تنفيذ المعالج ومنع البرنامج النصي من التوقف بسبب تعليق واحد.


 cat sites.txt | parallel --bar --tmpdir ./wad --files wad -u {} -f csv 

النتائج


استغرق الفحص أسبوعين ، ونتيجة لذلك ، قام الباحث:


  • اكتشف 390 ألف موقع إلكتروني ضعيف ؛
  • جمع 290 ​​ألف عنوان بريد إلكتروني ؛
  • أبلغ 90 ألف متلقي للثغرة وجدت.

استجابة لجهوده ، تلقى سميثكا:


  • 18 ألف خطأ في تسليم الرسائل ؛
    • حوالي 2000 خطاب شكر.
    • 30 إنذارًا كاذبًا مع أنظمة المصائد.
    • 1 التهديد باستدعاء الشرطة الكندية ؛

منصة


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


يأتي Apache على رأس قائمة شعبية خادم الويب ، مع Nginx في المركز الثاني ، ونسخة الصينية Nginx Tengine فجأة في المركز الثالث.


كان نظام التشغيل الأكثر شعبية هو Ubuntu ، ثم Debian و CentOS في المركز الثالث.


نظام التشغيل


أصبح ترشيح CMS تقريبًا مسرحًا أحادي الممثل ، وهذا الممثل هو WordPress مع 85 ٪ من جميع المنصات الموجودة.


ما هي الخطوة التالية


إصلاح الثغرة أمر سهل.


.htaccess


 RewriteRule "(^|/)\.(?!well-known\/)" - [F] 

.nginx


 location ~ /\.(?!well-known\/) { deny all; } 

apache22.conf


 <Directory ~ "/\.(?!well-known\/)"> Order deny,allow Deny from all </Directory> 

apache24.conf


 <Directory ~ "/\.(?!well-known\/)"> Require all denied </Directory> 

ملف العلبة


 status 403 /blockdot rewrite { r /\.(?!well-known\/) to /blockdot } 

Source: https://habr.com/ru/post/ar422725/


All Articles