منهج القرصنة الاخلاقية لـ تطبيقات الويب:
من خلال هذا المقال سنتعرف على أساسيات اختبار اختراق المواقع و السيرفرات وطرق حماية تطبيقات الويب من الصفر.
اذا كنت مبتدئ ولا تملك أي معرفة مسبقة حول مجال اختبار اختراق تطبيقات الويب فلا بأس. لأن هذا المقال مخصص للذين يودون الدخول في هذا المجال دون اي معرفة مسبقة. لان المعرفة والمهارة يمكن اكتسابها من خلال القراءة والممارسة المستمرة.
ما هو اختبار الاختراق (Penetration Testing) ؟
اختبار الاختراق يختصرونه ايضا بـ Pentest هو عملية تستخدمها الشركات لاختبار أمان برامجها وبنيتها التحتية. في اختبار الاختراق ، تعمل مجموعة من محترفي الأمن كالهكر من أجل تحديد نقاط الضعف التي قد يستخدمها الهكر الحقيقي في تدمير المواقع والبيانات.الهدف من اختبار الاختراق هو توفير معلومات للشركة حول نقاط ضعفها. يشار إلى هذا في عالم الأمن عادة باسم الفريق الأحمر في الامن السيبراني.
على الجانب الآخر من الاختراق ، يختبر فريق الأمن التابع للشركة (الفريق الأزرق) ، المجالات التي يجب تعزيز أمنه لمنع اي محاولة للاختراق.
يمكن تقسيم عملية اختبار الاختراق إلى أربع مراحل أساسية:
مراحل اختبار الاختراق
- مرحلة المسح والاستطلاع Scanning and Reconnaissance
- مرحلة البحث عن الثغرات
- مرحلة الاستغلال Exploitation
- مرحلة تنفيذ الاستغلال والحفاظ على الوصول (الاختراق) Maintain access
1- مرحلة المسح والاستطلاع Scanning and Reconnaissance
على عكس ما نشاهده في أفلام الهكر، لا تبدأ الكتابة في الشاشة السوداء فقط 😁، ومن ثم يتم الاختراق النظام تلقائيًا. يُعد المسح والاستطلاع جزءًا أساسيًا من أي هجوم حيث يمكنه تفصيل المناطق المعرضة للخطر في النظام.
يمكن أن تكون الخطوة الأولى لجمع المعلومات بسيطة مثل البحث السريع في جوجل google.
يمكنك اعتبار جمع المعلومات مثل اقتحام منزل ليست هناك حاجة لكسر الباب للدخول إلى الداخل عندما تكون هناك نافذة مفتوحة. في جمع المعلومات، نريد أن نجد ما إذا كانت الشركة التي نختبرها قد تركت أي أبواب مفتوحة أو ربما نافذة مفتوحة.
يبدأ جمع المعلومات بطريقة خاملة Passive. نريد الحصول على أدلة حول شكل بنية الشركة وإذا كان هناك أي روتين يمكننا رسمه. يرجع ذلك إلى العثور على بعض المعلومات المسربة للعامة مثل:
- عناوين البريد الإلكتروني.
- أرقام الهواتف.
- معلومات النظام.
- الوظائف الشاغرة.
- السيرة الذاتية.
- أسماء المتصلين.
2- مرحلة البحث عن الثغرات
3- مرحلة الاستغلال Exploitation
4- مرحلة تنفيذ الاستغلال والحفاظ على الاختراق
- الويب سيرفر Web Server
- تطبيق الويب Web Application
- مستخدم الويب Web client
الويب سيرفر الـ Web Server:
هو تطبيق يعمل على نظام التشغيل الذي يستضيف تطبيق الويب مثل IIS وهي اختصار لـ Internet Information Services والتي تعمل على سيرفرات الويندوز, والـ Apache Hypertext Transfer Protocol والتي تستخدم على أنظمة اللينكس .يمكن اعتبار الويب سرفر جهاز كمبيوتر بمواصفات عالية جدا, فهو يقوم بتأمين خدمات عديدة تعمل على منافذ أو بورتات مفتوحة والتي تسمح لتطبيق الويب بالاتصال مع متصفح المستخدم.
الويب سيرفر يمكن أن يتضمن أخطاء امنية أو ثغرات وعلى مختبر الاختراق محاول الحصول عليها واكتشافها ومن ثم مهاجمة الخدمات التي تعمل على السيرفر للحصول على دخول غير مصرح به لملفات سيرفر الويب وملفات النظام ومن ثم يقوم بترقيعها bug-fixed.
تطبيق الويب Web Application
يعد تطبيق الويب تطبيقًا يتم معالجته مباشرةً عبر الإنترنت من خلال مستعرض ويب ، وبالتالي لا يتطلب التثبيت على أجهزة العميل، على عكس تطبيقات الأجهزة المحمولة.
بالطريقة نفسها التي يتم بها تثبيت مواقع الويب ، يتم تثبيت تطبيق الويب بشكل عام على سيرفر وتتم معالجته عن طريق تشغيل عناصر واجهة المستخدم باستخدام مستعرض ويب ، عبر شبكة كمبيوتر (الإنترنت ، إنترانت Intranet ، شبكة محلية Local Network، إلخ). مثل: مراسلة الويب وأنظمة إدارة المحتوى والمواقع الإلكترونية CMS والمدونات الإلكترونية Blogger Wordpress هي تطبيقات ويب.
مستخدم الويب Web client
المستخدم الداخلي هو الذي يقوم بإدارة تطبيق الويب سواء كان المدير أو المبرمج والمستخدم الخارجي (الزبون أو الزائر)
وكل المستخدمين هم عرضة للهجوم من طرف الهكر بواسطة الثغرات الأتية:
- cross-site scripting (XSS)
- cross-site request forgery (CSRF)
- الهندسة الاجتماعية Social Engineering أو كما يسميه البعض اختراق العقول.
الأدوات الأكثر شيوعا لفحص واكتشاف ثغرات الويب
معظم هذه الأدوات موجودة بنظام كالي لينكس وهناك أدوات كثيرة أخرى تؤدي نفس الغرض.بعض الأدوات التي ستحتاجها هي:
- : Burp Suiteوهي أداة ضرورية في أي عملية اختبار اختراق للويب.
- :Zed Attack Proxy(ZAP)تشبه Burp Suiteولكنها تحوي على باحث مجاني عن الثغرات قابل للعمل على تطبيقات الويب. فحص المواقع واستخراج الثغرات بأداة - OWASP ZAP
- :Nmapلمسح البورتات والخدمات والمنافذ
- :Nessus and Niktoللبحث عن الثغرات وفحص المواقع والخدمات.
- :Metasploitلديها استعمالات شتى اهمها تنفيذ الاستغلال وانشاء وتشفير البايلود فحص الثغرات والخدمات باستعمال بعض الموديلات.
- :Sqlmapمن أجل الحقن في قواعد البيانات SQL injection
- Social Engineering Toolkit (SET)للقيام بهجوم هندسة اجتماعية ضد مستخدم الويب وذلك بصنع صفحات مزورة لمواقع التواصل الاجتماعي وارسال تحديثات مزيفة ...
الحقن Injection
يحدث عندما يقوم مستخدم غير موثوق بإرسال بيانات إلى تطبيق الويب كجزء من تعليمة أو طلب. اوامر الحقن الخبيثة يمكن أن تتلاعب بتطبيق الويب ليقوم بتنفيذ تعليمات غير مرغوبة أو للوصول غير المسموح به للبيانات.
الحقن يحدث عندما يقوم مختبر الاختراق بإرسال مدخلات مخادع إلى تطبيق الويب والذي يقوم بعدها بعملية غير آمنة ،هذا النوع هو أقدم أنواع الهجمات ضد تطبيقات الويب ولكنه مازال متربع على عرش الثغرات فهو منتشر بشكل واسع وهو خطير فثغرات الحقن يمكن أن تظهر في كل مكان داخل تطبيق الويب.
بعض أنواع هجمات الحقن الأكثر شيوعا هي:- Structured query language (SQL) queries
- Lightweight directory access protocol (LDAP) queries
- XML path language (XPATH) queries
- Operating system (OS) commands
(Cross-site Scripting (XSS
ثغرات الـ XSS تسمح للمهاجم بتشغيل اكواد Javascript أو Html وسبب حدوثها هو عدم فلتره المدخلات القادمة من المستخدم.
ثغرة XSSتسمح لمختبر الاختراق او الهاكر تنفيذ سكريبت المستخدم وهذا يسمح له بسرقة جلسة المستخدم Session hijacking ويمكن أن يقوم بتنصيب Keyloggerأو إعادة توجيه المستخدم إلى مواقع خبيثة أو إلى أي شيء أخر يريده مختبر الاختراق.
1- Stored - مُخزّنه
2- Reflected - المنعكس, غير مُخزّنه
3- Dom-Based XSS تعتمد على دوم
يمكن استخدام هجمات (XSS) عبر المواقع لسرقة ملفات تعريف الارتباط الخاصة بالجلسات، مما يسمح للمهاجم بانتحال شخصية الضحية. بالإضافة إلى ذلك ، تم استخدام ثغرات XSS لإنشاء ديدان تنتشر على الشبكات الاجتماعية ، ونشر البرامج الضارة، وتشويه المواقع الإلكترونية، والتصيد للحصول على بيانات الاعتماد الخاصة بالمستخدمين.
كما تم استخدامها جنبًا إلى جنب مع تقنيات الهندسة الاجتماعية للتصعيد إلى مزيد من الهجمات الضارة مثل استرجاع المعلومات الخاصة.
معلومة:- سبب اختصار العبارة Cross Site Scripting الى XSS رغم أن الأصح هو CSS وهذا تجنبا للخلط بينها وبين لغه الأنماط القياسيه CSS وللتفريق بينهما.
- ثغرات XSS تتربع في المرتبه الثانيه فيخطورتها حسب تصنيف موقع OWASP بعد ثغرات الحقن
1- الثغرة المنعكسة او العاكسة XSS reflected
هو أكثر انتشارا في تطبيقات الويب ويعتبر الأقل ضررا, سبب اعتباره أنه هو الأقل ضررا ليس بسبب ما الذي يستطيع عمله ولكن عندما يتم إرسال البايلود payloadفي هجوم reflected XSSفإنه يكون فعال لطلب واحد فقط وأي مستخدم أخر يضغط على الرابط الذي يتضمن السكريبت الخبيث سيكون الشخص الوحيد المتأثر أو المصاب مباشرة بهذا الهجوم.
الهاكر يمكن أن يرسل نفس عنوان الرابط URLالخبيث إلى ملايين من الضحايا ولكن فقط الشخص الذي سيضغط على الرابط هو الذي سيصاب بالهجوم.2-الثغرة المخزنة Stored XSS
من الصعب ايجاده في تطبيقات الويب ولكن ضرره كبير جدا ولأنه يستمر عبر أكثر من طلب ويمكن أن يستغل عدد من المستخدمين في هجوم واحد ،و يحدث عندما يكون المهاجم قادر على حقن السكريبت الخبيث في التطبيق ويكون السكريبت متاح لكل المستخدمين الزائرين ويمكن أن يكون في قاعدة البيانات التي تستخدم من قبل صفحة الويب أو في المنتدى الذي يعرض الرسائل للمستخدم أو في أي تقنية تقوم بتخزين المدخلات.
المستخدمون الشرعيون يطلبون الصفحة و عندها فإن الاستغلال XSS exploitسوف يعمل في كل متصحفات المستخدمين.
كال النوعين من XSSلهما نفس payloadولكن يتم تسليمها بطرق مختلفة.3- ثغرة XSS المبنية على دوم Dom-Based XSS
هو هجوم XSS متقدم. يمكن أن تقوم البرامج النصية من جانب العميل الخاصة بتطبيق الويب بكتابة البيانات المقدمة من المستخدم إلى كائن المستند (DOM). تتم قراءة البيانات لاحقًا من DOM بواسطة تطبيق الويب وإخراجها إلى المستعرض.
إذا تم التعامل مع البيانات بشكل غير صحيح ، يمكن للمهاجم حقن حمولة Payload، والتي سيتم تخزينها كجزء من DOM وتنفيذها عند قراءة البيانات مرة أخرى من DOM.
غالبًا ما يكون هجوم XSS المستند إلى DOM بمثابة هجوم من جانب العميل ولا يتم إرسال البايلود إلى الخادم. هذا يجعل الأمر أكثر صعوبة للكشف عن جدران حماية تطبيقات الويب (WAFs) ومهندسي الأمن الذين يقومون بتحليل سجلات الخادم لأنهم لن يروا الهجوم أبدًا.
تتضمن كائنات DOM التي يتم معالجتها غالبًا عنوان (URL (document.URL ، والجزء الرئيسي من الرابط (location.hash) ، والمراجع (document.referrer).سرقة الكوكيز وإدارة الجلسة:
الجلسة هي ُمعرف فريد يٌخصص للمستخدم بعد عملية المصادقة المعرف, وهي مفتاح اختراق مستخدم الويب غالبا تتم بشكل وظائف التطبيق المتعلقة بالمصادقة وإدارة الجلسة صحيح وهذا يسمح لمختبر الاختراق بالوصول إلى كلمات السر و Session Token الخاصة بالجلسة تشغيل تطبيق الويب تحت المصادقة يتضمن ضبط كلمة السر وإعادة تعينها واستعادة الحساب.تطبيق الويب يستخدم إدارة الجلسة للحفاظ على مسار طلبات كل مستخدم ،وبدون إدارة الجلسة فإنك ستضطر إلى تسجيل الدخول بعد
كل طلب تقوم به ،لذلك تم إيجاد إدارة الجلسة وبالتالي المستخدم يجب عليه تسجيل الدخول مرة واحدة فقط عند زيارة موقع.
(:CSRF (Cross-site Request Forgery
تحدث عندما يكون لمختبر الاختراق أو الهاكر القدرة على إرسال طلب يقوم هو بانشائه لاغراض خبيثة إلى مستخدم ُمصادق مع التطبيق وهو يتضمن بارامترات ضرورية لإكمال الطلب للتطبيق بدون أن يدرك المستخدم الهدف ذلك. هذا شبيه ب reflected XSS والتي فيها يجب على مختبر الاختراق أن يجبر الهدف على تأدية عمل في تطبيق الويب (الضغط على رابط) السكريبت الخبيث يمكن أن يستمر في العمل في متصفح الهدف ولكن أيضا أن يؤدي إلى انشاء طلب شرعي لتطبيق الويب.في CSRFيمكن بعض نتائج تزوير الطلبات هي تغيير كلمة السر أو خلق مستخدم جديد أو خلق محتوى ويب جديد ،طالما أن مختبر الاختراق يعرف بالضبط ماهي البارامترات الضرورية لإكمال الطلب وأن الهدف ُمصادق مع التطبيق، فإن الطلب سيتنفذ كما لو أنه تم بمعرفة المستخدم الهدف.
في CSRFيمكن تزوير الطلبات وتغيير كلمة السر أو خلق مستخدم جديد أو خلق محتوى ويب جديد ،طالما أن مختبر الاختراق يعرف بالضبط ماهي البارامترات الضرورية لإكمال الطلب وأن الهدف ُمصادق مع التطبيق، فإن الطلب سيتنفذ كما لو أنه تم بمعرفة المستخدم الهدف.
الإعداد الخاطئ للحماية security misconfiguration attack
ربما هي ليست ثغرة بالمعنى التقليدي ولكن يمكن تصنيفها كضعف أمني, فالحماية الفعالة تتطلب إعدادات خاصة بضبط إطار العمل سواء كان (سيرفر تطبيق الويب أو قاعدة البيانات أوعلى مستوى نظام التشغيل) ,كل هذه الاعدادات يجب أن تقوم بضبطها بشكل صحيح بدل من ترك اعدادات الحماية الافتراضية ،وهذا يتضمن كل البرامج التي تتعامل مع قواعد البيانات والمكتبات التي يستخدمها التطبيق لأن هذه الاعدادات تصبح أكثر خطورة عندما لا تؤمن الحماية لمنع الوصول غير المسموح به للتطبيق.أمثلة على هذه الثغرة التي يمكن أن تكون في سيرفر الويب:- البرامج غير الضرورية Unnecessary software.
- تفعيل الخدمات غير الضرورية Activation of non-essential services.
- سياسات الحساب غير المحمية Unprotected account policies
- رسائل الخطأ المفصلة Detailed error messages