اود ان اشرك القارئ الكريم في الصوره الواقعيه التي تخص امن تطبيقات الويب، وكما يقولون، فليس اصدق من الارقام
أرقام وإحصاءات
- 75 بالمئه من الاختراقات تمت ضد تطبيقات الويب
- 97 بالمئه من المواقع عرضه للاختراقات
– مجموع جارتنر، http://www.gartner.com/
- 24 بالمئه من الاختراقات الناجحه تم تنفيذها من قبل جماعات اجراميه منظمه (2009)
- 25 بالمئه من الاختراقات الناجحه تم تنفيذها باستخدام تقنيه حقن السكويل([1]) (2009)
- 9 بالمئه من الاختراقات الناجحه تم تنفيذها باستخدام تقنيه الكود العابر للموقع (Cross Site Scripting) (2009)
- 54 بالمئه من الاختراقات الناجحه تمت ضد تطبيقات الويب (2009)
– فيرايزون بزنس، تقرير تحقيقات خرق البيانات، http://www.verizonbusiness.com/
- 82 بالمئه من المواقع تحتوي على الاقل على ثغره خطيره
- 5 ثغرات يحتويها كل موقع في المتوسط
- 61 بالمئه من المواقع تحتوي على ثغره مصنفه ضمن الكود العابر للموقع (Cross Site Scripting)
- 41 بالمئه من المواقع تقوم بتسريب معلومات امنيه مهمه
- 65 بالمئه من مواقع الخدمات الماليه تم اختراقها عن طريق ثغرات في تطبيقات الويب
– وايت هات سيكيوريتي، http://www.whitehatsec.com/
مغريات الهجوم على تطبيقات الويب
واذا حاولنا الاجابه عن السؤال الذي يفرض نفسه، وهو لماذا؟، لماذا هذه الارقام المتصاعده والتي تدل على ان هناك شيئا مغناطيسيا يجذب الهاكرز لاختراق تطبيقات الويب اكثر بكثير من هجومهم التقليدي على الشبكات والخوادم، وسوف احاول ان اوضح بعض الاسباب:
- الانتشار
تطبيقات الويب في كل مكان تقريبا، من الصعب ان تجد شركه او منظمه ما لم تستثمر بعض المال في انشاء موقع انترنت يحتوي على العديد من تطبيقات الويب المختلفه والتي تعمل 24 ساعه 7 ايام
- سهوله التنفيذ
فاذا كان تنفيذ هجوم إغراق العازل (Buffer Overflow) ضد نظام تشغيل ما او تطبيق ما يحتوي على العديد من التعقيدات، فان تنفيذ اختراقات تطبيقات الويب هو امر اكثر سهوله، فلتنفيذ بعض الاختراقات الناجحه، فان كل ما يحتاجه الهاكر هو مجرد متصفح ويب
- الكود المفصل
معظم تطبيقات الويب تتم كتابتها عن طريق مطورين قد تنقصهم الخبره اللازمه في كيفيه كتابه تطبيقات امنه، وهو مما يزيد بالتاكيد من فرص النجاح المتوقعه للقراصنه
- تجنب جدران النار
كما شرحت سابقا، مهمه جدران النار هي تنفيذ السياسه الخاصه بحجب الخوادم والشبكات التي تحتمي خلفه ومنع الوصول غير المخول لتلك المصادر. فليس من المنطق في شئ ان تقوم بانشاء موقع للانترنت مخصص للتعامل مع زبائنك(مثلا) ثم تقوم بتوصيف (Configure) جدار النار ليمنع الوصول الى ذلك الموقع، ولن يمكنك ان تفرق بين زبائنك المحتملين وبين القراصنه المتربصين
- حيويه الهدف
فتطبيقات الويب تتعامل مع العديد من الانظمه الاخرى، كقواعد البيانات، وخدمات الويب، ونظم الملفات – File Systems – وغيرها، مما يعني ان وجود ثغره ما في تطبيقات الويب قد يمكن الهاكر من اختراق عده انظمه اخرى على التوالي، بينما لو كان جل جهد الهاكر هو اختراق تلك الانظمه على حده، فان النجاح قد يكون صعب المنال مقارنه بنجاحه في اختراق تطبيقات الويب
- الهويه المجهوله
فاذا كان من الصعب ان يتم تنفيذ هجوم ما ضد شبكه ما دون ان يتم رصد الهجوم وايضا رصد المنفذ – خاصه مع وجود جدران النار – فان تنفيذ الهجوم على تطبيقات الويب هو امر يصعب رصده، خاصه اذا تم تحويلها عن طريق الـ Proxy – وهناك الكثير من خوادم الـ Proxy تقدم خدماتها مجانا – وبالتالي يصعب الوصول الى المصدر
المعمل الإفتراضي (Virtual Lab)
لجعل تجربه قراءة الكتاب ممتعه وعمليه ومفيده قدر الإمكان، سوف نحتاج الى انشاء معمل صغير لتجربه الكثير من تقنيات الهجوم وتسهيل عمليه فحص تطبيقات الويب، وقد قمت بتحضير قائمه من البرامج – اغلبها مفتوح المصدر – لتكون عونا لك في انشاء المعمل الخاص بك، والذي يمكنك ان تستخدمه ايضا في فحص تطبيقات الويب التي تقوم بتطويرها:
- Oracle VirtualBox
برنامج يقوم بانشاء جهاز افتراضي مستخدما العتاد الخاص بالجهاز المضيف ويشارك الجهاز المضيف في مصادره – الذاكره، القرص الصلب، بطاقه الشبكه وخلافه – ويتم تشغيله من خلال الجهاز المضيف، ويطلق على الجهاز الافتراضي الجهاز الضيف، بينما يطلق على الجهاز الحقيقي الجهاز المضيف، ومع ان عمليه إنشاء جهاز افتراضي ليست حتميه، الا انه من المفضل وضع تطبيقات الويب المعيبه أمنيا والتي سوف نستخدمها بغرض التجربه والتعلم على الجهاز الافتراضي و ليس من المفضل تثبيتها على جهازك، حيث انها تحتوي على ثغرات امنيه خطيره، لذا فمن الأفضل انشاء جهاز افتراضي مخصص لتثبيت تلك التطبيقات عليه
- Hacme Bank
موقع بنك افتراضي تم تطويره باستخدام C#.Net وخادم قواعد البيانات من مايكروسوفت، سوف تحتاج إلى .Net Framework الإصدار 1.1، وسوف تحتاج أيضا إلى خادم قواعد البيانات، وطبعا إلى خادم الويب IIS. يأتي البرنامج على هيئتين، مغلقه (تسهل عمليه تثبيت الموقع وتشغيله) ومفتوحه (تحتوي على كود التطبيق، وبالتالي تطلع الباحث على الأخطاء التي قام فريق تطوير Hacme Bank بارتكابها – عن قصد بغرض التعليم)
- Hacme Books
موقع افتراضي لمكتبه إلكترونيه تقدم خدمه استعراض الكتب وشرائها. تم تطوير ذلك الموقع باستخدام لغه البرمجه Java و HyperSQL كقاعده بيانات. أيضا يمكنك الإطلاع على كود البرنامج لفهم وتقييم خطوره الكود غير الآمن الذي قام بكتابته فريق التطوير
- Hacme Travel
هذا الموقع تم بناؤه باستخدام C++.Net ليحاكي مواقع السفريات…
- · HacmeCasinoRuby on Rails
- · HacmeShippingColdFusion
- Damn Vulnerable App (DVWA)
تمت كتابه هذا التطبيق باستخدام لغه PHP، وهو يأتي مثبتا ضمن تنوعيه اللينوكس الخاصه بفحص تطبيقات الويب، Samurai. يمكنك – إذا كنت تفضل لغه PHP في كتابه تطبيقات الويب – الإستعانه بذلك التطبيق المعيب أمنيا وتقوم بدراسته عن كثب لتعرف ما هي الأخطاء التي يمكن ان تقع فيها وكيفيه تفاديها
تطبيقات ويب كتبت بلغات مختلفه – C#.Net، Java، C++، Ruby on Rails، ColdFustion على التوالي – تم تصميمها لتحاكي الضعف والثغرات المحتمل تواجدها في تطبيقات الويب، هذه التطبيقات انشأت لتقوم بتوعيه المطورين بأهميه تفادي الأخطاء القاتله التي قد يقعون فيها وذلك من خلال تجربه تنفيذ واستغلال التهديدات المتعلقه بتلك الأخطاء عمليا، وسوف نقوم بتوضيح عده امثله من نقاط الضعف والتهديدات وكيفيه استغلالها، وبالطبع، كيفيه معالجه تلك الأخطاء وتفاديها، وهي الوجبه الرئيسيه التي يقدمها الكتاب، مع مراعاة التنوع في عرض تلك التهديدات من منظور لغات برمجيه مختلفه – سوف اقتصر على ثلاث لغات([2])، وهي C#.Net، Java، و PHP – مما يعزز احد الأفكار الجوهريه التي يحاول هذا الكتاب ان يقوم بتثبيتها، الا وهي انه ليس هناك لغه برمجه اكثر أمانا من لغه أخرى، ولكن هناك مطور واع للمخاطر الأمنيه، ومطور آخر غير واع لتلك المخاطر والتهديدات
- ساموراي
ليس فيلما سينيمائيا! انها تنويعه لينوكس تم اصدارها لتقوم بتجميع كل الأدوات اللازمه لفحص تطبيقات الويب تحت يد المطور في مكان واحد، مما يسهل عمليه فحص تطبيقات مواقع الويب
- OWASP LiveCD
تنويعة لينكوس مبنيه على «Ubuntu» – الذي هو بدوره قائم على تنويعة «Debian» – تحتوي كل مايحتاجه المطور لفحص تطبيقات الويب.
- Backtrack
إن هذه التنويعه هي التنويعه الذهبيه لفحص درجة الأمان على كافه المستويات – الشبكه، الخادم، التطبيق – وإن كانت ليست متخصصه في فحص تطبيقات الويب إلا أن لديها الكثير من الأدوات التي تساعد في هذا الهدف
([1]) تمت مناقشه هذه التقنيه للمره الاولى عام 1998، وتم نشر اول تقرير يقدم النصائح والارشادات لتفاديها عام 1999، وها نحن الان في عام 2011، وبعد اكثر من 10 سنوات، ما زال ذلك الوباء منتشرا كالنار في الهشيم، مما يدلك على ان اغلب مطوري المواقع والمسؤولين عنها في واد اخر تماما
([2])قمت باتباع عده معايير لاختيار تلك اللغات، منها الإنتشار، والتشابه – النسبي – بين بعض اللغات المستبعده – كلغه Perl – مع احدى اللغات التي قمت باختيارها – حيث ان هناك تشابه لاينكر بين لغه Perl ولغه PHP، وأيضا فإن نفس المفاهيم المطبقه على C#.Net من الممكن تطبيقها على VB.Net دون اختلاف جذري، مما يؤدي الى عموم النفع. حيث انه من الصعب ان نقوم بسرد تفصيلي لكيفيه حل كل مشكله امنيه تخص تطبيقات الويب في كل لغه من لغات البرمجه – بما فيها لغه C ولغه C++، واذا كنت تتعجب من امكانيه كتابه تطبيق ويب باستخدام هاتين اللغتين، فلا تعجب، الا ان عمليه التطوير سوف تأخذ وقتا اطول بلا شك، مع اضافه تهديدات جديده تخص هاتين اللغتين تحديدا، مثل تهديد إغراق العازل (Buffer Overflow)، ربما في نسخه لاحقه من هذا الكتاب!