[size=18]
الهاكرز و مواقع الويب
هذا الفرع قد يكون متشعب جدا ، و يصعب فعلاً تغطيته في مقالة أو حتى عشرة مقالات لأن هناك العديد من الحالات و الأساليب التي يمكن نصنفها تحت مسمى إختراق المواقع ، فمن الممكن مناقشة هذا الموضوع من جهة مطوري الموقع ، أو من جهة أصحاب و ملاك المواقع ، و نظرا لأهمية الناحيتين ، فسأناقش الموضوع من هذين الجانبين بشكل مختصر و غير مخل بإذن الله.
أصحاب المواقع .. و الإختراق
أنت تمتلك موقعا ، اذا بياناتك متاحة لملايين البشر ، يفصلها عنهم فقط زوج من البيانات (إسم مستخدم و كلمة مرور ) ، الحصول على زوج البيانات هذا هو مهمة ذلك الهاكر ، و أحيانا يكون غير مضطر لمعرفة هذه البيانات ، ببساطة يمكن للهاكر إستغلال أحد ثغرات نظام التشغيل في سيرفر الشركة المستضيفة لموقعك ، أو إستغلال ثغرة من ثغرات التطبيقات التي تقوم بتركيبها في موقعك مثل المنتديات أو المجلات الإلكترونية أو أي تطبيق تقوم بتركيبه ، معرفة هذه الثغرات ليس بالأمر الصعب ، يكفي أن يقوم أحد الهاكرز بالإشتراك بالرسائل الإخبارية التي تأتي من شركة VB المنتجه لبرنامج المنتديات الشهير و التي تبلغ عن أي ثغرة تكتشف في النظام ليذهب ذلك الهاكر مسرعا يبحث عن منتدى لم يقم بالترقية بعد و يستغل تلك الثغرة فيه !
نصائح أمنية لأصحاب المواقع :
1- تأكد من شركة الإستضافة التي تتعامل معها من إصدارة نظام التشغيل و لوحات التحكم لديهم و قم بالبحث عن هذه الإصدارات و تأكد ما اذا كانت تحتوي على ثغرات خطيرة أو لا.
2- إستخدم في موقعك فقط البرمجيات التي تحتاج اليها فكرة الموقع فقط، اذا كنت لست بحاجة ماسة إلى سجل زوار ، فلا تضعه ، اذا لم تكن بحاجه لمحرك بحث داخلي ، فلا تضع.
3- ركب دائما أحدث النسخ من البرمجيات التي تستخدمها في الموقع ، سواء المنتديات أو المجلات الإلكترونية.
4- لا تبالغ في تركيب الإضافات الغير أساسية على التطبيقات ، هذه الإضافات ( تعرف أيضاً بالهاكات) تساهم كثيرا في فتح ثغرات في موقعك ، وذلك لأنها صممت و برمجت من قبل هواة ولم تبرمج من قبل الشركة المنتجه لنفس البرنامج ( على سبيل المثال الهاكات المستخدمة في برامج المنتديات هي في الغالب سبب إختراق معظم المنتديات ، و العجيب أننا نرى بعض أصحاب المنتديات يتفاخرون بعدد الهاكات التي يستخدمونها و التي هي في الحقيقة أبواب خلفية مفتوحة لإختراق مواقعهم !! )
5- أحرص دائما على تتبع أخبار البرمجيات التي تستخدمها في موقعك و تأكد من أنك تقوم بالترقية في حالة وجود ثغرة خطيرة وليس فقط في حالة وجود ميزة جديدة في البرنامج ، كثرة الترقيات المبالغ فيها قد تسبب لك المشاكل ايضاً.
6- لا تثق في أحد ، لا تعطي بيانات موقعك لأي جهة غير رسمية ، قد تحتاج الى تركيب برنامج أو تصليح مشكلة في موقعك ، تأكد من أنك تتعامل مع مواقع و جهات على درجة عالية من الموثوقية وليس مع بعض الهواة في المنتديات.
7- راقب سجلات الدخول Logs في موقعك متى ما أحسست أن هناك أمر مريب يجري ، سجلات الدخول كنز من المعلومات يجدر بك إستغلاله للأغراض الأمنية أو الإحصائية
8- حدد صلاحيات المشاركات في موقعك ، اذا كنت تمتلك منتدى فلا تسمح للأعضاء بإضافة وسوم HTML أو جافا سكريبت ، أحدهم قد يسرق ملفات الكوكيز الخاصة بك بهذه الطريقة !!
إذا لم تكن قادرا على تولي تنفيذ هذه النصائح الأمنية بنفسك ، فيمكنك إستئجار جهة خارجية لتقوم بذلك عنك ، أحد أفضل المواقع العربية في هذا المجال هو موقع الحلول الأمنية و المتخصص بتقديم الخدمات الأمنية لأصحاب المواقع
الهاركز يا مطوري تطبيقات الويب !
هل سمعت عن XSS ؟ ، هل تعرف ما هي حقن لغة الإستعلام SQL Injection ، هل قرأت عن إقتحام الجلسات Session Hijacking ، حسنا ، هل قرأت عن الـ CRLF Injection، ماذا عن الـ Directory Traversal ، و ماذا عن التلاعب بالمتغيرات Parameters Manipulation ?
حسناً ... هذه الأسئلة ستعطي إنطباع عن أن الموضوع متشعب جداً ، لم أذكر هنا الا أهم و أشهر أنواع المشاكل و الثغرات التي يستغلها الهاكرز لتدمير التطبيقات التي تبرمجها ، و اذا كنت لم تسمع بواحد أو أكثر من هذه المصطلحات ، فأنت في خطر !
بما أن هذا الجزء من المقالة يهم مطوري المواقع أكثر من غيرهم ، فلن أسهب كثيراً بشرح هذه المصطلحات و طريقة عملها ، أتوقع أنك كمطور قادر على البحث بنفسك عن تفاصيل هذه المصطلحات و معرفة ما هو المعني البرمجي لها بالضبط ، عموما ، سأذكر رؤوس أقلام عن هذه المصطلحات للمهتمين بتنمية ثقافتهم الأمنية في شتى المجالات.
الـ Cross Site ******ing
يطلق عليها إختصاراً xss وليس CSS تميزاً لها عن صفحات الأنماط المتعددة Cascading Style Sheet، بإختصار هي نوع من الهجمات التخريبية على تطبيقك يحدث عندما يتمكن أحدهم من إدخال بيانات مختطلة مع بعض الأوامر في نماذج صفحات موقعك ينتج عن ذلك تشويه شكل صفحة موقعك أو إظهار رسائل خطأ متكررة عند زيارة الصفحة التي تم تخريبها، أو سرقة بعض البيانات الحساسة من الزوار أو صاحب الموقع نفسه ! ، تنتج هذه المشكلة نتيجه عدم فحصك لمدخلات الزوار في النماذج و سماحك لهم بإدخال وسوم HTML أو Java ****** في نماذج الموقع مما يجعلهم قادرين على تلويث صفحات موقعك بشيفرات ليست جزء من شيفرة تطبيقك الذي كتبته ! يمكن للهاكر أيضاً العبث في المتغيرات التي يمررها تطبيقك عن طريق عناوين URL و إضافة أجزاء اليها تجعله قادر على السيطرة جزئيا أو كلياً على تطبيقك ، أو على الأقل تشويه شكل التطبيق ، لعلك تتذكر عزيزي القارئ الثغرة التي كان مصاب بها نظام بريد الـ Hotmail قبل سنتين تقريبا ، و التي كانت تسمح للهاكر بقراءة صندوق البريد الوارد للضحية ، تلك الثغرة كانت تصنف تحت الـ XSS !
الـ SQL Injection
تحت هذه النقطة سأحيلك عزيزي القارئ إلى مقالة كتبتها سابقا عن هذا الموضوع بالتحديد ، المقالة هي : الـ SQL Injection سلاح الدمار الشامل ضد تطبيقات الويب ، أتمنى أن تستمتع بقراءة تلك المقالة ، الموضوع خطير و يستحق مقالة منفردة.
إقتحام الجلسات Session Hijacking
إقتحام الجلسات هي عملية السيطرة على جلسة المستخدم Session الذي يقوم بإستخدام النظام ، عملية إقتحام الجلسه تلزم أن يقوم الهاكر بإلتقاط رقم الجلسة Session ID ، أو توليد إجباري لها Brute Force أو إعادة توليد للرقم Reverse Engineering ، قد يبدو المفهوم صعب حالياً لذا سأسترسل بشرحه أكثر.
من المعروف أن هناك نوعين من الجلسات الجلسات الدائمة Persistent وهي التي يتم من أجلها تعريف ملفات الإرتباط (الكوكيز) و حفظها في جهاز المستخدم لكي يتعرف عليه النظام عند عودته في أي وقت مرة أخرى ! ، النوع الثاني هي الجلسات الغير دائمة non-Persistent وهي التي تنتهي بمجرد إغلاق المستخدم للمتصفح ، في كلا النوعين يتم تعريف رقم جلسة Session ID للمستخدم ، رقم الجلسه هذا يستخدم لمعرفة متغيرات المستخدم الذي يرسلها أو يستقبلها خلال جلسته على النظام ، هذا الرقم ينشئ عادة بشكل إفتراضي من لغة البرمجة التي تستخدمها من خلال رقم أي بي المستخدم وقت الجلسه يدمج معها بعض المتغيرات الأخرى ، بعض المبرمجين يكتفي بتوليد هذا الرقم بشكل إفتراضي دون أن يسعى لتشفيره أو إضافة المزيد من العوامل عليه لجعل عملية التوليد الإجباري أو إعادة التوليد له صعبة ، و هنا تكمن المشكلة حيث يقوم الهاكر بمحاولة توليد رقم الجلسه بمعرفة بعض المعطيات اللحظية و يرسلها عن طريق HTTP Request إلى النظام الذي يقرأ رقم الجلسه و يقارنه برقم الجلسه الموجود لديه في الذاكرة ، فإذا تطابق ، فهذا يعني من وجهة نظر النظام أن الهاكر هو المستخدم الحقيقي ، و يمنحه بذلك حق الوصول لمنطقة المستخدم الخاصة ( حسابه البنكي على سبيل المثال !! ) ، الجدير بالذكر أن هجمات الـ xss يمكن أن تستخدم للإستيلاء على الجلسات و ذلك عن طريق تمرير كود جافا سكربت للنظام يقوم بقراءة رقم جلسة المستخدم و ارسال هذا الرقم للهاكر !
نصائح لتجنب هذا النوع من المشاكل
1- حاول تشفير رقم الجلسه و تعقيدها قدر المستطاع
2- إستخدم الـ SSL لتشفير كافة البيانات الحساسة المرسلة و المستقبلة من و إلى نظامك
3- برمجياً قم بإنهاء أي جلسه يمضي عليها وقت كافي تقدر بأن المستخدم خلالها قد إنتهى فعلاً من عمله خلالها أو انه قد ترك شاشة النظام مفتوحة و لم يعد يستخدمها
4- حصن نظامك ضد هجمات الـ XSS
الـ CRLF Injection
مصطلح CRLF هو إختصار لـ Carriage Return , Line Feed ، الـ CR هو رمز الأسكي 13 و الـ LF هو رمز الأسكي 10 ، هذان الرمزان يستخدمها الويندوز عند الضغط على زر Enter ( أي للنزول إلى سطر جديد )، نظام لينكس يستخدم فقط الرمز LF ، بإختصار هذا النوع من الهجمات ليس خطير للغاية ، أقصى ما يمكن للهاكر فعله من خلال هذه النوعية من الثغرات هو تشويه شكل الصفحة ، بالتأكيد هذه المشكلة قد تكون حساسه حسب نوعية التطبيق الذي تقوم ببرمجته. هذا النوع من الهجوم يكون أيضا بسبب عدم فحص مدخلات المستخدم ( تماما كالـ SQL Injection و الـ xss ) ، تأكد من أن المستخدم لا يدخل علامة \\\\n\\\\r في المدخلات ( الا في الأماكن التي يسمح بها للمستخدم بإستخدام هذه الرموز للنزول الى سطر جديد ) ، مثلا في نص الموضوع الذي يكتبه العضو في المنتدى يجب أن تسمح له بإستخدام زر Enter ( الذي يتحول عند الضغط عليه إلى \\\\n\\\\r ولكن غير مرئية ! ) ، ولكن في عنوان الموضوع سيكون السماح للمستخدم بإدخال رمز CRLF مشكلة كبيرة !!
التجول في المجلدات Directory Traversal
هذا النوع من الهجمات خطر فعلا ، لن أبالغ اذا قلت انه اخطر أنواع الهجمات على الإطلاق ، ما يخفف من وطئته هو أنه صعب التطبيق لأن التطبيقات التي يمكن إستغلال هذا النوع من الثغرات فيها محدودة جداً ، ولكن هذا لا يمنع من أنه خطر و خطر جداً ! فكرة هذا النوع من الهجمات ببساطة هو أن يتمكن الهاكر من الخروج عن نطاق مجلد الجذر للموقع Root directory إلى مجلدات أخرى تعلو المجلد الجذري في المستوى ، دعني أضرب مثال لتوضيح الصورة ، في سيرفرات الويندوز التي تعمل بالـ IIS يكون مجلد الجذر للموقع عادة هو :
C:\\\\Inetpub\\\\wwwroot
وهذا المجلد هو الذي تتواجد فيه ملفات موقعك ، و بالتالي فإن الزوار سيتمكنون فقط من تصفح الملفات الموجودة في هذا المجلد و المجلدات الفرعية الموجود بداخله ، ومنها على سبيل المثال مجلد news ، الصورة في الأسقل تعطيك إنطباع عن التسلسل الشجري للمجلدات التي سأضرب مثال عليها .
ثغرة من ثغرات تطوير المواقع
الأن تخيل لو أن لديك عنوان في تطبيقك الذي برمجته بهذا الشكل
http://www.yoursite.com/news/show.aspx?view=file.htmlالعنوان يقوم بإستدعاء الملف file.html و عرضه للمستخدم ، الملف file.html يفترض أن يكون موجود في نفس مجلد news ، إفترض الأن لو أن الهاكر قام بالتلاعب في العنوان و كتبه بهذا الشكل :
http://www.yoursite.com/news/show.as...ows/system.iniمصيبة ... لقد تمكن من مشاهدة ملف الـ System.ini !! ماذا لو أن التطبيق الذي برمجته يسمح بالتعديل على محتوى الملف ، سيتمكن الهاكر حينها من التعديل على ملف System.ini ، مما يعني تحكم كامل في موقعك من نظام التشغيل ، ليس فقط في الموقع بل و في كامل السيرفر المستضيف لموقعك ! الأسوء من ذلك تخيل لو ان نظامك يسمح بتشغيل بعض التطبيقات على الموقع عن طريق أوامر الشل ( يفترض أن لا تبرمج هذا النوع من التطبيقات ! ) ، لو تمكن الهاكر من الخروج من المجلد الجذري كما في المثال السابق ، قد يتمكن من الوصول الى سطر الأوامر الرئيسي و تنفيذ أمر Format للسيرفر بأكمله !!
هذا النوع من الهجمات يمكن أن يحل بطريقتين ، و برأيي يجب أن تستخدم الطريقتان لحل المشكلة :
1- من خلال الشيفرة التي تكتبها ، تأكد من فحصك لكافة المدخلات و المتغيرات الممررة إلى النظام ، تأكد من أنها تقع ضمن النطاق المسموح به
2- من خلال إعدادات السيرفر الذي تمتكله ( أو تمتلكه الشركة المستضيفه لموقعك ) يمكن ضبط هذه الإعدادت بحيث يتم منع أي طلب للوصول الى أي ملف خارج المجلد الجذري للموقع نفسه ، قم بفحص السيرفر بنفسك مبدئيا عن طريق السماح من خلال الشيفرة بأن تفتح ملف يقع خارج المجلد الجذري لموقعك ، إن إستطعت ذلك فهذا يعني أن إعدادات السيرفر المستضيف لموقعك غير آمنة و يجب أن تعدل بحيث يمنع السيرفر نفسه طلب أي ملف خارج نطاق المجلد الرئيسي ، أطلب من الشركة المستضيفة لموقعك تعديل ذلك ، و بدورك عدل الشيفرة كما ذكرنا في النقطة رقم 1 لمزيد من الحماية .