‫أساسيات اختبار اختراق المواقع و تطبيقات الويب‪

‫أساسيات اختبار اختراق تطبيقات الويب‪

‫منهج القرصنة الاخلاقية لـ تطبيقات الويب‪:‬‬

من خلال ‫هذا المقال سنتعرف على أساسيات اختبار اختراق المواقع و السيرفرات وطرق حماية تطبيقات الويب من الصفر. 

اذا كنت مبتدئ ولا تملك أي معرفة مسبقة حول مجال اختبار اختراق‬ تطبيقات ‫الويب فلا بأس. لأن هذا المقال مخصص للذين يودون الدخول في هذا المجال دون اي معرفة مسبقة. لان المعرفة والمهارة يمكن اكتسابها من خلال القراءة والممارسة المستمرة.


ما هو اختبار الاختراق (Penetration Testing)  ؟

اختبار الاختراق يختصرونه ايضا بـ Pentest هو عملية تستخدمها الشركات لاختبار أمان برامجها وبنيتها التحتية. في اختبار الاختراق ، تعمل مجموعة من محترفي الأمن كالهكر من أجل تحديد نقاط الضعف التي قد يستخدمها الهكر الحقيقي في تدمير المواقع والبيانات. 

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

على الجانب الآخر من الاختراق ، يختبر فريق الأمن التابع للشركة (الفريق الأزرق) ، المجالات التي يجب تعزيز أمنه لمنع اي محاولة للاختراق.‫ 

يمكن تقسيم عملية اختبار الاختراق إلى أربع مراحل‪ ‬أساسية:

مراحل اختبار الاختراق

  1. مرحلة ‫المسح والاستطلاع Scanning and Reconnaissance
  2. ‬مرحلة ‫البحث عن الثغرات ‪
  3. مرحلة ‫الاستغلال ‪Exploitation‬‬
  4. مرحلة  تنفيذ الاستغلال والحفاظ على الوصول (الاختراق) ‪Maintain access‬‬

1- مرحلة ‫المسح والاستطلاع Scanning and Reconnaissance

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

يمكن أن تكون الخطوة الأولى لجمع المعلومات بسيطة مثل البحث السريع في جوجل google.

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

ما الذي ستبحث عنه؟

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

  • عناوين البريد الإلكتروني.
  • أرقام الهواتف.
  • معلومات النظام.
  • الوظائف الشاغرة.
  • السيرة الذاتية.
  • أسماء المتصلين.

2- ‬مرحلة ‫البحث عن الثغرات ‪

بعد مرحلة الاستطلاع نحن بحاجة إلى القيام بالمزيد من البحث والتحليل وتحديد نقاط الضعف الموجودة بالتطبيق الهدف، بما في ذلك المسح الآلي ، والتحليل المستهدف ، والبحث اليدوي. وهنالك عدة أدوات مشهورة للقيام بذلك مثل: Nikto و Nmap و Nessus و OpenVAS وأداة Wireshark لالتقاط الحزم على الشبكة وتحليلها.

3- مرحلة ‫الاستغلال ‪Exploitation‬‬

في هذه المرحلة يتم استغلال الثغرات وتنفيذها للحصول على الصلاحيات والوصول لبيانات المستخدمين وحساباتهم البنكية الموجودة بقاعدة البيانات, وأشهر أداة تقوم بتنفيذ الاستغلالات هي المبتاسبلويت, كما يمكن ايضا استغلال ادوات اخرى مثل اداة Sqlmap الخاصة بتنفيذ ثغرات الحقن.

4- مرحلة تنفيذ الاستغلال والحفاظ على الاختراق

وتمثل أخر مرحلة في عملية اختبار الاختراق فبعد تنفيذ الاستغلال سيتحصل الهكر على صلاحيات تخوله للوصول لبيانات ومعلومات الخاصة الموجودة بالنظام المستهدف.
وهذه المرحلة يمكن تسميتها ايضا بـ Post-Exploitation Reporting أي تقارير ما بعد الاستغلال - وهي اعطاء تفاصيل أكثر حول الثغرات الموجودة وتوفير المعلومات حول التأثير المحتمل على الشركة إذا تم استغلالها وهذا يخص مُختبر الاختراق الاخلاقي.

أما ‫الاستهداف سيكون لـ ‪:‬‬
  • ‫الويب سيرفر 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‬وهي أداة ضرورية في أي عملية اختبار اختراق‬ ‫للويب‪.‬‬
  • ‫‪ :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