Professional Documents
Culture Documents
كتيب تطبيق الويب ديد
كتيب تطبيق الويب ديد
هذا الكتاب هو دليل عملي الكتشاف واستغالل العيوب األمنية في تطبيقات الويب .نقصد بـ "تطبيق الويب" تطبي ًقا يتم الوصول إليه باستخدام متصفح الويب
للتواصل مع خادم الويب .ندرس مجموعة واسعة من التقنيات المختلفة ،مثل قواعد البيانات وأنظمة الملفات وخدمات الويب ،ولكن فقط في السياق الذي تستخدم
فيه تطبيقات الويب .إذا كنت تريد معرفة كيفية تشغيل عمليات مسح المنفذ ،أو مهاجمة جدران الحماية ،أو اختراق الخوادم بطرق أخرى ،نقترح عليك البحث
في مكان آخر .ولكن إذا كنت تريد معرفة كيفية اختراق تطبيق ويب ،وسرقة البيانات الحساسة ،وتنفيذ إجراءات غير مصرح بها ،فهذا هو الكتاب المناسب لك.
هناك ما يكفي من المثير والممتع أن نقول عن هذا الموضوع دون أن نبتعد عن أي منطقة أخرى .نظرة عامة على هذا الكتاب إن تركيز هذا الكتاب عملي للغاية.
بينما نقوم بتضمين الخلفية والنظرية الكافية لك لفهم نقاط الضعف التي تحتوي عليها تطبيقات الويب ،فإن شاغلنا األساسي هو المهام والتقنيات التي تحتاج إلى
إتقانها القتحامها .طوال الكتاب ،نوضح الخطوات المحددة التي تحتاج إلى اتخاذها للكشف عن كل نوع من الثغرات وكيفية استغاللها ألداء إجراءات غير مصرح
ضا مجموعة كبيرة من األمثلة الواقعية ،المستمدة Wمن سنوات عديدة من المؤلفين ،توضح كيف أن أنوا ًعا مختلفة من العيوب األمنية تظهر في بها .نضمّن أي ً
تطبيقات الويب اليوم .عادة ما يكون الوعي األمني سيف ذو حدين .تما ًم ا كما يمكن لمطوري التطبيقات االستفادة من فهم األساليب التي يستخدمها المهاجمون ،
القراصنة مقدمة xxv 70779flast.qxd: WileyRed 9/14/07 3:12 PMيمكن أن يستفيد xxvمن معرفة كيف يمكن للتطبيقات الدفاع عن نفسها بفعالية.
ض ا بالتفصيل اإلجراءات المضادة التي يمكن أن تتخذها التطبيقات إلحباط المهاجم .بالنسبة ألولئك باإلضافة إلى وصف الثغرات األمنية وتقنيات الهجوم ،نصف أي ً
منكم الذين يقومون باختبارات اختراق تطبيقات الويب ،سيمكنك هذا من تقديم نصيحة عالجية عالية الجودة ألصحاب التطبيقات التي تعرضها للخطر .من يجب
أن يقرأ هذا الكتاب الجمهور األساسي لهذا الكتاب هو أي شخص لديه مصلحة شخصية أو مهنية في مهاجمة تطبيقات الويب .كما أنها تستهدف أي شخص مسؤول
عن تطوير وإدارة تطبيقات الويب -معرفة كيفية عمل عدوك سيساعدك على الدفاع ضدهم .نفترض أن القارئ على دراية بمفاهيم األمان األساسية ،مثل عمليات
تسجيل الدخول وعناصر التحكم في الوصول ،ولديه فهم أساسي لتقنيات الويب األساسية ، Wمثل المتصفحات وخوادم الويب و .HTTPومع ذلك ،سيكون من
السهل عالج أي ثغرات في معرفتك الحالية بهذه المجاالت ،من خالل التفسيرات الواردة في هذا الكتاب أو المراجع في مكان آخر .في سياق توضيح العديد من
فئات العيوب األمنية ،نقدم مقتطفات الشفرة توضح كيف يمكن أن تكون التطبيقات عرضة للخطر .هذه األمثلة بسيطة بما يكفي لفهمها Wدون أي معرفة مسبقة للغة
المعنية ولكنها ستكون مفيدة للغاية إذا كانت لديك بعض الخبرة األساسية في قراءة أو كتابة التعليمات البرمجية .كيفية تنظيم هذا الكتاب يتم تنظيم هذا الكتاب بما
جديد ا في اختراق تطبيقات الويب ،فيجب عليك قراءة الكتاب من البداية إلىً يتماشى تقريبًا مع التبعيات بين الموضوعات المختلفة التي تمت تغطيتها .إذا كنت
النهاية ،واكتساب Wالمعرفة والفهم الذي تحتاجه للتعامل مع الفصول الالحقة .إذا كان لديك بالفعل بعض الخبرة في هذا المجال ،يمكنك القفز مباشرة إلى أي فصل
أو قسم فرعي يثير اهتمامك بشكل خاص .عند الضرورة ،قمنا بتضمين مراجع تبادلية للفصول األخرى ،والتي يمكنك استخدامها لسد أي ثغرات في فهمك .نبدأ
بثالثة فصول لتحديد السياق تصف الحالة الحالية ألمان تطبيقات الويب واالتجاهات التي تشير إلى الكيفية التي من المحتمل أن تتطور في المستقبل القريب .ندرس
مشكلة األمان األساسية التي تؤثر على تطبيقات الويب وآليات الدفاع التي تنفذها التطبيقات لمعالجة هذه المشكلة .نوفر أي ً
ضا مقدمة في التقنيات الرئيسية
المستخدمة Wفي تطبيقات الويب اليوم .يتعلق الجزء األكبر من الكتاب بموضوعنا األساسي -التقنيات التي يمكنك استخدامها القتحام تطبيقات الويب .يتم تنظيم هذه
المواد حولها
المهام الرئيسية التي تحتاج إلى تنفيذها لتنفيذ هجوم شامل :من رسم خرائط وظائف التطبيق والتدقيق ومهاجمة آليات الدفاع األساسية ، Wإلى البحث عن فئات معينة
من العيوب األمنية .يختتم الكتاب بثالثة فصول تجمع بين الخيوط المختلفة المقدمة داخل الكتاب .نصف عملية العثور على الثغرات األمنية في شفرة مصدر
التطبيق ،ونراجع األدوات التي يمكن أن تساعدك عند اختراق تطبيقات الويب ،ونقدم منهجية تفصيلية لتنفيذ هجوم شامل وعميق ضد هدف محدد .يصف الفصل
األول "أمان تطبيق الويب (في)" الحالة الحالية لألمان في تطبيقات الويب على اإلنترنت اليوم .على الرغم من التأكيدات الشائعة ،فإن غالبية التطبيقات غير آمنة
ويمكن اختراقها بطريقة ما بدرجة متواضعة من المهارة .تنشأ نقاط الضعف في تطبيقات الويب بسبب مشكلة أساسية واحدة :يمكن للمستخدمين تقديم مدخالت
عشوائية .في هذا الفصل ،ندرس العوامل الرئيسية التي تساهم في ضعف الوضع األمني لتطبيقات اليوم ،ونصف كيف يمكن أن تتسبب العيوب في تطبيقات
الويب في ترك البنية التحتية التقنية األوسع للمؤسسة معرضة بشدة للهجوم .يصف الفصل " ، 2آليات الدفاع األساسية" ،آليات األمان الرئيسية التي تستخدمها
تطبيقات الويب لمعالجة المشكلة Wاألساسية المتمثلة في أن جميع مدخالت Wالمستخدم غير موثوق بها .هذه اآلليات هي الوسيلة التي يدير بها التطبيق وصول
المستخدم ،ويعالج مدخالت المستخدم ،ويستجيب للمهاجمين ،والوظائف المقدمة للمسؤولين إلدارة ومراقبة التطبيق نفسه .تمثل آليات األمان األساسية للتطبيق
أيضً ا سطح هجومه األساسي ،وتحتاج إلى فهم كيف تهدف هذه اآلليات إلى العمل قبل أن تتمكن من مهاجمتها Wبشكل فعال .يقدم الفصل " ، 3تقنيات تطبيق الويب"
،مقدمة أولية حول التقنيات الرئيسية التي من المحتمل أن تواجهها عند مهاجمة Wتطبيقات الويب .يغطي هذا جميع الجوانب ذات الصلة ببروتوكول ، HTTP
والتقنيات المستخدمة Wبشكل شائع من جانب العميل والخادم ،والمخططات المختلفة المستخدمة لترميز البيانات .إذا كنت بالفعل على دراية بتقنيات الويب
الرئيسية ،فيمكنك تصفح هذا الفصل بسرعة .يصف الفصل الرابع " ،رسم خريطة التطبيق" ،التمرين األول الذي يجب عليك القيام به عند استهداف تطبيق
جديد ،وهو جمع أكبر قدر ممكن من المعلومات حوله ،من أجل رسم خريطة لهجوم وصياغة خطتك للهجوم .تتضمن هذه العملية استكشاف التطبيق وفحصه
لفهرسة كل محتوياته ووظائفه ،وتحديد جميع نقاط الدخول إلدخال المستخدم واكتشاف التقنيات المستخدمة .يصف الفصل " ، 5تجاوز عناصر التحكم من جانب
العميل" ،المجال األول للضعف الفعلي ،والذي ينشأ عندما يعتمد التطبيق على عناصر التحكم المنفذة على جانب العميل من أجل أمانه .عادة ما يكون هذا النهج
معي ًب ا ،ألنه يمكن التحايل على أي ضوابط من جانب العميل بالطبع .الطريقتان الرئيسيتان اللتان تجعلهما التطبيقات عرضة للخطر هما( :أ) إرسال البيانات عبر
العميل بافتراض أن هذا لن يتم تعديله ،
و (ب) االعتماد على عمليات الفحص من جانب العميل إلدخال المستخدم .في هذا الفصل ،ندرس مجموعة من التقنيات المثيرة لالهتمام ،بما في ذلك عناصر
التحكم خفيفة الوزن التي يتم تنفيذها داخل HTMLو HTTPو JavaScriptوالمزيد من عناصر التحكم في الوزن الثقيل باستخدام تطبيقات Javaالصغيرة
وعناصر تحكم ActiveXوكائنات .Shockwave Flashتدرس الفصول من 6إلى 8بعض أهم آليات الدفاع التي يتم تنفيذها داخل تطبيقات الويب :تلك
المسؤولة عن التحكم في وصول المستخدم .يفحص الفصل السادس ، "Attacking Authentication " ،الوظائف المختلفة التي تضمن بها التطبيقات ضمان
ضا الوظائف المتعلقة بالمصادقة Wالطرفية مثل تسجيل المستخدم وتغيير كلمة المرور واستعادة هوية مستخدميها .يتضمن ذلك وظيفة تسجيل الدخول الرئيسية وأي ً
الحساب .تحتوي آليات المصادقة Wعلى ثروة من نقاط الضعف المختلفة ،في كل من التصميم والتنفيذ ،والتي يمكن للمهاجم Wاالستفادة منها للوصول غير المصرح
به .وتتراوح هذه العيوب الواضحة ،مثل كلمات المرور السيئة وقابلية التأثر لهجمات القوة الغاشمة ، Wإلى المشكالت Wاألكثر غموضا ً داخل منطق المصادقة.
ض ا بالتفصيل نوع آليات تسجيل الدخول متعدد المراحل المستخدمة في العديد من التطبيقات المهمة لألمان ،ونصف األنواع الجديدة من الثغرات التي ندرس أي ً
تحتوي عليها كثيرً ا .يفحص الفصل السابع "مهاجمة إدارة الجلسة" اآللية التي تكمل من خاللها معظم التطبيقات بروتوكول HTTPعديم الحالة بمفهوم الجلسة ذات
الحالة ،مما يمكنهم من تحديد كل مستخدم بشكل فريد عبر عدة طلبات مختلفة .هذه اآللية هي هدف رئيسي عندما تهاجم تطبيق ويب ،ألنه إذا كان بإمكانك
كسرها ،فيمكنك تجاوز تسجيل الدخول والتنكر بفعالية كمستخدمين آخرين دون معرفة بيانات اعتمادهم .نحن ننظر إلى العديد من العيوب الشائعة في توليد ونقل
الرموز المميزة للجلسة ،ونصف الخطوات التي يمكنك اتخاذها الكتشاف واستغاللها .يفحص الفصل " ، 8الهجوم على عناصر التحكم في الوصول" ،الطرق
التي تفرض بها التطبيقات بالفعل ضوابط الوصول ،باالعتماد على آليات المصادقة Wوإدارة الجلسة للقيام بذلك .نصف الطرق المختلفة التي يمكن بها كسر ضوابط
الوصول والطرق التي يمكنك من خاللها اكتشاف نقاط الضعف هذه واستغاللها .يغطي الفصل " ، 9رمز الحقن" ،فئة كبيرة من نقاط الضعف ذات الصلة ،والتي
تنشأ عندما تقوم التطبيقات بتضمين إدخال المستخدم في التعليمات البرمجية المفسرة بطريقة غير آمنة .نبدأ بفحص مفصل لنقاط الضعف في حقن ، SQLوالتي
تغطي مجموعة كاملة من الهجمات Wمن تقنيات االستغالل األكثر وضوحً ا واألقل أهمية إلى المتقدمة التي تنطوي على قنوات خارج النطاق واالستدالل وتأخير
الوقت .لكل نوع من أنواع الثغرات وتقنيات الهجوم ،نصف االختالفات Wذات الصلة بين ثالثة أنواع شائعة من قواعد البيانات MS-SQL :و Oracleو .MySQL
ثم نغطي عدة فئات أخرى من نقاط الضعف في الحقن ،بما في ذلك إدخال أوامر نظام التشغيل ،والحقن في لغات البرمجة النصية على الويب ،والحقن في
بروتوكوالت SOAPو XPathو SMTPو LDAP. xxviiiمقدمة 70779flast.qxd: WileyRed 9/14/07 3:12م الصفحة xxviiiالفصل " ، 10
، " Exploiting Path Traversalيبحث فئة صغيرة ولكنها مهمة من نقاط الضعف التي تنشأ عند تمرير إدخال المستخدم Wإلى واجهات Wبرمجة التطبيقات لنظام
الملفات بطريقة غير آمنة ،تمكين المهاجم Wمن استرداد أو تعديل الملفات العشوائية على خادم الويب .وصفنا تجاوزات مختلفة قد تكون فعالة ضد الدفاعات التي
يتم تنفيذها بشكل شائع لمنع هجمات اجتياز المسار .يفحص الفصل " ، 11الهجوم على منطق التطبيق" ،منطقة مهمة ،وغالبًا ما يتم تجاهلها ،من سطح هجوم
كل تطبيق :المنطق الداخلي الذي يتم تنفيذه لتنفيذ وظائفه .تتنوع العيوب في منطق التطبيق بشكل كبير ويصعب وصفها من الثغرات الشائعة مثل إدخال SQL
والبرمجة النصية عبر المواقع .لهذا السبب ،نقدم سلسلة من األمثلة الواقعية حيث ترك المنطق المعيب تطبي ًقا ضعي ًفا ،وبالتالي يوضح مجموعة متنوعة من
االفتراضات الخاطئة التي وضعها مصممو التطبيقات ومطوروها .من هذه العيوب الفردية المختلفة ،نستنتج سلسلة من االختبارات المحددة التي يمكنك إجراؤها
لتحديد العديد من أنواع العيوب المنطقية التي غالبًا ما يتم اكتشافها .يغطي الفصل " ، 12مهاجمة مستخدمين آخرين" ،مجااًل كبيرً ا وموضوعيًا للغاية من نقاط
الضعف ذات الصلة التي تنشأ عندما يمكن أن تؤدي العيوب داخل تطبيق الويب إلى تمكين مستخدم ضار للتطبيق من مهاجمة مستخدمين آخرين وتعريضهم
للخطر بطرق مختلفة .أكبر نقطة ضعف من هذا النوع هي البرمجة النصية عبر المواقع ،وهو خلل سائد بشكل كبير يؤثر على الغالبية العظمى من تطبيقات
الويب على اإلنترنت .ندرس بالتفصيل جميع النكهات Wالمختلفة لنقاط الضعف ، XSSونصف منهجية فعالة الكتشاف واستغالل حتى أكثر المظاهر الغامضة من
هذه .ثم ننظر إلى عدة أنواع أخرى من الهجمات ضد مستخدمين آخرين ،بما في ذلك هجمات إعادة التوجيه ،وحقن رأس ، HTTPوحقن اإلطار ،وتزوير
الطلبات عبر الموقع ،وتثبيت الجلسة ،واستغالل األخطاء في عناصر تحكم ، ActiveXوهجمات الخصوصية المحلية .ال يقدم الفصل " ، 13أتمتة الهجمات
حسب الطلب" ،أي فئات جديدة من الثغرات األمنية ،ولكنه بدالً من ذلك ،يصف تقنية حاسمة تحتاج إلى إتقانها لمهاجمة Wتطبيقات الويب بفعالية .نظرً ا الختالف
كل تطبيق ويب ،فإن معظم الهجمات تكون حسب الطلب (أو مخصصة) بطريقة ما ،ومصممة حسب السلوك المحدد للتطبيق والطرق التي اكتشفتها للتالعب بها
لصالحك .وكثيرا ما تتطلب أيضا إصدار عدد كبير من الطلبات المماثلة ومراقبة استجابات التطبيق .إن تنفيذ هذه الطلبات يدويًا أمر شاق للغاية ويميل المرء إلى
ارتكاب األخطاء .لتصبح مختر ًقا لتطبيق الويب ح ًق ا ،تحتاج إلى أتمتة أكبر قدر ممكن من هذا العمل ،لجعل هجماتك المفصلة أسهل وأسرع وأكثر فعالية .في هذا
الفصل ،نصف بالتفصيل منهجية مثبتة لتحقيق ذلك .يفحص الفصل " ، 14استغالل الكشف عن المعلومات" ،الطرق المختلفة التي تسرب بها التطبيقات
المعلومات عندما تتعرض لهجوم نشط .عندما تقوم بتنفيذ جميع أنواع الهجمات Wاألخرى الموضحة في هذا الكتاب ،يجب عليك دائمًا مراقبة التطبيق لتحديد
مصادر المعلومات اإلضافية
الكشف الذي يمكنك استغالله .نحن نصف كيف يمكنك التحقيق في السلوك الشاذ ورسائل الخطأ للحصول على فهم أعمق للعمل الداخلي للتطبيق وضبط هجومك.
نغطي أيضً ا طرق معالجة معالجة األخطاء المعيبة السترداد المعلومات الحساسة Wبشكل منهجي من التطبيق .يفحص الفصل " 15مهاجمة التطبيقات المجمعة"
مجموعة من نقاط الضعف المهمة التي تنشأ في التطبيقات المكتوبة بلغات الشفرة األصلية مثل Cو .++ Cتتضمن هذه الثغرات األمنية تجاوزات المخزن المؤقت
والثغرات الصحيحة وتنسيقات عيوب السلسلة .قد يكون هذا موضوعًا ضخ ًم ا ،ونركز على طرق اكتشاف نقاط الضعف هذه في تطبيقات الويب ،ونلقي نظرة
على بعض األمثلة الواقعية لكيفية ظهورها واستغاللها .يفحص الفصل " ، 16مهاجمة بنية التطبيق" ،مجااًل مهمًا ألمان تطبيقات الويب يتم تجاهله كثيرً ا .تستخدم
العديد من التطبيقات بنية متدرجة ،والفشل في فصل المستويات المختلفة بشكل صحيح غالبًا ما يترك التطبيق عرضة للخطر ،مما يتيح للمهاجم Wالذي وجد عيبًا
في مكون واحد أن يضر بسرعة بالتطبيق بالكامل .تنشأ مجموعة مختلفة من التهديدات في بيئات االستضافة المشتركة ،حيث يمكن أحيا ًنا استغالل العيوب أو
التعليمات البرمجية الضارة في تطبيق واحد إلخالل البيئة نفسها والتطبيقات األخرى التي تعمل داخلها .يصف الفصل " 17الهجوم على خادم الويب" الطرق
المختلفة التي يمكنك من خاللها استهداف تطبيق ويب من خالل استهداف خادم الويب الذي يتم تشغيله عليه .تتكون نقاط الضعف في خوادم الويب على نطاق
واسع من عيوب في تكوينها وعيوب األمان داخل برنامج خادم الويب .هذا الموضوع موجود على حدود نطاق هذا الكتاب ،ألن خادم الويب هو مكون مختلف
ً
ارتباطا وثي ًق ا بخادم الويب الذي تعمل عليه ؛ لذلك ،يتم تضمين الهجمات ضد خادم تما ًم ا في حزمة التكنولوجيا .ومع ذلك ،فإن معظم تطبيقات الويب مرتبطة
الويب في الكتاب ألنه يمكن استخدامها في كثير من األحيان الختراق تطبيق بشكل مباشر ،وليس بشكل غير مباشر عن طريق اختراق المضيف األساسي أوالً.
يصف الفصل " ، 18البحث عن الثغرات األمنية في شفرة المصدر" ،نهجً ا مختل ًفا تما ًم ا للعثور على العيوب األمنية عن تلك الموصوفة في مكان آخر من هذا
الكتاب .هناك العديد من المواقف التي قد يكون فيها من الممكن إجراء مراجعة لشفرة مصدر التطبيق ،والتي ال تتطلب جميعها أي تعاون من مالك التطبيق .غالبًا
ما تكون مراجعة شفرة مصدر التطبيق فعالة للغاية في اكتشاف الثغرات التي يصعب اكتشافها أو تستغرق وق ًتا طويالً من خالل فحص التطبيق قيد التشغيل .نحن
نصف المنهجية ،ونقدم ورقة الغش لكل لغة ،حتى تتمكن من إجراء مراجعة فعالة للشفرة حتى لو كانت لديك خبرة محدودة ج ًدا في البرمجة .يجمع الفصل ، 19
"مجموعة أدوات الهاكر لتطبيقات الويب" ،في مكان واحد األدوات المختلفة الموضحة في سياق هذا الكتاب ،والتي يستخدمها المؤلفون عند مهاجمة Wتطبيقات
الويب الواقعية .نصف القوة والضعف
نقاط ضعف األدوات المختلفة ،وشرح مدى فعالية أي أداة مؤتمتة بالكامل في العثور على نقاط الضعف في تطبيق الويب ،وتقديم بعض النصائح والنصائح
لتحقيق أقصى استفادة من مجموعة أدواتك .يحتوي الفصل " ، 20منهجية الهاكر لتطبيقات الويب" ،على ترتيب شامل ومنظم لجميع اإلجراءات والتقنيات
الموضحة في هذا الكتاب .يتم تنظيمها وترتيبها وف ًق ا للتبعيات المنطقية بين المهام عندما تقوم بتنفيذ هجوم فعلي .إذا كنت قد قرأت وفهمت جميع نقاط الضعف
والتقنيات الموضحة في هذا الكتاب ،فيمكنك استخدام هذه المنهجية كقائمة تحقق كاملة وخطة عمل عند تنفيذ هجوم ضد تطبيق ويب .األدوات التي ستحتاجها Wهذا
الكتاب موجه بقوة نحو التقنيات العملية التي يمكنك استخدامها لمهاجمة تطبيقات الويب .بعد قراءة الكتاب ،ستفهم تفاصيل كل مهمة على حدة ،وما تتضمنه من
الناحية الفنية ،ولماذا تعمل في مساعدتك على اكتشاف الثغرات واستغاللها .ال يتعلق الكتاب بشكل قاطع بتنزيل بعض األدوات ،وتوجيهها إلى تطبيق مستهدف ،
والتصديق على ما يخبرك به ناتج األداة عن حالة أمان التطبيق .ومع ذلك ،هناك العديد من األدوات التي ستجدها مفيدة ،وأحيا ًنا ال غنى عنها ،عند أداء المهام
والتقنيات التي نصفها .كل هذه متاحة بسهولة على اإلنترنت ،ونوصيك بتنزيل كل أداة وتجربتها في النقطة التي تظهر فيها في سياق الكتاب .ما يوجد على موقع
الويب يحتوي موقع الويب المصاحب لهذا الكتاب على www.wiley.com/go/webhackerعلى العديد من الموارد التي ستجدها مفيدة أثناء إتقان التقنيات
التي نصفها واستخدامها لمهاجمة التطبيقات الفعلية .على وجه الخصوص ،يحتوي موقع الويب على ما يلي ■ ■ :مصدر التعليمات البرمجية لبعض النصوص
التي نقدمها في الكتاب ■ ■ .قائمة بالوصالت الحالية لجميع األدوات والموارد األخرى التي تمت مناقشتها Wفي الكتاب ■ ■ .قائمة مراجعة مفيدة للمهام التي
ينطوي عليها مهاجمة تطبيق نموذجي ■ ■ .إجابات على األسئلة المطروحة في نهاية كل فصل ■ ■ .تحدي قرصنة يحتوي على العديد من نقاط الضعف
الموضحة في الكتاب.
إن تطبيق Bring It On Webهو موضوع ممتع ومزدهر .لقد استمتعنا بكتابة هذا الكتاب بقدر ما نستمر في االستمتاع بالقرصنة على تطبيقات الويب بشكل
يومي .نأمل أن تستمتع أيضً ا بالتعرف على التقنيات المختلفة التي نصفها وكيف يمكن الدفاع عنها .قبل المضي قدمًا ،يجب أن نذكر تحذيرً ا مهمًا .في معظم
البلدان ،يعد مهاجمة أنظمة الكمبيوتر دون إذن المالك مخالفا ً للقانون .غالبية التقنيات التي نصفها غير قانونية إذا تم تنفيذها بدون موافقة .المؤلفون هم مختبرون
محترفون لالختراق يهاجمون بشكل روتيني تطبيقات الويب نيابة عن العمالء ،لمساعدتهم على تحسين أمنهم .في السنوات األخيرة ،حصل العديد من
المتخصصين في مجال األمن وغيرهم على سجالت Wإجرامية ،وأنهوا حياتهم المهنية ،من خالل تجربة أنظمة الكمبيوتر أو مهاجمتها بنشاط دون إذن .نحثك على
استخدام المعلومات الواردة في هذا الكتاب فقط ألغراض قانونية
ليس هناك شك في أن أمان تطبيقات الويب هو موضوع حالي وجدير بالنشر .بالنسبة لجميع المعنيين ،فإن المخاطر كبيرة :للشركات Wالتي تحقق إيرادات
متزايدة من التجارة عبر اإلنترنت ،وللمستخدمين الذين يثقون في تطبيقات الويب بمعلومات حساسة ، Wوللمجرمين الذين يمكنهم كسب Wأموال كبيرة عن طريق
سرقة تفاصيل الدفع أو المساومة بالحسابات Wالمصرفية .تلعب السمعة Wدوراً حاسما ً :قلة من الناس يريدون القيام بأعمال تجارية مع موقع ويب غير آمن ،وبالتالي
فإن القليل من المنظمات Wتريد الكشف عن تفاصيل حول نقاط الضعف أو الخروقات األمنية الخاصة بهم .وبالتالي ،ليس من السهل الحصول على معلومات
موثوقة حول حالة أمان تطبيقات الويب اليوم .يلقي هذا الفصل نظرة سريعة على كيفية تطور تطبيقات الويب والفوائد العديدة التي تقدمها .نقدم بعض المقاييس
حول الثغرات األمنية في تطبيقات الويب الحالية ،مستمدة من الخبرة المباشرة للمؤلفين ،مما يوضح أن غالبية التطبيقات ليست بعيدة عن األمان .نحن نصف
مشكلة األمان األساسية التي تواجه تطبيقات الويب -والتي يمكن للمستخدمين توفير مدخالت عشوائية -والعوامل المختلفة التي تساهم في ضعف وضعهم األمني.
أخيرً ا ،نصف أحدث االتجاهات في أمان تطبيقات الويب والطرق التي يُتوقع أن يتم تطويرها في المستقبل القريب .أمان تطبيق الويب (في) الفصل 70779c0 1
1.qxd: WileyRed 9/14/07 3:12م الصفحة 1تطور تطبيقات الويب في األيام األولى لإلنترنت ،كانت شبكة الويب العالمية تتكون فقط من مواقع الويب.
كانت هذه في األساس مستودعات معلومات تحتوي على مستندات ثابتة ،وتم اختراع متصفحات الويب كوسيلة السترداد وعرض هذه المستندات ،كما هو
موضح في الشكل .1-1كان تدفق المعلومات المثيرة لالهتمام مستمرً ا ،من الخادم إلى المتصفح .لم تقم معظم المواقع بمصادقة المستخدمين ،نظرً ا لعدم الحاجة
إلى ذلك -حيث تم التعامل مع كل مستخدم بنفس الطريقة وقدمت له نفس المعلومات .أي تهديدات أمنية ناشئة عن استضافة موقع على شبكة اإلنترنت تتعلق إلى
حد كبير بنقاط الضعف في برنامج خادم الويب (والتي كان هناك الكثير منها) .إذا قام أحد المهاجمين Wباختراق خادم ويب ،فلن يتمكن عاد ًة من الوصول إلى أي
معلومات حساسة ، Wألن المعلومات الموجودة على الخادم مفتوحة بالفعل للعرض العام .بدالً من ذلك ،عاد ًة ما يقوم المهاجم Wبتعديل الملفات الموجودة على الخادم
لتشويه محتويات موقع الويب ،أو استخدام تخزين الخادم وعرض النطاق الترددي لتوزيع ".warez
الشكل : 1-1موقع ويب تقليدي يحتوي على معلومات ثابتة اليوم ،ال يمكن التعرف على شبكة الويب العالمية تقريبًا من شكلها السابق .معظم المواقع على الويب
هي في الواقع تطبيقات (انظر الشكل .) 2-1فهي تعمل بكفاءة عالية وتعتمد على تدفق المعلومات في اتجاهين بين الخادم والمتصفح .وهي تدعم التسجيل وتسجيل
الدخول والمعامالت المالية والبحث وتأليف المحتوى من قبل المستخدمين .يتم إنشاء المحتوى المقدم للمستخدمين ديناميكيًا أثناء التنقل ،وغالبًا ما يتم تصميمه لكل
مستخدم محدد .معظم المعلومات التي تمت معالجتها خاصة وحساسة للغاية .األمان هو الفصل األول ■ األمان في تطبيق الويب (في) 70779c01.qxd:
WileyRed 9/14/07 3:12م الصفحة 2مشكلة كبيرة :ال أحد يريد استخدام تطبيق ويب إذا اعتقد أن معلوماته سيتم الكشف عنها لـ األطراف غير المصرح
بها .تجلب تطبيقات الويب معها تهديدات أمنية جديدة وكبيرة .كل تطبيق مختلف وقد يحتوي على نقاط ضعف فريدة .يتم تطوير معظم التطبيقات داخليًا ،والعديد
من المطورين الذين لديهم فهم ضئيل لمشاكل األمان التي قد تنشأ في الكود الذي يقومون بإنتاجه .لتقديم وظائفها األساسية ،تتطلب تطبيقات الويب عاد ًة االتصال
بأنظمة الكمبيوتر الداخلية التي تحتوي على بيانات حساسة Wللغاية وقادرة على أداء وظائف تجارية قوية .قبل عشر سنوات ،إذا كنت ترغب في إجراء تحويل
األموال ،قمت بزيارة البنك الخاص بك وقام شخص ما بإجراء ذلك لك ؛ اليوم ،يمكنك زيارة تطبيق الويب الخاص بهم وأداء ذلك بنفسك .قد يتمكن المهاجم الذي
يخترق أحد تطبيقات الويب من سرقة المعلومات الشخصية والقيام باالحتيال المالي وتنفيذ إجراءات ضارة ضد مستخدمين آخرين.
الشكل 2-1تطبيق ويب نموذجي وظائف تطبيق ويب عامة تم إنشاء تطبيقات الويب ألداء كل وظيفة مفيدة يمكن للمرء تنفيذها على اإلنترنت عمليًا .تتضمن أمثلة
وظائف تطبيق الويب التي برزت إلى الظهور في السنوات األخيرة ■ ■ :التسوق ( ■ ■ )Amazonالشبكات االجتماعية ( )MySpaceالفصل ■ 1أمان تطبيق
الويب ( 3 70779c01.qxd: WileyRed 9/14/07 3: 12 )Inمسا ًء صفحة ■ ■ 3المصرفية ( ■ ■ )Citibankبحث الويب ( ■ ■ )Googleالمزادات (
■ ■ )eBayالمقامرة ( ■ ■ )Betfairسجالت الويب ( ■ ■ )Bloggerبريد الويب ( ■ ■ )Hotmailالمعلومات Wالتفاعلية ( )Wikipediaباإلضافة إلى
اإلنترنت العام ،تم اعتماد تطبيقات الويب على نطاق واسع داخل المنظمات Wألداء وظائف األعمال الرئيسية ،بما في ذلك الوصول إلى خدمات الموارد البشرية
وإدارة موارد الشركة .كما يتم استخدامها بشكل متكرر لتوفير واجهة إدارية لألجهزة مثل الطابعات والبرامج األخرى مثل خوادم الويب وأنظمة كشف التسلل .تم
ترحيل العديد من التطبيقات التي سبقت ظهور تطبيقات الويب إلى هذه التقنية .يمكن اآلن الوصول إلى تطبيقات األعمال ،مثل برنامج تخطيط موارد المؤسسة (
، )ERPالذي تم الوصول إليه ساب ًق ا باستخدام تطبيق عميل ذو ملكية سميكة ،باستخدام مستعرض ويب .يمكن اآلن الوصول إلى خدمات Wالبرامج مثل البريد
اإللكتروني ،الذي تطلب في األصل عميل بريد إلكتروني منفصل ،عبر واجهات الويب مثل .Outlook Web Accessيستمر هذا االتجاه حيث يتم ترحيل
تطبيقات سطح المكتب التقليدية مثل معالجات النصوص وجداول البيانات إلى تطبيقات الويب ،من خالل خدمات Wمثل Google Appsو Microsoft Office
. Liveالوقت يقترب بسرعة عندما يكون برنامج العميل الوحيد الذي سيحتاجه معظم مستخدمي الكمبيوتر هو متصفح الويب .سيتم تنفيذ مجموعة متنوعة للغاية
من الوظائف باستخدام مجموعة مشتركة من البروتوكوالت والتقنيات ،وبذلك تكون قد ورثت مجموعة مميزة من نقاط الضعف األمنية المشتركة .فوائد تطبيقات
الويب ليس من الصعب معرفة سبب تمتع تطبيقات الويب بمثل هذا االرتفاع الكبير في األهمية .عملت العديد من العوامل التقنية جنبًا إلى جنب مع الحوافز
التجارية الواضحة لدفع الثورة التي حدثت في الطريقة التي نستخدم بها اإلنترنت ، HTTPبروتوكول االتصاالت األساسي المستخدم للوصول إلى شبكة الويب
العالمية ،خفيف الوزن وغير متصل .وهذا يوفر المرونة في حالة حدوث أخطاء في االتصال ويتجنب الحاجة إلى أن يقوم الخادم بفتح اتصال شبكة مفتوح لكل
مستخدم كما كان الحال في كثير
ضا تحويل HTTPإلى نفق عبر البروتوكوالت األخرى ،مما يسمح باالتصال اآلمن في أي تكوين للشبكة.لكل تطبيقات خادم العميل .egacyيمكن أي ً
مستخدم ويب بالفعل متصفح مثبت على جهاز الكمبيوتر الخاص به .تقوم تطبيقات الويب بنشر واجهة المستخدم الخاصة بها ديناميكيًا في المستعرض ،مع تجنب
الحاجة إلى توزيع وإدارة برنامج عميل منفصل ،كما كان الحال مع تطبيقات ما قبل الويب .ال يلزم تنفيذ التغييرات التي يتم إجراؤها على الواجهة إال مرة
واحدة ،على الخادم ،وتسري على الفور تعد متصفحات Wاليوم فعالة للغاية ،مما يتيح إنشاء واجهات مستخدم غنية ومرضية .تستخدم واجهات الويب عناصر
التحكم في التنقل واإلدخال القياسية المألوفة للمستخدمين على الفور ،وتجنب الحاجة إلى معرفة كيفية عمل كل تطبيق على حدة .تتيح البرمجة النصية من جانب
العميل للتطبيقات دفع جزء من معالجتها إلى جانب العميل ،ويمكن توسيع قدرات المتصفحات Wبطرق عشوائية باستخدام مكونات العميل السميك عند الضرورة.
التقنيات واللغات األساسية المستخدمة Wلتطوير تطبيقات الويب بسيطة نسبيًا .تتوفر مجموعة واسعة من المنصات وأدوات التطوير لتسهيل تطوير التطبيقات القوية
من قبل المبتدئين النسبيين ،وتتوفر كمية كبيرة من التعليمات البرمجية مفتوحة المصدر والموارد األخرى إلدراجها في التطبيقات المخصصة .أمان تطبيقات
الويب كما هو الحال مع أي فئة جديدة من التقنيات ،جلبت تطبيقات الويب معها مجموعة جديدة من نقاط الضعف األمنية .تطورت مجموعة العيوب األكثر شيوعًا
إلى حد ما بمرور الوقت .تم تصور هجمات جديدة لم يتم أخذها في االعتبار عند تطوير التطبيقات الحالية .أصبحت بعض المشاكل أقل انتشارً ا مع زيادة الوعي
بها .تم تطوير تقنيات جديدة أدخلت إمكانيات جديدة لالستغالل .اختفت بعض فئات العيوب إلى حد كبير نتيجة التغييرات التي تم إجراؤها على برنامج متصفح
الويب .خالل هذا التطور ،بقيت تنازالت تطبيقات الويب البارزة في األخبار ،وليس هناك إحساس بأن الزاوية قد تحولت وأن هذه المشاكل األمنية تتالشى .يمكن
القول إن أمن تطبيقات الويب هو اليوم أهم ساحة Wمعركة بين المهاجمين Wوالذين يمتلكون موارد الكمبيوتر والبيانات للدفاع عنها ،ومن المرجح أن تظل كذلك في
المستقبل المنظور .الفصل األول تأمين تطبيق الويب (في) 70779c01.qxd: WileyRed 9/14/07 3:12 5م الصفحة " 5هذا الموقع آمن" هناك إدراك
واسع االنتشار بأن األمان "مشكلة" لتطبيقات الويب .راجع صفحة األسئلة الشائعة الخاصة بالتطبيق النموذجي ،وسوف تطمئن إلى أنه آمن بالفعل .على سبيل
المثال :هذا الموقع آمن تما ًما .وقد تم تصميمه الستخدام تقنية طبقة المقابس اآلمنة ( 128 )SSLبت لمنع المستخدمين غير المصرح لهم من عرض أي من
معلوماتك .يمكنك استخدام هذا الموقع براحة البال بأن بياناتك آمنة معنا.
في كل حالة تقريبًا ،تنص تطبيقات الويب على أنها آمنة ألنها تستخدم طبقة المقابس اآلمنة .غالبًا ما يتم حث المستخدمين على التحقق من شهادة الموقع
،واإلعجاب ببروتوكوالت التشفير المتقدمة المستخدمة ، Wوعلى هذا األساس ،الثقة بها بمعلوماتهم الشخصية .في الواقع ،معظم تطبيقات الويب غير آمنة ،
وبطرق ال عالقة لها بـ . SSLاختبر مؤلفو هذا الكتاب مئات تطبيقات الويب في السنوات األخيرة .يوضح الشكل 3-1نسب تلك التطبيقات التي تم اختبارها خالل
عامي 2006و 2007والتي تبين أنها تأثرت ببعض فئات الضعف الشائعة .يتم شرح هذه بإيجاز أدناه :المصادقة Wالمكسورة ( - )٪67تشمل هذه الفئة من
الثغرات عيوبًا مختلفة داخل آلية تسجيل الدخول في التطبيق ،والتي قد تمكن المهاجم من تخمين كلمات Wالمرور الضعيفة ،أو شن هجوم القوة الغاشمة ،أو تجاوز
تسجيل الدخول تمامًا التحكم في الوصول المكسور ( - )٪ 78يشمل ذلك الحاالت التي يفشل فيها التطبيق في حماية الوصول إلى بياناته ووظائفه بشكل صحيح ،
مما قد يسمح للمهاجمين بعرض البيانات الحساسة Wللمستخدمين اآلخرين الموجودة على الخادم ،أو تنفيذ إجراءات مميزة .حقن ) - SQL (36٪تتيح هذه الثغرة
للمهاجم Wإرسال مدخالت مع ّد ة للتدخل في تفاعل التطبيق مع قواعد البيانات الخلفية .قد يتمكن المهاجم Wمن استرداد البيانات العشوائية من التطبيق أو التدخل في
منطقه أو تنفيذ األوامر على خادم قاعدة البيانات نفسه .البرمجة النصية عبر المواقع ( - )٪91تم ّك ن هذه الثغرة األمنية المهاجم من استهداف مستخدمين آخرين
للتطبيق ،وربما الوصول إلى بياناتهم ،أو تنفيذ إجراءات غير مصرح بها نيابة عنهم ،أو تنفيذ هجمات أخرى ضدهم .تسرب المعلومات ( - )٪81يشمل ذلك
الحاالت التي يكشف فيها التطبيق عن معلومات Wحساسة Wتكون مفيدة لمهاجم في تطوير اعتداء على التطبيق ،من خالل معالجة الخطأ المعيب أو أي سلوك آخر
الشكل :3-1يعتبر حدوث بعض نقاط الضعف الشائعة Wفي تطبيقات الويب في التطبيقات التي تم اختبارها مؤخرً ا من قبل المؤلفين (بنا ًء على عينة من أكثر
من ) 100طبقة المقابس اآلمنة تقنية ممتازة تحمي سرية وسالمة البيانات أثناء النقل بين متصفح المستخدم و قاعدة بيانات لالنترنت .فهو يساعد على الدفاع ضد
التنصت ،ويمكن أن يوفر ضما ًن ا للمستخدم بهوية خادم الويب الذي يتعامل معه .لكنه ال يوقف الهجمات التي تستهدف الخادم أو مكونات العميل الخاصة بالتطبيق
مباشر ًة ،كما تفعل معظم الهجمات الناجحة .على وجه التحديد ،ال يمنع أي من الثغرات المذكورة ساب ًقا ،أو العديد من الثغرات األخرى التي يمكن أن تعرض
تطبي ًقا معرضً ا بشدة للهجوم .بغض النظر عما إذا كانت تستخدم SSLأم ال ،فإن معظم تطبيقات الويب ال تزال تحتوي على ثغرات أمنية .مالحظة على الرغم من
أن طبقة المقابس اآلمنة ال عالقة لها بغالبية الثغرات األمنية في تطبيقات الويب ،فال تستنتج أنها غير ضرورية ألمان التطبيق .يستخدم SSLبشكل صحيح ،
ويوفر دفاع فعال ضد العديد من الهجمات Wالهامة .خطأ عرضي من قبل المطورين هو تجنب التشفير المعياري في الصناعة لصالح حل محلي ،والذي كقاعدة
أكثر تكلفة وأقل فعالية .فكر في إجابة األسئلة الشائعة (الفعلية) التالية ،والتي تدق أجراس التنبيه بصوت أعلى من الحكمة التقليدية الموصوفة ساب ًقا :هذا الموقع
آمن .من أجل سالمتك (وراحة بالك) ،ال نستخدم إجراءات األمان "القياسية" مثل SSLولكن بروتوكوالت الملكية التي لن نكشف عنها بالتفصيل هنا ولكننا نسمح
بنقل فوري ألي بيانات ترسلها إلى موقع آمن تمامًا .وبعبارة أخرى ،فإن البيانات ال تبقى أب ًد ا على خادم "عائم في الفضاء اإللكتروني" ،مما يسمح لنا بإبقاء
المخالفين المحتملين في الظالم.
مشكلة األمان األساسية :يمكن للمستخدمين إرسال اإلدخال التعسفي كما هو الحال مع معظم التطبيقات الموزعة ،تواجه تطبيقات الويب مشكلة أساسية
يجب معالجتها لتكون آمنة .نظرً ا ألن العميل خارج عن سيطرة التطبيق ،يمكن للمستخدمين إرسال مدخالت عشوائية تمامًا إلى التطبيق من جانب الخادم .يجب
أن يفترض التطبيق أن كل المدخالت يحتمل أن تكون ضارة ،ويجب أن يتخذ خطوات للتأكد من أن المهاجمين ال يمكنهم استخدام اإلدخال المصمم لخرق التطبيق
من خالل التدخل في منطقه وسلوكه والحصول على وصول غير مصرح به إلى بياناته ووظائفه .تتجلى هذه المشكلة األساسية بطرق مختلفة :يمكن للمستخدمين
التدخل في أي جزء من البيانات المرسلة بين العميل والخادم ،بما في ذلك معلمات Wالطلب وملفات تعريف االرتباط ورؤوس .HTTPيمكن التحايل بسهولة على
أي ضوابط أمنية مطبقة على جانب العميل ،مثل عمليات التحقق من صحة المدخالت يمكن للمستخدمين إرسال الطلبات في أي تسلسل ،ويمكنهم إرسال
المعلمات Wفي مرحلة مختلفة عما يتوقعه التطبيق ،أكثر من مرة ،أو ال على اإلطالق .قد يتم انتهاك أي افتراض يضعه المطورون حول كيفية تفاعل المستخدمين
مع التطبيق ال يقتصر المستخدمون على استخدام متصفح الويب فقط للوصول إلى التطبيق .هناك العديد من األدوات المتاحة على نطاق واسع والتي تعمل جنبًا إلى
جنب أو بشكل مستقل مع المتصفح للمساعدة في مهاجمة تطبيقات الويب .يمكن لهذه األدوات تقديم طلبات ال يقوم بها المتصفح عادة ،ويمكنها إنشاء أعداد هائلة
من الطلبات بسرعة للعثور على المشاكل واستغاللها .تتضمن غالبية الهجمات Wضد تطبيقات الويب إرسال اإلدخال إلى الخادم المصمم إلحداث حدث لم يكن متوقعًا
أو مرغو ًب ا من قبل مصمم التطبيق .فيما يلي بعض األمثلة على إرسال المدخالت المصممة لتحقيق هذا الهدف تغيير سعر المنتج الذي تم نقله في حقل نموذج
HTMLمخفي ،لشراء المنتج بشكل احتيالي مقابل مبلغ أرخص تعديل الرمز المميز للجلسة المرسلة في ملف تعريف ارتباط ، HTTPالختطاف جلسة مستخدم
آخر تمت مصادقته Wإزالة معلمات Wمعينة يتم إرسالها عاد ًة ،الستغالل خلل منطقي في معالجة Wالتطبيق تعديل بعض المدخالت التي ستتم معالجتها بواسطة قاعدة
بيانات خلفية ،إلدخال استعالم قاعدة بيانات ضار ،وبالتالي الوصول إلى البيانات الحساسة .وغني عن القول أن SSLال تفعل شيًئ ا لمنع المهاجم من إرسال
مدخالت مع ّد ة إلى الخادم .إذا كان التطبيق يستخدم طبقة المقابس اآلمنة ( ، )SSLفهذا يعني ببساطة أن الفصل 8من أمن الويب (70779c01.qxd: )In
WileyRed 9/14/07 3:12م الصفحة 8ال يمكن للمستخدمين اآلخرين على الشبكة عرض بيانات المهاجم Wأو تعديلها أثناء النقل .ألن المهاجم Wيتحكم في نهاية
نفق ، SSLيمكنها إرسال أي شيء تريده إلى الخادم من خالل هذا النفق .إذا نجحت أي من الهجمات المذكورة ساب ًقا ،فإن التطبيق ضعيف بشكل قاطع ،بغض
النظر عما قد يخبرك به األسئلة الشائعةW
عوامل المشكلة الرئيسية تنشأ مشكلة األمان األساسية Wالتي تواجهها تطبيقات الويب في أي موقف حيث يجب على التطبيق قبول ومعالجة البيانات غير
الموثوقة التي قد تكون ضارة .ومع ذلك ،في حالة تطبيقات الويب ،هناك العديد من العوامل التي اجتمعت لتفاقم المشكلة ،والتي تفسر سبب قيام العديد من
تطبيقات الويب على اإلنترنت اليوم بمهمة سيئة في معالجتها .الوعي األمني غير الناضج هناك مستوى أقل نضجً ا من الوعي بمشاكل أمان تطبيقات الويب مقارنة
بالمناطق القديمة مثل الشبكات وأنظمة التشغيل .في حين أن معظم األشخاص الذين يعملون في مجال أمن تكنولوجيا المعلومات لديهم فهم معقول ألساسيات Wتأمين
الشبكات Wوتضييق المضيفين ،ال يزال هناك ارتباك وسوء فهم على نطاق واسع حول العديد من المفاهيم األساسية المتعلقة بأمان تطبيقات الويب .من الشائع أن
تلتقي بمطوري تطبيقات الويب ذوي الخبرة الذين يأتي إليهم تفسير للعديد من األنواع األساسية من العيوب على أنها وحي كامل .التطوير الداخلي يتم تطوير معظم
تطبيقات الويب داخل ًي ا بواسطة موظفين أو مقاولين بالمنظمة .حتى عندما يستخدم تطبيق مكونات طرف ثالث ،يتم تخصيصها أو ربطها م ًعا باستخدام رمز جديد.
في هذه الحالة ،يختلف كل تطبيق وقد يحتوي على عيوب فريدة خاصة به .هذا يتناقض مع نشر البنية التحتية النموذجية حيث يمكن للمؤسسة شراء أفضل منتج
وتثبيته بما يتماشى مع المبادئ التوجيهية لمعايير الصناعة .البساطة المخادعة بفضل منصات تطبيقات الويب وأدوات التطوير الحالية ،يمكن للمبرمج المبتدئ
إنشاء تطبيق قوي من البداية في فترة زمنية قصيرة .ولكن هناك فرق كبير بين إنتاج كود فعال وشفرة آمنة .يتم إنشاء العديد من تطبيقات الويب الفصل 1أمان
تطبيق الويب ( 9 70779c01.qxd: WileyRed 9/14/07 3:12 PM Page 9 )Inمن قبل أفراد ذوي نية حسنة يفتقرون ببساطة إلى المعرفة والخبرة لتحديد
مكان حدوث مشكالت Wاألمان .تطور ملف التعريف السريع للتهديد نتيجة لعدم نضجه النسبي ،يعد البحث في هجمات ودفاعات تطبيقات الويب مجااًل مزدهرً ا يتم
فيه تصور المفاهيم والتهديدات الجديدة بمعدل أسرع مما هو الحال اآلن للتكنولوجيات القديمة .ربما يكون فريق التطوير الذي يبدأ مشروعً ا بمعرفة كاملة
بالتهديدات الحالية قد فقد هذه الحالة عند اكتمال التطبيق ونشره .قيود الموارد والوقت تخضع معظم مشاريع تطوير تطبيقات الويب لقيود صارمة على الوقت
والموارد الناشئة عن اقتصاديات التطوير الداخلي لمرة واحدة .ليس من الممكن عاد ًة توظيف خبرة أمنية مخصصة في فرق التصميم أو التطوير ،وبسبب اختبار
جد ا من دورة حياة المشروع .في موازنة األولويات المتنافسة ،فإن الحاجة إلى إنتاج تطبيق أمان انزالق المشروع غالبًا ما يترك المتخصصون حتى وقت متأخر ً
مستقر وعملي بحلول موعد نهائي يتجاوز عاد ًة اعتبارات األمان األقل وضوحً ا .قد تكون منظمة صغيرة نموذجية على استعداد للدفع لبضعة أيام عمل فقط من
الوقت االستشاري لتقييم طلب جديد .غال ًب ا ما سيجد اختبار االختراق السريع الثمار المنخفضة ،ولكنه قد يفوت المزيد من نقاط الضعف الدقيقة التي تتطلب الوقت
والصبر لتحديد
التقنيات المفرطة بدأت العديد من التقنيات األساسية المستخدمة Wفي تطبيقات الويب بالحياة عندما كانت المناظر الطبيعية لشبكة الويب العالمية مختلفة
تمامًا ،ومنذ ذلك الحين تم دفعها Wإلى أبعد من األغراض التي تم إنشاؤها من أجلها في األصل -على سبيل المثال ،استخدام جافا سكريبت باعتبارها وسائل نقل
البيانات في العديد من التطبيقات القائمة على .AJAXنظرً ا لتطور التوقعات Wالموضوعة على وظائف تطبيق الويب بسرعة ،فقد تباطأت التقنيات المستخدمة لتنفيذ
هذه الوظيفة خلف المنحنى ،حيث امتدت التقنيات القديمة وتكييفها لتلبية المتطلبات الجديدة .بشكل غير مفاجئ ،أدى هذا إلى نقاط ضعف أمنية مع ظهور آثار
جانبية غير متوقعة .محيط األمان الجديد قبل ظهور تطبيقات الويب ،كانت جهود المؤسسات Wلتأمين نفسها ضد الهجمات Wالخارجية تتركز إلى حد كبير على محيط
الشبكة .استلزم الدفاع عن هذا المحيط تقوية وتصحيح الخدمات Wالتي يحتاجها لفضحها ،ووصول الجدار الناري إلى اآلخرين 10 .الفصل 1أمان تطبيق الويب (
70779c01.qxd: WileyRed 9/14/07 3:12 )Inم صفحة 10لقد تغيرت تطبيقات الويب كل هذا .لكي يتمكن المستخدمون من الوصول إلى التطبيق ،
يجب أن يسمح جدار الحماية للمحيط باالتصاالت الواردة بالخادم عبر . HTTP / Sولكي يعمل التطبيق ،يجب السماح للخادم باالتصال بأنظمة الدعم الخلفية ،
مثل قواعد البيانات ،والحواسيب المركزية ،واألنظمة المالية واللوجستية .غالبًا ما تكمن هذه األنظمة في صميم عمليات المنظمة وتعيش خلف عدة طبقات من
الدفاعات Wعلى مستوى الشبكة .إذا كانت هناك ثغرة داخل تطبيق ويب ،فقد يتمكن مهاجم Wعلى اإلنترنت العام من اختراق أنظمة النهاية الخلفية األساسية Wللمؤسسة
فقط عن طريق إرسال البيانات المصممة من متصفح الويب الخاص به .ستبحر هذه البيانات بعد كل دفاعات Wشبكة المؤسسة ،تمامًا كما تفعل حركة المرور
العادية والحميدة إلى تطبيق الويب .تأثير النشر الواسع لتطبيقات الويب هو تحرك محيط األمان لمنظمة نموذجية .ال يزال جزء من هذا المحيط متجس ًدا في
الجدران النارية ومضيفات الحصن .ولكن جزءًا كبيرً ا منها مشغول اآلن بتطبيقات الويب الخاصة بالمؤسسة .نظرً ا للطرق المتعددة التي تتلقى بها تطبيقات الويب
مدخالت المستخدم وتمريرها إلى أنظمة خلفية حساسة ، Wفهي البوابات المحتملة لمجموعة واسعة من الهجمات ،ويجب تنفيذ الدفاعات ضد هذه الهجمات Wداخل
التطبيقات نفسها .يمكن أن يؤدي سطر واحد من الشفرة المعيبة في تطبيق ويب واحد إلى جعل األنظمة الداخلية للمؤسسة عرضة للخطر .اإلحصائيات التي تم
وصفها ساب ًقا ،لوقوع الثغرات في هذا المحيط األمني الجديد ،يجب أن تمنح كل منظمة وقفة للتفكير .ملحوظة :بالنسبة للمهاجم Wالذي يستهدف منظمة ،قد ال
يكون الوصول إلى الشبكة أو تنفيذ أوامر عشوائية على الخوادم هو ما يريد تحقيقه ح ًقا .غالبًا ،وربما عادة ،ما يرغب المهاجم في فعله هو القيام ببعض
اإلجراءات على مستوى التطبيق مثل سرقة المعلومات الشخصية أو تحويل األموال أو إجراء عمليات شراء رخيصة .وقد يساعد نقل محيط األمان إلى طبقة
التطبيق بشكل كبير المهاجم في تحقيق هذه األهداف .على سبيل المثال ،افترض أن المهاجم يرغب في "اختراق" أنظمة البنك وسرقة األموال من حساباتW
المستخدمين .قبل أن ينشر البنك تطبيق ويب ،ربما كان المهاجم بحاجة إلى العثور على ثغرة أمنية في خدمة يمكن الوصول إليها عل ًنا ،أو استغاللها للحصول
على ميزة مراقبة المنطقة DMZالخاصة بالبنك ،أو اختراق جدار الحماية الذي يقيد الوصول إلى أنظمته الداخلية ،أو تعيين الشبكة للعثور على كمبيوتر حاسب
مركزي ،وفك تشفير بروتوكول غامض المستخدم للوصول إليه ،ثم تخمين بعض بيانات االعتماد من أجل تسجيل الدخول .ومع ذلك ،إذا قام البنك بنشر تطبيق
ويب ضعيف ،فقد يتمكن المهاجم من تحقيق نفس النتيجة ببساطة عن طريق تعديل حساب Wرقم في حقل مخفي لنموذج .HTML
الطريقة الثانية التي تحرك بها تطبيقات الويب محيط األمان تنشأ من التهديدات التي يواجهها المستخدمون أنفسهم عند الوصول إلى تطبيق ضعيف .يمكن
للمهاجم Wالضار االستفادة من تطبيق ويب حميد ولكنه ضعيف لمهاجمة Wأي مستخدم يزوره .إذا كان هذا المستخدم موجو ًدا على شبكة داخلية للشركة ،فقد يستخدم
المهاجم Wمتصفح المستخدم لشن هجوم ضد الشبكة المحلية من الموقع الموثوق به للمستخدم .بدون أي تعاون من المستخدم ،قد يتمكن المهاجم من تنفيذ أي إجراء
يمكن للمستخدم القيام به إذا كانت ضارة بنفسها .إن مسؤولي الشبكات Wعلى دراية بفكرة منع مستخدميهم Wمن زيارة مواقع الويب الضارة ،وأصبح المستخدمون
النهائيون أكثر وعيًا تدريج ًي ا بهذا التهديد .ولكن طبيعة الثغرات األمنية في تطبيق الويب تعني أن التطبيق المعرض للخطر قد ال يمثل تهدي ًدا لمستخدميه ولمنظمتهم
على األقل من موقع ويب ضار بشكل علني .في المقابل ،يفرض محيط األمان الجديد واجب العناية على جميع مالكي التطبيقات لحماية مستخدميهم من الهجماتW
ضدهم المسلمة عبر التطبيق .مستقبل أمان تطبيقات الويب بعد عدة سنوات من اعتمادها على نطاق واسع ،ال تزال تطبيقات الويب على اإلنترنت اليوم مليئة
بالثغرات األمنية .ال يزال فهم التهديدات األمنية التي تواجه تطبيقات الويب والطرق الفعالة لمعالجتها غير ناضجة داخل الصناعة .هناك القليل من الدالئل حاليًا
على أن عوامل المشكلة الموضحة ساب ًق ا ستختفي في المستقبل القريب .ومع ذلك ،فإن تفاصيل المشهد Wاألمني لتطبيقات الويب ليست ثابتة .بينما تستمر الثغرات
القديمة والمفهومة جي ًدا مثل حقن SQLفي الظهور ،فإن انتشارها يتضاءل تدريجيًا .عالوة على ذلك ،أصبح من الصعب العثور على الحاالت المتبقية
واستغاللها .يركز الكثير من األبحاث الحالية على تطوير تقنيات متقدمة لمهاجمة مظاهر أكثر دقة لنقاط الضعف التي كان من السهل اكتشافها واستغاللها قبل
بضع سنوات باستخدام متصفح فقط .االتجاه البارز الثاني هو التحول التدريجي في االنتباه من الهجمات Wالتقليدية ضد جانب الخادم من التطبيق إلى تلك التي
تستهدف مستخدمين آخرين .ال يزال النوع األخير من الهجوم يستفيد من العيوب داخل التطبيق نفسه ،ولكنه ينطوي بشكل عام على نوع من التفاعل مع مستخدم
آخر ،للتهديد بتعامالت هذا المستخدم مع التطبيق المعرض للخطر .هذا اتجاه تم تكراره في مجاالت أخرى ألمن البرمجيات .مع نضوج الوعي بالتهديدات األمنية
،فإن العيوب في جانب الخادم هي األولى التي يتم فهمها Wومعالجتها جي ًدا ،تاركة جانب العميل كساحة Wقتال رئيسية مع استمرار عملية التعلم .من بين جميع
الهجمات Wالموصوفة في هذا الكتاب ،فإن تلك الهجمات Wضد المستخدمين اآلخرين تتطور بشكل أسرع ،وهي محور معظم األبحاث الحالية 12 .الفصل 1أمان
تطبيق الويب) In (70779c01.qxd: WileyRed 9/14/07 3:12 PM Page 12ملخص الفصل في بضع سنوات قصيرة ،تطورت شبكة الويب العالمية من
مستودعات معلومات ثابتة بحتة إلى تطبيقات عالية األداء معالجة البيانات الحساسة Wوتنفيذ إجراءات قوية ذات نتائج واقعية .خالل هذا التطور ،اجتمعت عدة
عوامل إلحداث وضعية أمنية ضعيفة أظهرتها غالبية تطبيقات الويب اليوم .تواجه معظم التطبيقات مشكلة Wاألمان األساسية التي يمكن للمستخدمين تقديم مدخالت
عشوائية .قد يكون كل جانب من جوانب تفاعل المستخدم مع التطبيق ضارً ا ويجب اعتباره كذلك ما لم يثبت خالف ذلك .قد يؤدي الفشل في معالجة هذه المشكلة
بشكل صحيح إلى جعل التطبيقات عرضة للهجوم بطرق عديدة .تشير جميع األدلة حول الحالة الحالية ألمان تطبيقات الويب إلى أن هذه المشكلة لم يتم حلها على
ً
تهديدا خطيرً ا لكل من المنظمات التي تنشرها وللمستخدمين الذين يصلون إليها. أي نطاق كبير ،وأن الهجمات Wضد تطبيقات الويب تشكل
تثير مشكلة األمان األساسية في تطبيقات الويب -التي تكون جميع مدخالت المستخدم غير موثوق بها -عد ًدا من آليات األمان التي تستخدمها التطبيقات للدفاع
عن نفسها ضد الهجوم .تستخدم جميع التطبيقات تقري ًب ا آليات متشابهة من حيث المفهوم ،على الرغم من أن تفاصيل التصميم وفعالية التنفيذ تختلف اختال ًفا كبيرً ا
في الواقع .تشتمل آليات الدفاع التي تستخدمها تطبيقات الويب على العناصر األساسية Wالتالية :التعامل مع وصول المستخدم إلى بيانات التطبيق ووظائفه ،لمنع
المستخدمين من الحصول على وصول غير مصرح به .معالجة إدخال المستخدم لوظائف التطبيق ،لمنع اإلدخال التالف من التسبب في سلوك غير مرغوب فيه.
التعامل مع المهاجمين ،للتأكد من أن التطبيق يتصرف بشكل مناسب Wعند استهدافه بشكل مباشر ،مع اتخاذ تدابير دفاعية وهجومية مناسبة إلحباط المهاجم .إدارة
التطبيق نفسه ،من خالل تمكين المسؤولين من مراقبة أنشطته وتكوين وظائفه .نظرً ا لدورها المركزي في معالجة مشكلة األمان األساسية ،تشكل هذه اآلليات
أيضً ا الغالبية العظمى من سطح هجوم التطبيق النموذجي .إذا كانت معرفة عدوك هي القاعدة األولى للحرب ،فإن فهم هذه اآلليات بدقة هو الشرط األساسي للقدرة
على مهاجمة آليات الدفاع األساسية الفصل 70779c02.qxd: WileyRed 9/14/07 3:12 PM 2صفحة 15التطبيقات بشكل فعال .إذا كنت جدي ًدا في
اختراق تطبيقات الويب ،وحتى إذا لم تكن كذلك ،فيجب أن تتأكد من تخصيص بعض الوقت لفهم كيفية عمل هذه اآلليات األساسية في كل من التطبيقات التي
تواجهها ،وتحديد نقاط الضعف التي تجعلها عرضة للهجوم .التعامل مع وصول المستخدم Wمن متطلبات األمان المركزية التي يحتاج أي تطبيق تقريبًا إلى تلبيتها
التحكم في وصول المستخدمين إلى بياناته ووظائفه .في حالة نموذجية ،هناك عدة فئات مختلفة من المستخدمين ؛ على سبيل المثال ،المستخدمون المجهولون
والمستخدمون العاديون والمستخدمون اإلداريون .عالوة على ذلك ،في العديد من الحاالت يُسمح لمستخدمين مختلفين بالوصول إلى مجموعة مختلفة من
البيانات ؛ على سبيل المثال ،يجب أن يكون مستخدمو تطبيق بريد الويب قادرين على قراءة بريدهم اإللكتروني الخاص بهم ولكن ليس قراء اآلخرين .تتعامل
معظم تطبيقات الويب مع الوصول باستخدام مجموعة ثالثية من آليات األمان المترابطة :المصادقة إدارة الجلسة التحكم في الوصول تمثل كل واحدة من هذه
اآلليات منطقة مهمة من سطح هجوم التطبيق ،وكل منها أساسي تمامًا للوضع األمني العام للتطبيق .بسبب ترابطها ،فإن األمن العام الذي توفره اآلليات هو فقط
بنفس قوة أضعف حلقة في السلسلة .قد يؤدي وجود عيب في أي مكون فردي إلى تمكين المهاجم من الوصول بشكل غير مقيد إلى وظائف التطبيق وبياناته.
المصادقة Wآلية المصادقة هي منطقيا ً التبعية األساسية في معالجة التطبيق لوصول المستخدم .تتضمن مصادقة Wالمستخدم إثبات أن المستخدم هو في الواقع من يدعي
أنه .بدون هذا المرفق ،سيحتاج التطبيق إلى معاملة Wجميع المستخدمين كمجهولين -أدنى مستوى ممكن من الثقة .تستخدم غالبية تطبيقات الويب اليوم نموذج
المصادقة Wالتقليدي الذي يقدم فيه المستخدم Wاسم المستخدم وكلمة المرور ،والذي يتحقق التطبيق من صحته .يوضح الشكل 1-2وظيفة تسجيل الدخول النموذجية.
في التطبيقات المهمة Wلألمان مثل تلك المستخدمة Wمن قبل البنوك عبر اإلنترنت ،عاد ًة ما يتم استكمال هذا النموذج األساسي ببيانات اعتماد إضافية وعملية تسجيل
دخول متعددة المراحل .عندما تكون متطلبات األمان أعلى ،قد يتم استخدام نماذج مصادقة أخرى ،بنا ًء على شهادات العميل أو البطاقات Wالذكية أو الرموز
المميزة للتحدي .في
باإلضافة إلى عملية تسجيل الدخول األساسية ، Wغالبًا ما تستخدم آليات المصادقة مجموعة من الوظائف الداعمة األخرى ،مثل التسجيل الذاتي واستعادة الحساب
وتسهيل تغيير كلمة المرور
الشكل : 1-2وظيفة تسجيل دخول نموذجية على الرغم من بساطتها السطحية ،تعاني آليات المصادقة من مجموعة واسعة من العيوب ،في التصميم والتنفيذ.
قد تمكن المشاكل الشائعة المهاجم من تحديد أسماء المستخدمين للمستخدمين اآلخرين ،أو تخمين كلمات المرور الخاصة بهم ،أو تجاوز وظيفة تسجيل الدخول
تما ًم ا من خالل استغالل العيوب في منطقه .عندما تهاجم تطبيق ويب ،يجب أن تستثمر قدرً ا كبيرً ا من االهتمام في الوظائف المختلفة المتعلقة بالمصادقة التي
يحتوي عليها .والمثير للدهشة في كثير من األحيان ،أن العيوب في هذه الوظيفة ستمكنك من الوصول غير المصرح به إلى البيانات والوظائف الحساسة .إدارة
الجلسة المهمة المنطقية التالية في عملية معالجة Wوصول المستخدم هي إدارة جلسة المستخدم المصدق عليها .بعد تسجيل الدخول بنجاح إلى التطبيق ،سوف يصل
المستخدم إلى صفحات ووظائف مختلفة ،مما يجعل سلسلة من طلبات HTTPمن المستعرض الخاص بهم .وفي الوقت نفسه ،سيتلقى التطبيق طلبات أخرى ال
تعد وال تحصى من مستخدمين مختلفين ،بعضها مصدق عليه والبعض اآلخر مجهول .من أجل فرض تحكم فعال في الوصول ،يحتاج التطبيق إلى طريقة لتحديد
ومعالجة سلسلة الطلبات التي تنشأ من كل مستخدم فريد .تقريبًا تلبي جميع تطبيقات الويب هذا الشرط من خالل إنشاء Wجلسة لكل مستخدم وإصدار رمز مميز
للمستخدم يحدد الجلسة .الجلسة نفسها هي مجموعة من هياكل البيانات الموجودة على الخادم ،والتي يتم استخدامها لتتبع حالة تفاعل المستخدم مع التطبيق .الرمز
المميز عبارة عن سلسلة فريدة يعينها التطبيق إلى الجلسة .عندما يتلقى المستخدم Wالفصل الثاني آليات الدفاع األساسية :70779c02.qxd 17الرمز المميز
WileyRed 9/14/07 3:12م صفحة ، 17يرسل المستعرض هذا تلقائيًا إلى الخادم في كل طلب HTTPالحق ،مما يتيح التطبيق لـ ربط الطلب بهذا
المستخدم .ملفات تعريف ارتباط HTTPهي الطريقة القياسية إلرسال الرموز المميزة للجلسة ،على الرغم من أن العديد من التطبيقات تستخدم حقول نموذج
مخفية أو سلسلة استعالم URLلهذا الغرض .إذا لم يقم المستخدم بتقديم طلب لفترة معينة ،فإن الجلسة تنتهي بشكل مثالي ،كما في الشكل .2-2فيما يتعلق بسطح
الهجوم ،تعتمد آلية إدارة الجلسة اعتما ًدا كبيرً ا على أمان رموزها المميزة ،وتسعى غالبية الهجمات Wضدها إلى اختراق الرموز المميزة الصادرة للمستخدمين
اآلخرين .إذا كان ذلك ممك ًنا ،يمكن للمهاجم التنكر كمستخدم Wضحية واستخدام التطبيق تما ًم ا كما لو كان قد قام بالفعل بالمصادقة على أنه ذلك المستخدم .تنشأ نقاط
الضعف الرئيسية من العيوب في طريقة إنشاء الرموز المميزة ،مما يم ّك ن المهاجم من تخمين الرموز الصادرة لمستخدمين آخرين ،والعيوب في طريقة التعامل
مع الرموز المميزة في وقت الحق ،مما يمكن المهاجم من التقاط الرموز المميزة للمستخدمين اآلخرين.
الشكل : 2-2تطبيق يفرض مهلة الجلسة يستغني عدد قليل من التطبيقات عن الحاجة إلى الرموز المميزة للجلسة باستخدام وسائل أخرى إلعادة تحديد هوية
المستخدمين عبر طلبات متعددة .إذا تم استخدام آلية المصادقة المضمنة في ، HTTPفإن المتصفح يعيد تلقائيًا إرسال بيانات اعتماد المستخدم مع كل طلب ،مما
يم ّك ن التطبيق من تحديد المستخدم مباشرة من هذه .في حاالت أخرى ،يقوم التطبيق بتخزين معلومات Wالحالة على جانب العميل بدالً من الخادم ،عاد ًة في شكل
مشفر لمنع التالعب .التحكم في الوصول إن الخطوة المنطقية النهائية في عملية معالجة وصول المستخدم هي اتخاذ وإنفاذ القرارات الصحيحة فيما يتعلق بما إذا
كان يجب السماح بكل طلب فردي أو رفضه .إذا كانت اآلليات السابقة تعمل بشكل صحيح ،فإن التطبيق يعرف هوية المستخدم الذي تم تلقي كل طلب منه .على
هذا األساس ،يجب أن يقرر ما إذا كان هذا المستخدم Wمخواًل بتنفيذ اإلجراء أو الوصول إلى البيانات التي يطلبها (انظر الشكل .)3-2عادة ما تحتاج آلية التحكم
في الوصول إلى تنفيذ بعض المنطق المدروس ،مع اعتبار اعتبارات مختلفة ذات صلة بمجاالت مختلفة من الفصل 18آليات الدفاع األساسية 70779c02.qxd:
WileyRed 9/14/07 3:12م صفحة 18التطبيق وأنواع مختلفة من وظائف .قد يدعم التطبيق العديد من أدوار المستخدم المختلفة ،كل منها يتضمن
مجموعات مختلفة من االمتيازات المحددة .قد يُسمح للمستخدمين الفرديين بالوصول إلى مجموعة فرعية من إجمالي البيانات الموجودة داخل التطبيق .قد تقوم
وظائف معينة بتطبيق حدود المعامالت Wوالفحوصات األخرى ،وكلها تحتاج إلى فرضها بشكل صحيح بنا ًء على هوية المستخدم
الشكل :3-2تطبيق يفرض التحكم في الوصول نظرً ا للطبيعة المعقدة لمتطلبات التحكم في الوصول النموذجية ،تعد هذه اآللية مصدرً ا متكررً ا لنقاط
الضعف األمنية التي تمكن المهاجم من الحصول على وصول غير مصرح به إلى البيانات والوظائف .غالبًا ما يضع المطورون افتراضات معيبة حول كيفية
تفاعل المستخدمين مع التطبيق ،وكثيرً ا ما يقومون بإجراء عمليات مراقبة من خالل حذف اختبارات التحكم في الوصول من بعض وظائف التطبيق .غالبًا ما
يكون البحث عن هذه الثغرات أمرً ا شا ًقا Wألنه يلزم بشكل أساسي تكرار عمليات التحقق نفسها لكل عنصر من الوظائف .نظرً ا النتشار عيوب التحكم في الوصول ،
فإن هذا الجهد دائمًا ما يكون استثمارً ا مفي ًد ا عندما تهاجم تطبيق ويب .معالجة إدخال المستخدم تذكر مشكلة األمان األساسية الموضحة في الفصل :1كل مدخالت
المستخدم غير موثوق بها .تتضمن مجموعة كبيرة ومتنوعة من الهجمات Wالمختلفة ضد تطبيقات الويب إرسال مدخالت غير متوقعة ،تم إعدادها إلحداث سلوك
غير مقصود من قبل مصممي التطبيق .بالمقابل ،من المتطلبات الرئيسية للدفاعات األمنية للتطبيق أنه يجب أن يتعامل مع إدخال المستخدم بطريقة آمنة .يمكن أن
تنشأ نقاط الضعف القائمة على المدخالت في أي مكان داخل وظائف التطبيق ،وفيما يتعلق عمليًا بكل نوع من التكنولوجيا في االستخدام الشائع .غالبًا ما يُشار إلى
"التحقق من صحة اإلدخال" باعتباره الدفاع الضروري ضد هذه الهجمات .ومع ذلك ،ال توجد آلية وقائية واحدة يمكن استخدامها في كل فصل 2آليات الدفاع
األساسية 70779c02.qxd: WileyRed 9/14/07 3:12 PM Page 19 19 Wحيث ،والدفاع ضد المدخالت الخبيثة غالبًا ما ال يكون صريحً ا كما يبدو .تنوع
المدخالت Wيعالج تطبيق الويب النموذجي البيانات التي يوفرها المستخدم في مجموعة من األشكال المختلفة .قد ال تكون بعض أنواع التحقق من المدخالت مجدية أو
مرغوبة لجميع أشكال المدخالت هذه .يوضح الشكل 4-2نوع التحقق من المدخالت الذي يتم إجراؤه غالبًا بواسطة وظيفة تسجيل المستخدم .في كثير من الحاالت
،قد يكون التطبيق قادرً ا على فرض عمليات تدقيق صارمة للغاية على عنصر معين من المدخالت .على سبيل المثال ،قد يُطلب من اسم مستخدم Wتم إرساله إلى
وظيفة تسجيل الدخول أن يبلغ طوله ثمانية أحرف بحد أقصى ويحتوي على أحرف أبجدية فقط .في حاالت أخرى ،يجب أن يتسامح التطبيق مع نطاق أوسع من
المدخالت Wالممكنة .على سبيل المثال ،قد يحتوي حقل العنوان الذي يتم إرساله إلى صفحة التفاصيل الشخصية بشكل شرعي على أحرف وأرقام ومسافات
وواصالت وفواصل عليا وشخصيات أخرى .بالنسبة لهذا البند ،ال تزال هناك قيود يمكن فرضها بشكل عملي .يجب أال تتجاوز البيانات ح ًدا معقواًل للطول (مثل
50حر ًفا) ،ويجب أال تحتوي على أي ترميز . HTMLفي بعض الحاالت ،قد يحتاج التطبيق إلى قبول مدخالت عشوائية تمامًا من المستخدمين .على سبيل
المثال ،يمكن لمستخدم تطبيق التدوين إنشاء مدونة موضوعها اختراق تطبيق الويب .قد تحتوي المشاركات Wوالتعليقات المدونة على المدونة بشكل شرعي على
سالسل هجوم صريحة يتم مناقشتها .قد يحتاج التطبيق إلى تخزين هذا اإلدخال داخل قاعدة بيانات ،وكتابته على القرص ،وعرضه مرة أخرى للمستخدمين
بطريقة آمنة .ال يمكنه ببساطة رفض اإلدخال ألنه قد يبدو ضارً ا دون تقليل قيمة التطبيق إلى حد كبير إلى بعض قاعدة مستخدميه.
الشكل : 4-2تطبيق يقوم بالتحقق من صحة المدخالت باإلضافة إلى األنواع المختلفة من المدخالت التي يتم إدخالها بواسطة المستخدمين عبر واجهة المتصفح ،
يتلقى التطبيق النموذجي أيضً ا العديد من عناصر البيانات التي بدأت حياتهم على الخادم والتي يتم إرسالها إلى العميل بحيث العميل 20الفصل 2آليات الدفاع
األساسية 70779c02.qxd: WileyRed 9/14/07 3:12 Wم الصفحة 20يمكن إرسالها إلى الخادم في الطلبات الالحقة .يتضمن هذا عناصر مثل ملفات تعريف
االرتباط وحقول النماذج المخفية ،والتي ال يراها المستخدمون العاديون للتطبيق ولكن يمكن للمهاجم عرضها وتعديلها بالطبع .في هذه الحاالت ،يمكن للتطبيقات
في كثير من األحيان إجراء التحقق من البيانات المحددة للغاية .على سبيل المثال ،قد يُطلب من المعلمة أن يكون لها واحدة من مجموعة محددة من القيم المعروفة
،مثل ملف تعريف ارتباط يشير إلى اللغة المفضلة للمستخدم ،أو أن يكون بتنسيق محدد ،مثل رقم مع ّرف العميل .عالوة على ذلك ،عندما يكتشف أحد
التطبيقات أن البيانات التي تم إنشاؤها بواسطة الخادم قد تم تعديلها بطريقة غير ممكنة لمستخدم عادي لديه متصفح قياسي ،فإن هذا غالبًا ما يكون إشارة إلى أن
بحث ا عن الثغرات األمنية .في هذه الحاالت ،يجب على التطبيق رفض الطلب وتسجيل الحادث للتحقيق المحتمل (راجع قسم المستخدم يحاول فحص التطبيق ً
"التعامل مع المهاجمين" Wالح ًق ا في هذا الفصل) .مقاربات لمعالجة المدخالت هناك العديد من المقاربات العريضة التي يتم أخذها بشكل عام إلى مشكلة معالجة
مدخالت المستخدم .غال ًب ا ما تكون المناهج المختلفة مفضلة لمواقف مختلفة وأنواع مختلفة من المدخالت ،وقد يكون من المستحسن في بعض األحيان الجمع بين
المناهج "Reject Known Bad " .يستخدم هذا النهج عاد ًة قائمة Wسوداء تحتوي على مجموعة من السالسل أو األنماط الحرفية المعروفة باستخدامها في الهجماتW.
تحظر آلية التحقق أي بيانات تطابق القائمة السوداء وتسمح بكل شيء آخر .بشكل عام ،يعتبر هذا النهج األقل فعالية للتحقق من إدخال المستخدم ،لسببين
رئيسيين .أوالً ،يمكن استغالل الثغرة النمطية في تطبيق الويب باستخدام مجموعة متنوعة من المدخالت المختلفة ،والتي يمكن ترميزها أو تمثيلها بطرق مختلفة
مختلفة .باستثناء أبسط الحاالت ،من المحتمل أن تحذف القائمة السوداء بعض أنماط اإلدخال التي يمكن استخدامها لمهاجمة Wالتطبيق .ثانيا ً ،تقنيات االستغالل
تتطور باستمرار .من غير المحتمل أن تمنع القوائم السوداء الحالية األساليب الجديدة الستغالل فئات الضعف الحالية "Accept Known Good" .يستخدم هذا
النهج قائمة بيضاء تحتوي على مجموعة من السالسل أو األنماط الحرفية ،أو مجموعة من المعايير ،المعروفة بمطابقة المدخالت الحميدة فقط .تسمح آلية التحقق
بالبيانات التي تتطابق مع القائمة البيضاء وتحظر كل شيء آخر .على سبيل المثال ،قبل البحث عن رمز المنتج المطلوب في قاعدة البيانات ،قد يتحقق أحد
التطبيقات من أنه يحتوي على أبجدية رقمية فقط
األحرف وهو ستة أحرف بالضبط .بالنظر إلى المعالجة الالحقة التي سيتم إجراؤها على رمز المنتج ،يعرف المطورون أن اإلدخال الذي يجتاز هذا االختبار
ال يمكن أن يسبب أي مشاكل .في الحاالت التي يكون فيها هذا النهج ممكنا ً ،يعتبر أنه الطريقة األكثر فعالية للتعامل مع المدخالت الخبيثة المحتملة .شريطة
مراعاة العناية الواجبة في إنشاء القائمة البيضاء ،لن يتمكن المهاجم من استخدام اإلدخال المصمم للتدخل في سلوك التطبيق .ومع ذلك ،هناك العديد من المواقف
التي يجب أن يقبل فيها التطبيق بيانات للمعالجة ال تفي بأي معايير معقولة لما يُعرف بأنه "جيد" .على سبيل المثال ،تحتوي بعض أسماء األشخاص على الفاصلة
العليا وأحرف الواصلة .يمكن استخدامها في الهجمات ضد قواعد البيانات ،ولكن قد يكون من الضروري أن يسمح التطبيق ألي شخص بالتسجيل تحت اسمه
الحقيقي .ومن ثم ،فبينما تكون هذه الطريقة فعالة للغاية في كثير من األحيان ،فإن النهج القائم على القائمة البيضاء ال يمثل حالً لجميع األغراض لمشكلة معالجة
مدخالت المستخدم .التعقيم يعترف هذا النهج بالحاجة إلى قبول البيانات التي ال يمكن ضمان أمانها في بعض األحيان .بدالً من رفض هذا اإلدخال ،يقوم التطبيق
بتعقيمه بطرق مختلفة لمنعه من إحداث أي آثار سلبية .قد تتم إزالة األحرف التي يحتمل أن تكون ضارة من البيانات تمامًا ،تاركة فقط ما يُعرف بأنه آمن ،أو قد
يتم تشفيرها أو "الهروب" منها بشكل مناسب قبل إجراء المزيد من المعالجة .غالبًا ما تكون النهج القائمة على تعقيم البيانات فعالة للغاية ،وفي كثير من الحاالت
يمكن االعتماد عليها كحل عام لمشكلة المدخالت Wالخبيثة .على سبيل المثال ،يتمثل الدفاع المعتاد ضد هجمات البرمجة النصية عبر المواقع في ترميز HTML
لألحرف الخطرة قبل تضمينها في صفحات التطبيق (انظر الفصل .) 12ومع ذلك ،قد يكون من الصعب تحقيق التعقيم الفعال إذا كانت هناك حاجة إلى استيعاب
عدة أنواع من البيانات الضارة المحتملة في عنصر واحد من المدخالت .في هذه الحالة ،من المستحسن نهج التحقق من الحدود ،كما هو موضح الح ًقا .المعالجة
اآلمنة للبيانات تنشأ الكثير من نقاط الضعف في تطبيقات الويب نظرً ا ألنه تتم معالجة البيانات التي يوفرها المستخدم بطرق غير آمنة .غالبًا ما يكون من الممكن
تجنب الثغرات ،ليس من خالل التحقق من صحة المدخالت نفسها ولكن من خالل ضمان أن المعالجة التي يتم إجراؤها عليها آمنة بطبيعتها .في بعض الحاالت ،
تتوفر طرق برمجة آمنة تتجنب المشاكل الشائعة .على سبيل المثال ،يمكن منع هجمات Wحقن SQLمن خالل االستخدام الصحيح لالستعالمات ذات المعلماتW
للوصول إلى قاعدة البيانات (انظر الفصل .) 9في حاالت أخرى ،يمكن تصميم وظائف التطبيق بطريقة تؤدي إلى ممارسات غير آمنة بطبيعتها ،
مثل تمرير إدخال المستخدم إلى مترجم أوامر نظام التشغيل ،يتم تجنبها تما ًم ا .ال يمكن تطبيق هذا النهج على كل نوع من المهام التي تحتاجها تطبيقات الويب
ألداءها ،ولكن عندما تكون متاحة ،فهي طريقة عامة فعالة للتعامل مع المدخالت الضارة المحتملة .الشيكات الداللية الدالليّة تعالج الدفاعات Wالموصوفة حتى اآلن
الحاجة للدفاع عن التطبيق ضد أنواع مختلفة من البيانات المشوهة التي تم تصميم محتواها للتدخل في معالجة Wالتطبيق .ومع ذلك ،في بعض نقاط الضعف ،يكون
اإلدخال الذي قدمه المهاجم مطاب ًق ا لإلدخال الذي قد يقدمه المستخدم العادي وغير الضار .ما يجعلها ضارة هو الظروف المختلفة التي يتم تقديمها فيها .على سبيل
المثال ،قد يسعى المهاجم إلى الوصول إلى حساب مصرفي لمستخدم آخر عن طريق تغيير رقم حساب تم إرساله في حقل نموذج مخفي .لن يميز أي قدر من
التحقق النحوي بين بيانات المستخدم وبيانات المهاجم .لمنع الوصول غير المصرح به ،يحتاج التطبيق إلى التحقق من أن رقم الحساب Wالمقدم ينتمي إلى المستخدم
الذي أرسله .التحقق من الحدود إن فكرة التحقق من البيانات عبر حدود الثقة هي فكرة مألوفة .تنشأ مشكلة األمان األساسية مع تطبيقات الويب ألن البيانات الواردة
من المستخدمين غير موثوق بها .في حين أن عمليات التحقق من صحة اإلدخال التي يتم تنفيذها من جانب العميل قد تحسن األداء وتجربة المستخدم ،إال أنها ال
تقدم أي ضمان بشأن البيانات التي تصل فعل ًي ا إلى الخادم .تمثل النقطة التي يتم عندها تلقي بيانات المستخدم ألول مرة بواسطة التطبيق من جانب الخادم حدود ثقة
ضخمة ،حيث يحتاج التطبيق إلى اتخاذ تدابير للدفاع عن نفسه ضد اإلدخال الضار .نظرً ا لطبيعة المشكلة Wاألساسية ،من المغري التفكير في مشكلة التحقق من
صحة المدخالت Wمن حيث وجود حد بين اإلنترنت ،وهو "سيئ" وغير موثوق به ،والتطبيق من جانب الخادم ،وهو "جيد" وموثوق .في هذه الصورة ،يتمثل
دور التحقق من صحة اإلدخال في تنظيف البيانات التي يحتمل أن تكون ضارة عند الوصول ثم تمرير البيانات النظيفة إلى التطبيق الموثوق .من هذه النقطة
فصاعد ا ،يمكن الوثوق بالبيانات ومعالجتها دون أي عمليات تحقق أو قلق بشأن الهجمات المحتملة .كما سيتضح عندما نبدأ في فحص بعض نقاط الضعف ً
ا للمجموعة الواسعة من الوظائف التي تنفذها التطبيقات ،والتقنيات نظرً الفعلية ،فإن هذه الصورة البسيطة للتحقق من صحة المدخالت Wغير كافية ،لعدة أسباب:
المختلفة المستخدمة ،يحتاج التطبيق النموذجي إلى تدافع عن نفسها ضد مجموعة كبيرة من الهجمات القائمة على المدخالت ،كل منها قد يدافعتوظيف مجموعة
متنوعة من البيانات المصنوعة .سيكون من الصعب جدا استنباط آلية واحدة على الحدود الخارجية للدفاع ضد كل من هذه الهجمات.
تتضمن العديد من وظائف التطبيق سلسلة معا سلسلة من أنواع مختلفة من المعالجة .قطعة واحدة من اإلدخال الذي يوفره المستخدم قد يؤدي إلى عدد من
العمليات في مكونات مختلفة ،مع إخراج كل يجري استخدامها كمدخالت Wللتالي .كما البيانات تحولت ،فإنه قد يأتي إلى تحمل أي تشابه مع األصلي اإلدخال ،وقد
يتمكن المهاجم الماهر من معالجة التطبيق للتسبب في إنشاء إدخال ضار في مرحلة رئيسية من المعالجة ،مهاجمة Wالمكون الذي يتلقى هذه البيانات .سيكون من
الصعب للغاية تنفيذ آلية التحقق من الصحة في الخارج
الحدود لتوقع جميع النتائج المحتملة لمعالجة كل قطعة من إدخال المستخدم.قد ينطوي الدفاع ضد فئات مختلفة من الهجوم القائم على المدخالت إجراء عمليات
تحقق مختلفة من التحقق من الصحة على إدخال المستخدم غير متوافقة مع بعضها البعض .على سبيل المثال ،منع البرمجة النصية عبر الموقع
قد تتطلب الهجمات Wترميز HTMLحرف > كما & ;gtفي حين منع هجمات حقن األوامر قد تتطلب منع المدخالت Wالتي تحتوي على و ; االحرف .محاولة منع
جميع فئات الهجوم في وقت واحد عند الحدود الخارجية للتطبيق قد في بعض األحيانيكون من المستحيل.يستخدم نموذج أكثر فعالية مفهوم التحقق من صحة
الحدود .هنا ،كاللمكونات الفردية أو وحدة وظيفية من التطبيق من جانب الخادم يعاملمدخالتها كما تأتي من مصدر خبيث محتمل .التحقق من صحة البيانات
هوأجريت عند كل من هذه الحدود الثقة ،باإلضافة إلى الحدود الخارجيةبين العميل والخادم .يوفر هذا النموذج حال للمشاكاللموضحة Wفي القائمة السابقة .يمكن لكل
مكون الدفاع عن نفسه ضدأنواع محددة من المدخالت Wالمصنوعة التي قد تكون عرضة لها .أثناء مرور البياناتمن خالل مكونات مختلفة ،يمكن إجراء عمليات
التحقق من الصحة ضدمهما Wكانت القيمة التي تحتوي عليها البيانات نتيجة للتحويالت السابقة .وألن يتم تنفيذ عمليات التحقق من الصحة المختلفة في مراحل
مختلفة منالمعالجة ،فمن غير المرجح أن تتعارض مع بعضها البعض.يوضح الشكل 5-2حالة نموذجية حيث يكون التحقق من صحة الحدود هوالنهج األكثر
فعالية للدفاع ضد المدخالت الخبيثة .تسجيل دخول المستخدمالنتائج في عدة خطوات من المعالجة Wالتي يتم تنفيذها على المدخالت Wالتي يوفرها المستخدم،ويتم
التحقق من الصحة المناسبة في كل خطوة .:يتلقى التطبيق تفاصيل تسجيل دخول المستخدم .يتحقق معالج النموذج من أن كل عنصر من عناصر اإلدخال يحتوي
على أحرف مسموح بها فقط ،هوضمن حد طول محدد ،وال يحتوي على أي هجوم معروفالتوقيعات
.2ينفذ التطبيق استعالم SQLللتحقق من بيانات اعتماد المستخدم .لمنع هجمات Wإدخال ، SQLيتم إفالت أي أحرف ضمن إدخال المستخدم يمكن استخدامها
لمهاجمة قاعدة البيانات قبل إنشاء االستعالم . 3 .في حالة نجاح تسجيل الدخول ،يمرر التطبيق بيانات معينة من الملف الشخصي للمستخدم إلى خدمة SOAP
السترداد المزيد من المعلومات حول حسابها .لمنع هجمات حقن ، SOAPيتم ترميز أي حروف تعريف XMLضمن بيانات ملف تعريف المستخدم بشكل مناسب.
.4يعرض التطبيق معلومات حساب Wالمستخدم مرة أخرى إلى متصفح المستخدم .لمنع هجمات البرمجة النصية عبر المواقع ،يقوم تطبيق HTMLبتشفير أي
بيانات يوفرها المستخدم وتكون مضمنة في الصفحة التي تم إرجاعها.
الشكل : 5-2وظيفة التطبيق باستخدام التحقق من الحدود في مراحل متعددة من المعالجة سيتم فحص نقاط الضعف والدفاعات Wالمحددة المشاركة في السيناريو
الموصوف بالتفصيل في الفصول الالحقة .إذا تضمنت االختالفات في هذه الوظيفة تمرير البيانات إلى مكونات التطبيق اإلضافية ،فسيلزم تنفيذ دفاعات Wمماثلة
عند حدود الثقة ذات الصلة .على سبيل المثال ،إذا تسبب تسجيل دخول فاشل في أن يرسل التطبيق رسالة بريد إلكتروني تحذيرية إلى المستخدم ، Wفقد تحتاج إلى
بحثا عن هجمات إدخال .SMTP التحقق من أي بيانات مستخدم مضمنة في البريد اإللكتروني ً
التحقق من صحة الخطوات المتعددة وإضفاء الطابع الكنسي تظهر مشكلة شائعة Wتواجهها آليات معالجة المدخالت عندما يتم التالعب باإلدخال الذي يقدمه
المستخدم عبر عدة خطوات كجزء من منطق التحقق من الصحة .إذا لم يتم التعامل مع هذه العملية بعناية ،فقد يتمكن المهاجم من إنشاء مدخالت معدّة تنجح في
تهريب البيانات الضارة من خالل آلية التحقق .يحدث أحد إصدارات هذه المشكلة عندما يحاول أحد التطبيقات تطهير إدخال المستخدم عن طريق إزالة أو ترميز
بعض األحرف أو التعبيرات .على سبيل المثال ،قد يحاول تطبيق الدفاع ضد بعض هجمات البرمجة النصية عبر المواقع عن طريق تجريد التعبير
من أي بيانات مقدمة من المستخدم .ومع ذلك ،قد يتمكن المهاجم من تجاوز الفلتر عن طريق توفير اإلدخال التالي:
عند إزالة التعبير المحظور ،تتقلص البيانات المحيطة الستعادة الحمولة الخبيثة ،ألن المرشح ال يتم تطبيقه بشكل متكرر .وبالمثل ،إذا تم تنفيذ أكثر من خطوة
تحقق واحدة عند إدخال المستخدم ،فقد يتمكن المهاجم من استغالل ترتيب هذه الخطوات لتجاوز المرشح .على سبيل المثال ،إذا قام التطبيق أوالً بإزالة عالمات
البرامج النصية بشكل متكرر ثم شطب أي عالمات اقتباس ،فيمكن استخدام اإلدخال التالي إللغاء التحقق من الصحة:
تنشأ مشكلة مختلفة فيما يتعلق بتحديد البيانات .عند إرسال اإلدخال من متصفح المستخدم ،قد يتم ترميزه بطرق مختلفة .توجد أنظمة التشفير هذه حتى يمكن
إرسال األحرف غير العادية والبيانات الثنائية بأمان عبر ( HTTPانظر الفصل 3لمزيد من التفاصيل) Canonicalization .هو عملية تحويل البيانات أو فك
تشفيرها إلى مجموعة أحرف مشتركة .إذا تم إجراء أي تحديد قانوني بعد تطبيق مرشحات Wاإلدخال ،فقد يتمكن المهاجم من استخدام الترميز لتجاوز آلية التحقق.
على سبيل المثال ،قد يحاول تطبيق الدفاع ضد بعض هجمات حقن SQLعن طريق إزالة حرف الفاصلة العليا من إدخال المستخدم .ومع ذلك ،إذا كانت البيانات
المطهرة قد أصبحت أساسية في وقت الحق ،فقد يتمكن المهاجم Wمن استخدام النموذج المشفر بعنوان URL
%27
لهزيمة المصادقة .إذا قام التطبيق بتجريد هذا النموذج المشفر بعنوان ، URLولكنه قام أي ً
ض ا بإجراء مزيد من التحليل األساسي ،فقد يكون تجاوز المسار التالي
فعااًل :
خالل هذا الكتاب ،سنصف العديد من الهجمات Wمن هذا النوع والتي تكون فعالة في هزيمة دفاعات Wالعديد من التطبيقات ضد نقاط الضعف الشائعة القائمة على
المدخالت .قد يكون من الصعب في بعض األحيان تجنب المشكالت المتعلقة بالتحقق من صحة الخطوات المتعددة والتحليل األساسي ،وال يوجد حل واحد لهذه
المشكلة .يتمثل أحد األساليب في تنفيذ خطوات التعقيم بشكل متكرر ،حتى ال يتم إجراء أي تعديالت أخرى على عنصر اإلدخال .ومع ذلك ،عندما ينطوي
التطهير المطلوب على الهروب من شخصية إشكالية ،فقد يؤدي هذا إلى حلقة ال نهائية .في كثير من األحيان ،ال يمكن معالجة المشكلة إال على أساس كل حالة
على حدة ،بنا ًء على أنواع التحقق التي يتم إجراؤها .حيثما كان ذلك ممك ًن ا ،قد يكون من األفضل تجنب محاولة تنظيف بعض أنواع المدخالت السيئة ،ورفضها
تمامًا .التعامل مع المهاجمين Wيجب على أي شخص يقوم بتصميم تطبيق يكون أمانه مه ًم ا عن بُعد أن يعمل على افتراض أنه سيتم استهدافه بشكل مباشر من قبل
مهاجمين متخصصين ومهرة .تتمثل إحدى الوظائف الرئيسية آلليات أمان التطبيق في القدرة على التعامل مع هذه الهجمات Wوالرد عليها بطريقة محكومة .غالبًا ما
تتضمن هذه اآلليات مزيجً ا من التدابير الدفاعية والهجومية المصممة Wإلحباط المهاجم Wقدر اإلمكان ،وتقديم إخطار وأدلة مناسبة ألصحاب التطبيق لما حدث.
تتضمن اإلجراءات التي يتم تنفيذها للتعامل مع المهاجمين عاد ًة المهام التالية:
التعامل مع األخطاء ■ ■ تنبيه المسؤولين
■ رد فعل على الهجماتW ■ الحفاظ على سجالت التدقيق
معالجة األخطاء على الرغم من الحرص الذي يقوم به مطورو التطبيق في التحقق من إدخال المستخدم ،فمن المحتم أن تحدث بعض األخطاء غير المتوقعة .من
المحتمل أن يتم تحديد األخطاء الناتجة عن تصرفات المستخدمين العاديين أثناء اختبار الوظائف وقبول المستخدم ،وبالتالي سيتم أخذها في االعتبار قبل نشر
التطبيق في سياق اإلنتاج .ومع ذلك ،من الصعب ج ًد ا توقع كل طريقة ممكنة يمكن أن يتفاعل بها المستخدم الضار مع التطبيق ،وبالتالي يجب توقع المزيد من
األخطاء عندما يتعرض التطبيق للهجوم .الفصل الثاني آليات الدفاع األساسية 70779c02.qxd: WileyRed 9/14/07 3:12 PM Page 27 27آلية الدفاع
الرئيسية هي أن يقوم التطبيق بمعالجة األخطاء غير المتوقعة بطريقة رشيقة ،وإما التعافي منها أو تقديم خطأ مناسب رسالة للمستخدم .في سياق اإلنتاج ،يجب
أبدا أي رسائل تم إنشاؤها من قبل النظام أو معلومات Wتصحيح أخرى في استجاباته .كما سترى في جميع أنحاء هذا الكتاب ،يمكن أن تساعد أال يُرجع التطبيق ً
رسائل الخطأ المطلقة بشكل مفرط المستخدمين الضارين في تعزيز هجماتهم ضد التطبيق .في بعض المواقف ،يمكن للمهاجم االستفادة من معالجة األخطاء
المعيبة السترداد المعلومات الحساسة Wضمن رسائل الخطأ نفسها ،مما يوفر قناة قيمة لسرقة البيانات من التطبيق .يُظهر الشكل 6-2مثاالً على خطأ غير معالَج
ينتج عنه رسالة خطأ مطوّ ل.
الشكل :6-2خطأ غير معالَج توفر معظم لغات تطوير الويب دعمًا جي ًد ا لمعالجة األخطاء من خالل عمليات حظر المحاولة واالستثناءات المحددة .يجب أن
يستخدم رمز التطبيق على نطاق واسع هذه التركيبات اللتقاط أخطاء محددة وعامة والتعامل معها بشكل مناسب .عالوة على ذلك ،يمكن تكوين معظم خوادم
التطبيقات للتعامل مع أخطاء التطبيقات التي لم تتم معالجتها بطرق مخصصة ،على سبيل المثال من خالل 28الفصل 2آليات الدفاع األساسية70779c02.qx W
d: WileyRed 9/14/07 3:12م صفحة 28تقدم رسالة خطأ غير مفيدة .انظر الفصل 14لمزيد من التفاصيل عن هذه التدابير .غالبًا ما يتم دمج معالجة
األخطاء الفعالة مع آليات تسجيل التطبيق ،والتي تسجل أكبر قدر ممكن من معلومات Wالتصحيح حول األخطاء غير المتوقعة .في كثير من األحيان ،تشير
األخطاء غير المتوقعة إلى عيوب داخل دفاعات التطبيق يمكن معالجتها Wفي المصدر إذا كان مالك التطبيق لديه المعلومات المطلوبة .االحتفاظ بسجالت التدقيق تعد
سجالت التدقيق ذات قيمة في المقام األول عند التحقيق في محاوالت التطفل على أحد التطبيقات .بعد مثل هذا الحادث ،يجب أن تمكن سجالت Wالتدقيق الفعالة
أصحاب التطبيق من فهم ما حدث بالضبط ،وما هي نقاط الضعف (إن وجدت) التي تم استغاللها ،وما إذا كان المهاجم قد حصل على وصول غير مصرح به
إلى البيانات أو قام بأي إجراءات غير مصرح بها ،وبقدر اإلمكان ،تقديم دليل على هوية الدخيل .في أي تطبيق مهم لألمان ،يجب تسجيل األحداث الرئيسية
كمسألة بالطبع .على األقل ،تتضمن هذه عاد ًة
جميع األحداث المتعلقة بوظيفة المصادقة ،مثل الناجحة
وتسجيل الدخول الفاشل وتغيير كلمة المرور.
■ المعامالت الرئيسية ،مثل مدفوعات بطاقات Wاالئتمان وتحويل األموال.
■ محاوالت الوصول التي تم حظرها بواسطة آليات التحكم في الوصول.
■ أي طلبات تحتوي على سالسل هجوم معروفة تشير بشكل صريح
نوايا خبيثة.
في العديد من التطبيقات المهمة Wلألمان ،مثل تلك التي تستخدمها البنوك عبر اإلنترنت ،يتم تسجيل كل طلب عميل فردي بالكامل ،مما يوفر سجاًل شرعيًا كامالً
يمكن استخدامه للتحقيق في أي حوادث .عاد ًة ما تسجل سجالت التدقيق الفعالة وقت كل حدث وعنوان IPالذي تم استالم الطلب منه ورمز الجلسة وحسابW
المستخدم (في حالة المصادقة) .يجب حماية هذه السجالت بقوة ضد الوصول غير المصرح به للقراءة أو الكتابة .الطريقة الفعالة هي تخزين سجالت المراجعة
على نظام مستقل يقبل فقط رسائل التحديث من التطبيق الرئيسي .في بعض الحاالت ،قد يتم نقل السجالت إلى وسائط الكتابة مرة واحدة لضمان سالمتها Wفي حالة
حدوث هجوم ناجح .فيما يتعلق بسطح الهجوم ،يمكن أن توفر سجالت التدقيق المحمية بشكل سيء منجم ذهب للمعلومات للمهاجم ، Wوتكشف عن مجموعة من
المعلومات الحساسة Wمثل رموز الجلسة ومعلمات Wالطلب التي قد تمكنهم من اختراق التطبيق بالكامل على الفور (انظر الشكل .) 7-2
الشكل :7-2سجالت Wالتطبيق المحمية بشكل سيئ والتي تحتوي على معلومات حساسة Wمقدمة من مستخدمين آخرين ومع ذلك ،في العديد من المواقف ،من
المرغوب فيه اتخاذ إجراءات فورية أكثر بكثير ،في الوقت الحقيقي ،ر ًدا على محاوالت الهجمات W.على سبيل المثال ،يمكن للمسؤولين حظر عنوان IPأو
حساب المستخدم الذي يستخدمه المهاجم .في الحاالت القصوى ،قد يأخذون التطبيق في وضع عدم االتصال أثناء التحقيق في الهجوم واتخاذ اإلجراءات العالجية.
حتى إذا حدث تسلل ناجح بالفعل ،فقد يتم تخفيف آثاره العملية إذا تم اتخاذ إجراء دفاعي في مرحلة مبكرة .في معظم الحاالت ،يجب أن توازن آليات التنبيه بين
األهداف المتضاربة لإلبالغ عن كل هجوم حقيقي بشكل موثوق وعدم توليد الكثير من التنبيهات Wالتي يتم تجاهلها .يمكن أن تستخدم آلية التنبيه المصممة جي ًدا
مجموعة من العوامل لتشخيص وقوع هجوم محدد ،ويمكنها تجميع األحداث ذات الصلة في تنبيه واحد حيثما أمكن .غالبًا ما تتضمن األحداث الشاذة التي يتم
رصدها بواسطة آليات التنبيه ما يلي:
شذوذ االستخدام ،مثل تلقي عدد كبير من الطلبات
من عنوان IPأو مستخدم واحد ،مما يشير إلى هجوم كتابي.
■ الشذوذات التجارية ،مثل عدد غير معتاد من عمليات تحويل األموال
يجري من أو إلى حساب مصرفي واحد.
■ الطلبات التي تحتوي على سالسل هجوم معروفة.
■ الطلبات التي تم فيها إخفاء البيانات عن المستخدمين العاديين
تم التعديل.
ً
يمكن توفير بعض هذه الوظائف بشكل جيد بشكل معقول من خالل الجدران النارية للتطبيقات الجاهزة ومنتجات كشف التسلل .تستخدم هذه عادة مزيجً ا من
القواعد القائمة على التوقيع والشذوذ لتحديد االستخدام الضار للتطبيق ،وقد تمنع بشكل متفاعل الطلبات الضارة باإلضافة إلى إصدار تنبيهات للمسؤولين .يمكن أن
خاصة في حالة التطبيقات الموجودة المعروف أنها تحتوي على مشاكل ولكن حيث ال تتوفر ً تشكل هذه المنتجات طبقة قيمة من الدفاع تحمي تطبيق الويب ،
الموارد إلصالحها على الفور .ومع ذلك ،فإن فعاليتها محدودة عادة بحقيقة أن كل تطبيق ويب مختلف ،وبالتالي فإن القواعد المستخدمة Wهي حتمًا عامة إلى حد
ما .عاد ًة ما تكون الجدران النارية لتطبيق الويب جيدة في تحديد أكثر الهجمات Wوضوحً ا ،حيث يقوم المهاجم بإرسال سالسل هجوم قياسية في كل معلمة طلب.
ومع ذلك ،فإن العديد من الهجمات أكثر دقة من ذلك ،على سبيل المثال تعديل رقم الحساب في حقل مخفي للوصول إلى بيانات مستخدم آخر ،أو إرسال الطلبات
خارج التسلسل الستغالل العيوب في منطق التطبيق .في هذه الحاالت ،قد يكون الطلب الذي يقدمه المهاجم Wمطاب ًقا للطلب الذي قدمه مستخدم حميد -ما يجعله
ضارً ا هو الظروف التي يتم فيها .في أي تطبيق أمني بالغ األهمية ،فإن الطريقة األكثر فاعلية لتنفيذ التنبيه في الوقت الفعلي هي دمج ذلك بإحكام مع آليات التحقق
من إدخال التطبيق وعناصر التحكم األخرى .على سبيل المثال ،إذا كان من المتوقع أن يحتوي ملف تعريف االرتباط على مجموعة معينة من القيم ،فإن أي
انتهاك لهذا يشير إلى أن قيمته قد تم تعديلها بطريقة غير ممكنة Wللمستخدمين العاديين للتطبيق .وبالمثل ،إذا قام مستخدم بتغيير رقم حساب Wفي حقل مخفي لتحديد
حساب مستخدم مختلف ،فهذا يشير بقوة إلى نية خبيثة .يجب أن يتحقق التطبيق بالفعل من هذه الهجمات كجزء من دفاعاته األساسية ،ويمكن آلليات الحماية هذه
الربط بسهولة مع آلية تنبيه التطبيق لتوفير مؤشرات مخصصة بالكامل للنشاط الضار .نظرً ا ألن هذه الفحوصات قد تم تصميمها Wوف ًقا للمنطق الفعلي للتطبيق ،مع
معرفة دقيقة بالكيفية التي يجب أن يتصرف بها المستخدمون العاديون ،فهي أقل عرضة لإليجابيات الخاطئة من أي حل جاهز ،مهما كانت قابلة للتكوين أو قادرة
على معرفة ذلك قد يكون الحل .الرد على الهجمات Wباإلضافة إلى تنبيه المسؤولين ،تحتوي العديد من التطبيقات المهمة لألمان على آليات مضمنة للرد بشكل
دفاعي على المستخدمين الذين تم تحديدهم على أنهم يحتمل أن يكونوا ضارين .نظرً ا الختالف كل تطبيق ،تتطلب معظم الهجمات Wفي العالم الحقيقي من المهاجمW
التحقيق بشكل منهجي في الثغرات ،وإرسال العديد من الطلبات التي تحتوي على مدخالت مُصممة Wلإلشارة إلى وجود العديد من الثغرات الشائعة .ستحدد آليات
التحقق من صحة المدخالت Wالفعالة العديد من هذه الطلبات على أنها قد تكون ضارة ،وتحظر المدخالت من الفصل 2آليات الدفاع األساسية 31
70779c02.qxd: WileyRed 9/14/07 3:12 PM Page 31لها أي تأثير غير مرغوب فيه على التطبيق .ومع ذلك ،فمن المنطقي أن نفترض وجود بعض
تجاوزات هذه المرشحات ،وأن التطبيق يحتوي بالفعل على بعض نقاط الضعف الفعلية التي تنتظر اكتشافها واستغاللها .في مرحلة ما ،من المرجح أن يكتشف
المهاجم Wالذي يعمل بشكل منظم هذه العيوب .لهذا السبب ،تتخذ بعض التطبيقات إجراءات رد فعل تلقائية إلحباط أنشطة المهاجم الذي يعمل بهذه الطريقة ،على
سبيل المثال من خالل االستجابة ببطء متزايد لطلبات المهاجم أو إنهاء جلسة المهاجم ، Wمما يتطلب منه تسجيل الدخول أو تنفيذ خطوات أخرى قبل مواصلة
الهجوم .في حين أن هذه اإلجراءات لن تهزم المهاجم Wاألكثر صبرً ا وحازمًا ،فإنها ستردع المزيد من المهاجمين Wالعرضيين ،وستشتري وق ًتا إضافيًا للمسؤولين
لمراقبة الوضع واتخاذ إجراءات أكثر صرامة إذا رغبت في ذلك .إن رد الفعل على المهاجمين الظاهريين ليس بالطبع بديالً عن إصالح أي ثغرات موجودة داخل
التطبيق .ومع ذلك ،في العالم الحقيقي ،حتى أكثر الجهود الدؤوبة لتطهير تطبيق العيوب األمنية قد تترك بعض العيوب القابلة لالستغالل المتبقية .وضع المزيد
من العوائق في طريق المهاجم Wهو إجراء دفاعي متعمق فعال يقلل من احتمالية العثور على أي ثغرات متبقية واستغاللها.
إدارة التطبيق يحتاج أي تطبيق مفيد إلى إدارته وإدارته ،وغالبًا ما يشكل هذا المرفق جزءًا أساسيًا من آليات أمان التطبيق ،مما يوفر طريقة للمسؤولين
إلدارة حسابات المستخدمين وأدوارهم ،والوصول إلى وظائف المراقبة والتدقيق ،وأداء مهام التشخيص ،و تكوين جوانب وظائف التطبيق .في العديد من
التطبيقات ،يتم تنفيذ الوظائف اإلدارية داخل التطبيق نفسه ،ويمكن الوصول إليها من خالل نفس واجهة الويب مثل وظيفة عدم األمان األساسية ،كما هو موضح
في الشكل .8-2في هذه الحالة ،تمثل اآللية اإلدارية جزءًا مهمًا من سطح هجوم التطبيق .جاذبيتها األساسية Wللمهاجم هي وسيلة لتصعيد االمتياز ،على سبيل
المثال:
قد تم ّكن المهاجم نقاط الضعف في آلية المصادقة
للحصول على حق الوصول اإلداري ،مما يعرض للخطر بشكل كامل تطبيق .العديد من التطبيقات ال تنفذ التحكم في الوصول الفعال لبعض وظائفهم اإلدارية .قد
يجد المهاجم وسيلة إلنشاء حساب مستخدم جديد بامتيازات قوية .غالبًا ما تتضمن الوظائف اإلدارية عرض البيانات التي تم إنشاؤها من المستخدمين العاديين .أي
عيوب البرمجة النصية عبر المواقع داخل يمكن أن تؤدي الواجهة اإلدارية إلى تسوية جلسة عمل المستخدم مضمونة المتيازات قوية .غالبًا ما تخضع الوظائف
اإلدارية ألمان أقل صرامة االختبار ،ألن مستخدميها يعتبرون موثوق بهم ،أو ألن مخترقي االختراق يتم منحهم حق الوصول فقط إلى الحسابات Wذات االمتيازات
المنخفضة .عالوة على ذلك غالبًا ما تكون هناك حاجة ألداء عمليات خطيرة بطبيعتها ،تنطوي على الوصول إلى الملفات الموجودة على أوامر القرص أو نظام
التشغيل .إذا استطاع مهاجم Wالمساومة على الوظيفة اإلدارية ،يمكنهم االستفادة منها في كثير من األحيان السيطرة على الخادم بأكمله
الشكل : 8-2واجهة إدارية داخل تطبيق ويب .ملخص الفصل على الرغم من اختالفاتهم الواسعة ،تستخدم جميع تطبيقات الويب تقريبًا نفس آليات األمان األساسيةW
بشكل أو بآخر .تمثل هذه اآلليات الدفاعات Wاألساسية للتطبيق ضد المستخدمين الضارين ،وبالتالي فهي تشكل أيضً ا الجزء األكبر من سطح هجوم التطبيق .تنشأ
نقاط الضعف التي سندرسها الح ًق ا في هذا الكتاب بشكل أساسي من العيوب الموجودة في هذه اآلليات األساسية .من بين هذه المكونات ،تعد آليات التعامل مع
وصول المستخدم وإدخاالت المستخدم هي األكثر أهمية ويجب أن تستحوذ على معظم انتباهك عند الفصل الثاني آليات الدفاع األساسية70779c02.qxd: 33 W
WileyRed 9/14/07 3:12م صفحة 33لك تستهدف تطبي ًقا .غالبًا ما تؤدي العيوب في هذه اآلليات إلى تسوية تامة للتطبيق ،مما يتيح لك الوصول إلى
البيانات الخاصة بمستخدمين آخرين ،وتنفيذ إجراءات غير مصرح بها ،وإدخال التعليمات البرمجية واألوامر التعسفية.
يمكن العثور على إجابات األسئلة على . www.wiley.com/go/webhacker. 1لماذا تعد آليات التطبيق للتعامل مع وصول المستخدم قوية مثل أضعف
هذه المكونات؟ .2ما الفرق بين الجلسة ورمز الجلسة؟ .3لماذا ال يمكن دائ ًم ا استخدام نهج قائم على القائمة البيضاء للتحقق من صحة اإلدخال؟ .4أنت تهاجم
تطبيق يقوم بتنفيذ وظيفة إدارية .ليس لديك أي بيانات اعتماد صالحة الستخدام الوظيفة .لماذا يجب عليك مع ذلك أن تولي اهتماما Wكبيرا لذلك؟ .5تقوم آلية التحقق
من صحة اإلدخال المصممة لمنع هجمات البرمجة النصية عبر المواقع بتنفيذ التسلسل التالي من الخطوات على عنصر اإلدخال .1 :قم بإزالة أي تعبيرات <
>scriptتظهر .2 .اقتطاع اإلدخال إلى 50حر ًفا .3 .إزالة أي عالمات اقتباس داخل اإلدخال -URL .4 .فك المدخالت .5 .إذا تم حذف أي عناصر ،فارجع
إلى الخطوة . 1هل يمكنك تجاوز آلية التحقق هذه لتهريب البيانات التالية بعدها؟
يتكون السطر األول من كل طلب HTTPمن ثالثة عناصر ،مفصولة بمسافات :فعل يشير إلى طريقة .HTTPالطريقة األكثر استخدامًا هي ، GETالتي تتمثل
وظيفتها في استرداد مورد من خادم الويب .ال تحتوي طلبات GETعلى نص رسالة ،لذلك ال توجد بيانات أخرى تتبع السطر الفارغ بعد رؤوس الرسائل عنوان
URLالمطلوب .يعمل عنوان URLكاسم للمورد المطلوب ،جنبًا إلى جنب مع سلسلة استعالم اختيارية تحتوي على معلمات Wيمررها العميل إلى هذا المورد .يشار
إلى سلسلة االستعالم بواسطة؟ حرف في عنوان ، URLوفي المثال هناك معلمة واحدة باالسم qوالقيمة wahhإصدار HTTPالمستخدم .إصدارات HTTP
الوحيدة الشائعة االستخدام على اإلنترنت هي 1.0و ، 1.1وتستخدم معظم المتصفحات اإلصدار 1.1افتراضيًا .هناك اختالفات قليلة بين مواصفات هذين
النسختين ؛ ومع ذلك ،فإن الفرق الوحيد الذي من المحتمل أن تواجهه عند مهاجمة Wتطبيقات الويب هو أن رأس طلب المضيف في اإلصدار 1.1إلزامي36 .
الفصل 3تقنيات تطبيق الويب 70779c03.qxd: WileyRed 9/14/07 3:12 PM Page 36بعض النقاط المهمة األخرى في طلب المثال هي :يتم استخدام
رأس المُحيل لإلشارة إلى عنوان URLالذي نشأ منه الطلب (على سبيل المثال ،ألن المستخدم قام بالنقر فوق ارتباط في تلك الصفحة) .الحظ أن هذا العنوان تم
كتابته بشكل خاطئ في مواصفات HTTPاألصلية ،وقد تم االحتفاظ بالنسخة التي بها أخطاء إمالئية منذ ذلك الحين يتم استخدام رأس User-Agentلتوفير
معلومات حول المتصفح أو برنامج العميل اآلخر الذي أنشأ الطلب .الحظ أن بادئة Mozillaيتم تضمينها من قبل معظم المتصفحات ألسباب تاريخية -كانت هذه
سلسلة User-Agentالتي يستخدمها متصفح - Netالمهيمن أصالً ،ومتصفحات أخرى ترغب في تأكيد مواقع الويب أنها متوافقة مع هذا المعيار .كما هو الحال
محتفظا به ،حتى في اإلصدار الحالي من ، Internet Explorerالذي جعل ً ً
راسخا بحيث ال يزال مع العديد من المراوغات من محفوظات الحوسبة ،فقد أصبح
الطلب موضحً ا في المثال يتم استخدام رأس المضيف لتحديد اسم المضيف الذي ظهر في عنوان URLالكامل الذي يتم الوصول إليه .يعد ذلك ضروريًا عند
استضافة مواقع ويب متعددة على نفس الخادم ،ألن عنوان URLالمرسل في السطر األول من الطلب ال يحتوي عاد ًة على اسم مضيف( .راجع الفصل 16
للحصول على مزيد من المعلومات حول مواقع الويب التي تتم استضافتها فعليًا ).يتم استخدام رأس ملف تعريف االرتباط إلرسال معلمات Wإضافية أصدرها الخادم
للعميل (سيتم توضيح ذلك بمزيد من التفاصيل الح ًقا في هذا الفصل) ردود HTTPاستجابة HTTPالنموذجية هي كما يلي:
يتكون السطر األول من كل استجابة HTTPمن ثالثة عناصر ،مفصولة بمسافات :إصدار HTTPالمستخدم .رمز حالة رقمي يشير إلى نتيجة الطلب.
200هو رمز الحالة األكثر شيو ًعا ؛ هذا يعني أن الطلب كان ناجحً ا ويتم إرجاع المورد المطلوب "عبارة السبب" النصية التي تصف حالة الرد .يمكن أن يكون
لهذا أي قيمة وال يتم استخدامه ألي غرض من قبل المتصفحات الحالية .بعض النقاط األخرى ذات األهمية في االستجابة السابقة هي :يحتوي رأس الخادم على
الفتة تشير إلى برنامج خادم الويب المستخدم ،وأحيا ًن ا تفاصيل أخرى مثل الوحدات المثبتة ونظام تشغيل الخادم .قد تكون المعلومات الواردة دقيقة أو ال تكون
دقيقة .يصدر رأس Set-Cookieالمتصفح ملف تعريف ارتباط آخر ؛ سيتم إرسال هذا مرة أخرى في رأس ملف تعريف االرتباط للطلبات الالحقة لهذا الخادم.
ضا إلى انتهاء صالحية محتوى يوجه رأس براغما المتصفح بعدم تخزين االستجابة في ذاكرة التخزين المؤقت الخاصة به ،ويشير رأس انتهاء الصالحية أي ً
االستجابة في الماضي وبالتالي ال يجب تخزينه مؤق ًت ا .يتم إصدار هذه التعليمات بشكل متكرر عند إعادة المحتوى الديناميكي ،لضمان حصول المتصفحات Wعلى
نسخة حديثة من هذا المحتوى في المناسبات الالحقة .تحتوي جميع استجابات HTTPتقريبًا على نص رسالة يتبع السطر الفارغ بعد الرؤوس ،ويشير رأس نوع
المحتوى إلى أن نص هذه الرسالة يحتوي على مستند . HTMLيشير رأس طول المحتوى إلى طول نص الرسالة بالبايت .طرق HTTPعندما تهاجم تطبيقات
الويب ،سوف تتعامل بشكل حصري تقريبًا مع الطرق األكثر استخدامًا GET :و .POSTهناك بعض االختالفات Wالمهمة بين هذه األساليب التي يجب أن تكون
على دراية بها ،والتي يمكن أن تؤثر على أمان التطبيق إذا تم تجاوزه .تم تصميم طريقة GETالسترداد الموارد .يمكن استخدامه إلرسال المعلمات إلى المورد
المطلوب في سلسلة استعالم .URLيتيح هذا للمستخدمين وضع إشارة مرجعية على عنوان URLلمورد ديناميكي يمكن إعادة استخدامه بأنفسهم أو
المستخدمين اآلخرين السترداد المورد المكافئ في مناسبة الحقة (كما هو الحال في استعالم البحث ذي اإلشارة المرجعية) .يتم عرض عناوين URLعلى
الشاشة ، Wويتم تسجيلها في أماكن مختلفة ،مثل سجل المتصفح وسجالت الوصول إلى خادم الويب .يتم نقلها أيضً ا في رأس المُحيل إلى مواقع أخرى عند اتباع
الروابط الخارجية .لهذه األسباب ،ال ينبغي استخدام سلسلة االستعالم إلرسال أي معلومات حساسة .تم تصميم طريقة POSTلتنفيذ اإلجراءات .باستخدام هذه
الطريقة ،يمكن إرسال معلمات الطلب في كل من سلسلة استعالم URLوفي نص الرسالة .على الرغم من أنه ال يزال من الممكن وضع إشارة مرجعية لعنوان
، URLسيتم استبعاد أي معلمات مرسلة في نص الرسالة من اإلشارة المرجعية .سيتم أي ً
ض ا استبعاد هذه المعلمات من المواقع المختلفة التي يتم فيها االحتفاظ
بسجالت عناوين URLومن رأس المُحيل .نظرً ا ألن طريقة POSTمصممة لتنفيذ اإلجراءات ،إذا قام المستخدم بالنقر فوق الزر "رجوع" في المستعرض للعودة
إلى صفحة تم الوصول إليها باستخدام هذه الطريقة ،فلن يقوم المتصفح بإعادة إصدار الطلب تلقائيًا ،ولكنه سيحذر المستخدم مما يدور حوله للقيام به ،كما هو
موضح في الشكل . 1-3هذا يمنع المستخدمين من القيام بعمل غير مقصود أكثر من مرة .لهذا السبب ،يجب استخدام طلبات POSTدائمًا عند تنفيذ اإلجراء.
الشكل :1-3ال تقوم المتصفحات بإعادة إصدار طلبات POSTتلقائيًا بواسطة المستخدمين ،ألنها قد تؤدي إلى تنفيذ إجراء أكثر من مرة واحدة باإلضافة
إلى طريقتين GETو ، POSTيدعم بروتوكول HTTPالعديد من الطرق األخرى التي تم إنشاؤها لطرق محددة المقاصد .الطرق األخرى التي من المرجح أن
تطلب معرفة Wبها هي - HEAD :تعمل هذه الوظيفة بنفس طريقة طلب GETباستثناء أنه ال يجب على الخادم إرجاع نص رسالة في استجابته .يجب أن يعرض
ً
موجودا قبل تقديم طلب GET الخادم الرؤوس نفسها التي كان سيعود بها إلى طلب GETالمقابل .وبالتالي ،يمكن استخدام هذه الطريقة للتحقق مما إذا كان المورد
لها .المسار -تم تصميم هذه الطريقة ألغراض التشخيص .يجب أن يعرض الخادم في نص االستجابة المحتويات الدقيقة لرسالة الطلب التي تلقاها .يمكن استخدام
هذا للكشف عن تأثير أي خوادم بروكسي بين العميل والخادم قد تعالج
ضا استخدامه أحيا ًن ا كجزء من هجوم ضد مستخدمي التطبيق اآلخرين (انظر الفصل .)12خيارات -تطلب هذه الطريقة من الخادم طلب .يمكن أي ً
ً
اإلبالغ عن طرق HTTPالمتوفرة لمورد معين .سيعيد الخادم عادة استجابة تحتوي على رأس السماح الذي يسرد األساليب المتاحة - PUT .تحاول هذه الطريقة
تحميل المورد المحدد إلى الخادم ،وذلك باستخدام المحتوى الموجود في نص الطلب .إذا تم تمكين هذه الطريقة ،فقد تتمكن من االستفادة منها لمهاجمة Wالتطبيق ؛
على سبيل المثال ،عن طريق تحميل برنامج نصي عشوائي وتنفيذ ذلك على الخادم .توجد العديد من طرق HTTPاألخرى التي ليست ذات صلة مباشرة بمهاجمةW
تطبيقات الويب .ومع ذلك ،قد يعرض خادم الويب نفسه للهجوم في حالة توفر طرق خطيرة معينة .انظر الفصل 17لمزيد من التفاصيل حول هذه األمثلة
واألمثلة على استخدامها في الهجوم .عناوين URLمحدد موقع المورد ( ) URLهو معرف فريد لمورد ويب ،يمكن من خالله استرداد هذا المورد .تنسيق معظم
عناوين URLكما يلي:
تعتبر العديد من المكونات في هذا المخطط اختيارية ،وعادة ما يتم تضمين رقم المنفذ فقط إذا كان يختلف عن االفتراضي المستخدم من قبل البروتوكول ذي
الصلة .عنوان URLالمستخدم إلنشاء طلب HTTPالموضح ساب ًقا هو:
باإلضافة إلى هذا الشكل المطلق ،يمكن تحديد عناوين URLبالنسبة إلى مضيف معين ،أو نسبة إلى مسار معين على هذا المضيف ،على سبيل المثال:
غالبًا ما ُت ستخدم هذه النماذج النسبية في صفحات الويب لوصف التنقل داخل موقع الويب أو التطبيق نفسه.
ملحوظة :المصطلح الفني الصحيح لعنوان URLهو في الواقع ( URIأو معرف الموارد الموحد) ،ولكن هذا المصطلح يستخدم ح ًقا فقط في المواصفات
الرسمية ومن قبل أولئك الذين يرغبون في إظهار المشاة الخاصة بهم
عددا كبيرً ا من الرؤوس المختلفة ،وقد تم تصميم بعضها ألغراض معينة غير عادية .يمكن استخدام بعض الرؤوس لكل من رؤوس HTTPيدعم ً HTTP
الطلبات والردود ،في حين أن البعض اآلخر خاص بأحد أنواع الرسائل هذه .الرؤوس التي من المحتمل أن تصادفها عند مهاجمة Wتطبيقات الويب مدرجة هنا.
اتصال عام بالرؤوس -يُستخدم هذا إلبالغ الطرف اآلخر من االتصال بما إذا كان يجب إغالق اتصال TCPبعد اكتمال إرسال HTTPأو إبقائه مفتوحً ا لمزيد من
الرسائل - .ترميز المحتوى -يُستخدم هذا لتحديد نوع الترميز يتم استخدامه للمحتوى المتضمن في نص الرسالة ،مثل ، gzipوالذي تستخدمه بعض التطبيقات
لضغط االستجابات من أجل إرسال أسرع .طول المحتوى -يستخدم هذا لتحديد طول نص الرسالة بالبايت (باستثناء في حالة االستجابات لطلبات ، HEADعندما
تشير إلى طول النص في الرد على طلب GETالمقابل) - Content-Type.يُستخدم هذا لتحديد نوع المحتوى الموجود في نص الرسالة ؛ على سبيل المثال ،
نص html /لمستندات . HTMLترميز النقل -يستخدم هذا لتحديد أي ترميز تم إجراؤه على نص الرسالة لتسهيل نقله عبر .HTTPيتم استخدامه عاد ًة لتحديد
الترميز المقسم عند استخدامه .طلب رأس الطلب -يُستخدم هذا إلخبار الخادم بأنواع المحتوى التي يرغب العميل في قبولها ،مثل أنواع الصور وتنسيقات
مستندات المكتب وما إلى ذلك - Accept-Encoding .يُستخدم هذا إلخبار الخادم بنوع المحتوى الذي يرغب العميل في قبوله .التفويض -يُستخدم هذا إلرسال
بيانات االعتماد إلى الخادم ألحد أنواع مصادقة HTTPالمضمنة .ملف تعريف االرتباط -يستخدم هذا إلرسال ملفات تعريف االرتباط إلى الخادم الذي تم إصداره
مسب ًقا من قبله.
المضيف -يُستخدم هذا لتحديد اسم المضيف الذي ظهر في عنوان URLالكامل المطلوب - If-Modified-Since .يُستخدم هذا لتحديد الوقت الذي تلقى فيه
المتصفح آخر مرة المورد المطلوب .إذا لم يتغير المورد منذ ذلك الوقت ،فقد يوجه الخادم العميل باستخدام نسخته المخزنة مؤق ًتا ،وذلك باستخدام استجابة برمز
الحالة - If-None-Match.304يستخدم هذا لتحديد عالمة كيان ،وهي عبارة عن رمز تعريف محتويات نص الرسالة .يرسل المتصفح عالمة الكيان التي
أصدرها الخادم مع المورد المطلوب عند تلقيه آخر مرة .يمكن للخادم استخدام عالمة الكيان لتحديد ما إذا كان المستعرض قد يستخدم نسخته المخزنة مؤق ًتا من
المورد .المرجع -يستخدم هذا لتحديد عنوان URLالذي نشأ منه الطلب الحالي .وكيل المستخدم -يستخدم هذا لتوفير معلومات حول المتصفح أو أي برنامج عميل
آخر أنشأ الطلب .التحكم في ذاكرة التخزين المؤقت لرؤوس االستجابة -يُستخدم هذا لتمرير توجيهات التخزين المؤقت إلى المتصفح (على سبيل المثال ،عدم
وجود ذاكرة تخزين مؤقت) .عالمة -يتم استخدام هذا لتحديد عالمة كيان .يمكن للعمالء إرسال هذا المعرف في الطلبات المستقبلية لنفس المورد في رأس If-
None-Matchإلخطار الخادم عن إصدار المورد الذي يحتفظ به المتصفح حاليًا في ذاكرة التخزين المؤقت الخاصة به .انتهاء الصالحية -يُستخدم هذا إلرشاد
المستعرض إلى متى تصلح محتويات نص الرسالة .قد يستخدم المتصفح النسخة المخبأة من هذا المورد حتى هذا الوقت .الموقع -يُستخدم هذا في استجابات إعادة
التوجيه (تلك التي تبدأ برمز الحالة بـ )3لتحديد هدف إعادة التوجيه - Pragma .يتم استخدام هذا لتمرير توجيهات التخزين المؤقت إلى المتصفح (على سبيل
المثال ،عدم وجود ذاكرة تخزين مؤقت) .الخادم -يتم استخدامه لتوفير معلومات حول برنامج خادم الويب المستخدم - Set-Cookie .يتم استخدامه إلصدار
ملفات تعريف االرتباط إلى المتصفح أنه سيتم إرساله مرة أخرى إلى الخادم في الطلبات الالحقة - WWW-Authenticate .يُستخدم هذا في الردود برمز 401
للحالة لتقديم تفاصيل عن نوع (أنواع) المصادقة التي يدعمها الخادم.
ملفات تعريف االرتباط تعد ملفات تعريف االرتباط جزءًا أساسيًا من بروتوكول HTTPالذي تعتمد عليه معظم تطبيقات الويب ،والتي يمكن استخدامها كثيرً ا
كوسيلة الستغالل نقاط الضعف .تم ّك ن آلية ملفات تعريف االرتباط الخادم من إرسال عناصر من البيانات إلى العميل ،والتي يقوم العميل بتخزينها وإعادة إرسالها
إلى الخادم .على عكس األنواع األخرى من معلمات Wالطلب (تلك الموجودة في سلسلة استعالم URLأو نص الرسالة) ،يستمر إعادة إرسال ملفات تعريف
االرتباط في كل طلب الحق دون أي إجراء معين يتطلبه التطبيق أو المستخدم .يصدر الخادم ملف تعريف ارتباط باستخدام رأس استجابة ، Set-Cookieكما
تمت مالحظته بالفعل:
سيضيف متصفح المستخدم بعد ذلك الرأس التالي تلقائيًا إلى الطلبات الالحقة مرة أخرى إلى الخادم نفسه:
تتكون ملفات تعريف االرتباط عادة من زوج اسم /قيمة ،كما هو موضح ،ولكن قد تتكون من أي سلسلة ال تحتوي على مسافة .يمكن إصدار ملفات تعريف
ارتباط متعددة باستخدام رؤوس Set-Cookieمتعددة في استجابة الخادم ،ويتم إرسالها جمي ًعا إلى الخادم في نفس رأس ملف تعريف االرتباط ،مع فاصلة
منقوطة تفصل ملفات تعريف االرتباط الفردية المختلفة .باإلضافة إلى القيمة الفعلية لملف تعريف االرتباط ،يمكن أن يتضمن رأس Set-Cookieأيضً ا أيًا من
السمات Wاالختيارية التالية ،والتي يمكن استخدامها للتحكم في كيفية تعامل المتصفح مع ملف تعريف االرتباط :تنتهي صالحيته ُ -تستخدم لتعيين تاريخ يكون فيه
ملف تعريف االرتباط صالحً ا .سيؤدي ذلك إلى قيام المتصفح بحفظ ملف تعريف االرتباط في التخزين الدائم ،وسيتم إعادة استخدامه في جلسات المتصفح الالحقة
حتى يتم الوصول إلى تاريخ انتهاء الصالحية .إذا لم يتم تعيين هذه السمة ،يتم استخدام ملف تعريف االرتباط فقط في جلسة المتصفح الحالية .النطاق -يُستخدم
لتحديد المجال الذي يكون ملف تعريف االرتباط صالحً ا له .يجب أن يكون هذا هو نفسه أو أحد الوالدين للنطاق الذي تم استالم ملف تعريف االرتباط منه .المسار
-يُستخدم لتحديد مسار عنوان URLالذي يكون ملف تعريف االرتباط صالحً ا له .آمن -إذا تم تعيين هذه السمة ،فلن يتم إرسال ملف تعريف االرتباط إال في
طلبات - HTTPS.HttpOnlyإذا تم تعيين هذه السمة ،فال يمكن الوصول إلى ملف تعريف االرتباط مباشرة عبر جافا Wسكريبت من جانب العميل ،على الرغم
من أن بعض المتصفحات ال تدعم هذا التقييد .الفصل الثالث تقنيات تطبيق الويب 70779c03.qxd: WileyRed 9/14/07 3:12 43م صفحة 43يمكن أن
تؤثر كل سمة من سمات Wملفات تعريف االرتباط هذه على أمان التطبيق ،ويكون التأثير األساسي على قدرة المهاجم Wعلى استهداف اآلخر بشكل مباشر مستخدمي
التطبيق .انظر الفصل 12لمزيد من التفاصيل .رموز الحالة يجب أن تحتوي كل رسالة استجابة HTTPعلى رمز الحالة في السطر األول ،مما يشير إلى نتيجة
الطلب .تنقسم رموز الحالة إلى خمس مجموعات ،وف ًقا للرقم األول من الرمز - 1xx - Informational.2xx :تم الطلب بنجاح - 3xx .تتم إعادة توجيه العميل
إلى مورد مختلف - 4xx .يحتوي الطلب على خطأ من نوع ما - 5xx .واجه الخادم خطأ في تنفيذ الطلب .هناك العديد من رموز الحالة المحددة ،والعديد منها
يستخدم فقط في الظروف المتخصصة .يتم سرد رموز الحالة التي من المحتمل أن تصادفها عند مهاجمة Wتطبيق ويب هنا ،جنبًا إلى جنب مع عبارة السبب المعتادة
المرتبطة بها 100 :متابعة -يتم إرسال هذا الرد في بعض الحاالت عندما يرسل العميل طلبًا يحتوي على نص .يشير الرد إلى أنه تم تلقي رؤوس الطلبات وأن
العميل يجب أن يستمر في إرسال النص .سيعيد الخادم بعد ذلك استجابة ثانية عند اكتمال الطلب 200 .حس ًنا -يشير هذا إلى نجاح الطلب وأن نص االستجابة
يحتوي على نتيجة الطلب 201 .تم إنشاؤه -يتم إرجاع هذا استجابة لطلب PUTلإلشارة إلى نجاح الطلب 301 .تم نقله نهائيًا -يؤدي هذا إلى إعادة توجيه
المتصفح بشكل دائم إلى عنوان URLمختلف ،محدد في رأس الموقع .يجب على العميل استخدام عنوان URLالجديد في المستقبل بدالً من األصلي 302.
- Foundيؤدي هذا إلى إعادة توجيه المتصفح مؤق ًتا إلى عنوان URLمختلف ،محدد في رأس الموقع .يجب على العميل العودة إلى عنوان URLاألصلي في
الطلبات الالحقة 304 .لم يتم تعديله -يوجه هذا المتصفح إلى استخدام نسخته المخزنة مؤق ًتا من المورد المطلوب .يستخدم الخادم رؤوس طلب If-Modified-
Sinceو If-None-Matchلتحديد ما إذا كان العميل لديه أحدث إصدار من المورد.
400طلب غير صحيح -يشير هذا إلى أن العميل أرسل طلب HTTPغير صالح .من المحتمل أن تواجه هذا عندما تعدل طلبًا بطرق غير صالحة معينة ،
على سبيل المثال عن طريق وضع حرف مسافة في URL.401غير مصرح به -يتطلب الخادم مصادقة HTTPقبل منح الطلب .يحتوي رأس WWW-
Authenticateعلى تفاصيل عن نوع (أنواع) المصادقة المدعومة 405. .الطريقة غير مسموح بها -يشير هذا إلى أن الطريقة المستخدمة Wفي الطلب غير
مدعومة لعنوان URLالمحدد .على سبيل المثال ،قد تتلقى رمز الحالة هذا إذا حاولت استخدام طريقة PUTحيث ال يتم دعمها 413 .كيان الطلب كبير ً
جدا -إذا
كنت تبحث عن ثغرات تجاوز سعة المخزن المؤقت في الشفرة األصلية ،وبالتالي إرسال سالسل طويلة من البيانات ،فهذا يشير إلى أن نص طلبك كبير ً
جدا
بحيث يتعذر على الخادم التعامل معه 414 .طلب URIطويل ج ًد ا -مشابه لإلجابة السابقة ،يشير هذا إلى أن عنوان URLالمستخدم في الطلب كبير ج ًدا بحيث
يتعذر على الخادم التعامل معه 0000.خطأ داخلي في الخادم -يشير هذا إلى أن الخادم واجه خطأ أثناء تنفيذ الطلب .يحدث هذا عاد ًة عند إرسال إدخال غير
متوقع تسبب في خطأ غير معالج في مكان ما أثناء معالجة التطبيق .يجب عليك مراجعة المحتويات الكاملة الستجابة الخادم عن كثب ألية تفاصيل تشير إلى طبيعة
الخطأ 503 .الخدمة غير متاحة -يشير هذا عاد ًة إلى أنه على الرغم من أن خادم الويب نفسه يعمل وقادر على االستجابة للطلبات ،إال أن التطبيق تم الوصول
إليه عبر الخادم ال يستجيب .يجب عليك التحقق مما إذا كان هذا نتيجة أي إجراء قمت به HTTPS .يستخدم بروتوكول HTTPبروتوكول TCPالبسيط كآلية النقل
الخاصة به ،والتي تكون غير مشفرة وبالتالي يمكن اعتراضها من قبل مهاجم Wوضع بشكل مناسب على الشبكة HTTPS .هو في األساس نفس بروتوكول طبقة
التطبيق مثل
، HTTPولكن هذا يتم حفره عبر آلية النقل اآلمن ،طبقة المقابس اآلمنة ( .) SSLهذا يحمي خصوصية وسالمة جميع البيانات التي تمر عبر الشبكة ،مما
يقلل بشكل كبير من احتماالت هجمات اعتراض غير جراحي .تعمل طلبات HTTPواستجاباته بنفس الطريقة تمامًا بغض النظر عما إذا كان SSLمستخد ًما Wللنقل.
ملحوظة :تم استبدال SSLاآلن بشكل صارم بأمان طبقة النقل ( ، )TLSولكن هذا األخير ال يزال يُشار إليه عاد ًة باستخدام االسم األقدم .بروكسيات HTTPخادم
بروكسي HTTPهو خادم يتوسط الوصول بين متصفح العميل وخادم الويب الوجهة .عندما يتم تكوين المستعرض الستخدام خادم وكيل ،فإنه يقوم بإجراء جميع
طلباته إلى ذلك الخادم ،ويقوم الوكيل بنقل الطلبات إلى خوادم الويب ذات الصلة ،ويعيد توجيه ردودهم إلى المتصفح .توفر معظم الوكالء أيضًا خدماتW
إضافية ،بما في ذلك التخزين المؤقت والمصادقة Wوالتحكم في الوصول .هناك اختالفان في طريقة عمل HTTPعند استخدام خادم وكيل ،ويجب أن تكون على
دراية بما يلي :عندما يصدر متصفح طلب HTTPإلى خادم وكيل ،فإنه يضع عنوان URLالكامل في الطلب ،بما في ذلك بادئة البروتوكول // : httpواسم
مضيف الخادم .يقوم الخادم الوكيل باستخراج اسم المضيف واستخدامه لتوجيه الطلب إلى خادم الويب الوجهة الصحيح .عند استخدام ، HTTPSال يمكن للمتصفح
إجراء تبادل اتصال SSLمع الخادم الوكيل ،حيث سيؤدي ذلك إلى كسر النفق اآلمن وترك االتصاالت عرضة للخطر لهجمات االعتراض .وبالتالي ،يجب أن
يستخدم المستعرض الخادم الوكيل كمرحل خالص على مستوى ، TCPوالذي يمرر جميع بيانات الشبكة في كال االتجاهين بين المستعرض وخادم الويب
الوجهة ،والذي يقوم من خالله المصافحة بمصافحة SSLكالمعتاد .إلنشاء هذا الترحيل ،يقوم المستعرض بإجراء طلب HTTPإلى الخادم الوكيل باستخدام
طريقة CONNECTوتحديد اسم المضيف الوجهة ورقم المنفذ كعنوان .URLإذا سمح الوكيل بالطلب ،فإنه يُرجع استجابة HTTPبالحالة ، 200ويحافظ على
اتصال TCPمفتوحً ا ،ومن تلك اللحظة فصاع ًدا يعمل بمثابة ترحيل خالص لمستوى TCPإلى خادم الويب الوجهة .وف ًقا لبعض المقاييس ،فإن العنصر األكثر
فائدة في مجموعة األدوات الخاصة بك عند مهاجمة تطبيقات الويب هو نوع متخصص من الخادم الوكيل يجلس بين متصفحك وموقع الويب المستهدف ويسمح لك
باعتراض وتعديل جميع الطلبات واالستجابات ، Wحتى تلك التي تستخدم . HTTPSسنبدأ بفحص كيفية استخدام هذا النوع من األدوات في الفصل التالي.
مصادقة HTTP Wيتضمن بروتوكول HTTPآلياته الخاصة لمصادقة المستخدمين ،باستخدام أنظمة مصادقة متنوعة ،بما في ذلك :أساسي -هذه آلية مصادقةW
جدا ترسل بيانات اعتماد المستخدم كسلسلة مشفرة Base64في رأس طلب مع كل رسالة - NTLM .هذا هي آلية استجابة للتحدي وتستخدم نسخة من بسيطة ً
بروتوكول - Windows NTLM.Digestهذه هي آلية استجابة للتحدي وتستخدم المجموع االختباري MD5للغير مع بيانات اعتماد المستخدم .من النادر نسبيا ً
مواجهة بروتوكوالت المصادقة Wهذه التي تستخدمها Wتطبيقات الويب التي يتم نشرها على اإلنترنت ،على الرغم من أنها تستخدم بشكل أكثر شيوعً ا داخل
المؤسسات Wللوصول إلى الخدمات Wالقائمة على اإلنترانت .األسطورة المشتركة "المصادقة األساسية Wغير آمنة" .تضع المصادقة األساسية بيانات االعتماد في شكل
غير مشفر ضمن طلب ، HTTPولذلك يُذكر كثيرً ا أن البروتوكول غير آمن ويجب عدم استخدامه .ولكن المصادقة المستندة إلى النماذج ،كما تستخدمها العديد
من البنوك ،تضع أيضً ا بيانات االعتماد في شكل غير مشفر ضمن طلب .HTTPيمكن حماية أي رسالة HTTPمن هجمات التنصت باستخدام HTTPSكآلية
واع لألمان .فيما يتعلق بالتنصت على األقل ،فإن المصادقة األساسية Wفي حد ذاتها ليست أسوأ من األساليب التي نقل ،والتي يجب القيام بها من قبل كل تطبيق ٍ
تستخدمها غالبية تطبيقات الويب اليوم .وظائف الويب باإلضافة إلى بروتوكول االتصاالت األساسي المستخدم إلرسال الرسائل بين العميل والخادم ،تستخدم
تطبيقات الويب العديد من التقنيات المختلفة لتقديم وظائفها .قد يستخدم أي تطبيق فعال بشكل معقول عشرات التقنيات المتميزة داخل مكونات الخادم والعميل .قبل
أن تتمكن من شن هجوم خطير على تطبيق ويب ،فأنت بحاجة إلى فهم أساسي لكيفية تنفيذ وظائفه ،وكيفية تصميم التقنيات المستخدمة للتصرف ،والمكان الذي
من المرجح أن تكمن فيه نقاط ضعفها.
وظائف من جانب الخادم تحتوي الشبكة العالمية المبكرة على محتوى ثابت بالكامل .تتكون مواقع الويب من موارد مختلفة مثل صفحات HTMLوالصور ،
والتي تم تحميلها ببساطة على خادم ويب وتسليمها إلى أي مستخدم يطلبها .في كل مرة يتم فيها طلب مورد معين ،استجاب الخادم بنفس المحتوى .ال تزال
عدد ا ال بأس به من الموارد الثابتة .ومع ذلك ،يتم إنشاء Wكمية كبيرة من المحتوى الذي يقدمونه للمستخدمين بشكل ديناميكي.تطبيقات الويب اليوم تستخدم عاد ًة ً
صا له بشكل فريد .يتم إنشاء المحتوى الديناميكي عندما يطلب مستخدم مور ًدا ديناميكيًا ،يتم إنشاء استجابة الخادم بسرعة ،وقد يتلقى كل مستخدم محتوى مخص ً
عن طريق البرامج النصية أو التعليمات البرمجية األخرى التي يتم تنفيذها على الخادم .هذه البرامج النصية شبيهة ببرامج الكمبيوتر في حد ذاتها -فلديها مدخالت
مختلفة ،وتقوم بمعالجتها ،وتعيد مخرجاتها Wإلى المستخدم .عندما يقدم متصفح المستخدم Wطلبًا لمورد ديناميكي ،فإنه ال يطلب عاد ًة نسخة من هذا المورد .بشكل
عام ،ستقدم أيضً ا معلمات مختلفة مع طلبها .هذه المعلمات Wهي التي تم ّك ن التطبيق من جانب الخادم من إنشاء محتوى مخصص للمستخدم الفردي .هناك ثالث
طرق رئيسية يمكن من خاللها استخدام طلبات HTTPإلرسال المعلمات Wإلى التطبيق :في سلسلة استعالم .URLفي ملفات تعريف ارتباط .HTTPفي نص
الطلبات باستخدام طريقة .POSTباإلضافة إلى مصادر اإلدخال األساسية Wهذه ،قد يستخدم التطبيق من جانب الخادم من حيث المبدأ أي جزء من طلب HTTP
كمدخل لمعالجته .على سبيل المثال ،قد يقوم أحد التطبيقات بمعالجة رأس User-Agentإلنشاء محتوى مح ّسن لنوع المستعرض المستخدم .مثل برامج
الكمبيوتر بشكل عام ،تستخدم تطبيقات الويب مجموعة واسعة من التقنيات على جانب الخادم لتقديم وظائفها .وهي تتضمن :لغات البرمجة النصية مثل PHPو
VBScriptو .Perlمنصات تطبيق الويب مثل ASP.NETو .Javaخوادم الويب مثل Apacheو IISو .Netscape Enterpriseقواعد البيانات مثل MS-
SQLو Oracleو . MySQLمكونات خلفية أخرى مثل أنظمة الملفات وخدمات الويب المستندة إلى SOAPوخدمات الدليل .جميع هذه التقنيات وأنواع الثغرات
التي يمكن أن تنشأ فيما يتعلق بها سيتم فحصها بالتفصيل في جميع أنحاء هذا الكتاب .قليال من ال
يتم وصف معظم منصات تطبيقات الويب الشائعة واللغات التي من المحتمل أن تواجهها في األقسام التالية .منصة جافا لعدة سنوات ،كانت منصة جافا ،
( Enterprise Editionالمعروفة ساب ًقا باسم )J2EEمعيارً ا فعليًا لتطبيقات المؤسسات Wعلى نطاق واسع .تم تطويرها من قبل ، Sun Microsystemsوهي
مناسبة للبنى متعددة المستويات ومتوازنة الحمل ،وهي مناسبة تما ًم ا للتطوير المعياري وإعادة استخدام التعليمات البرمجية .نظرً ا لتاريخها الطويل وتبنيها على
نطاق واسع ،هناك العديد من أدوات التطوير عالية الجودة وخوادم التطبيقات واألطر المتاحة لمساعدة المطورين .يمكن تشغيل Java Platformعلى العديد من
أنظمة التشغيل األساسية ،بما في ذلك Windowsو Linuxو .Solarisغالبًا ما تستخدم أوصاف تطبيقات الويب المستندة إلى Javaعد ًدا من المصطلحات Wالتي
يحتمل أن تكون مربكة والتي قد تحتاج إلى إدراكها :يعد ) Enterprise Java Bean (EJBأحد مكونات برامج الوزن الثقيل نسبيًا الذي يدمج منطق وظيفة عمل
معينة داخل التطبيق .الغرض من EJBsهو رعاية التحديات التقنية المختلفة التي يجب على مطوري التطبيقات معالجتها ،مثل تكامل المعامالت .كائن جافا القديم
العادي ( )POJOهو كائن Javaعادي ،يختلف عن كائن خاص مثل ُ .EJBتستخدم POJOعاد ًة لإلشارة إلى كائنات محددة من قبل المستخدم وأكثر بساطة وخفة
من EJBsوتلك المستخدمة Wفي أطر عمل أخرى Java Servlet .هو كائن موجود على خادم التطبيق ويتلقى طلبات HTTPمن العمالء ويعيد استجابات .HTTP
هناك العديد من الواجهات المفيدة التي يمكن أن تستخدمها تطبيقات Servletلتسهيل تطوير التطبيقات المفيدة .حاوية الويب Javaهي نظام أساسي أو محرك
يوفر بيئة تشغيل لتطبيقات الويب المستندة إلى .Javaأمثلة حاويات الويب Javaهي Apache Tomcatو BEA WebLogicو .JBossتستخدم العديد من
تطبيقات جافا على الويب مكونات خارجية ومكونات مفتوحة المصدر إلى جانب تعليمات Wبرمجية مخصصة .يعد هذا خيارً ا جذابًا ألنه يقلل من جهود التطوير ،
وجافا مناسبة تما ًم ا لهذا النهج المعياري .أمثلة المكونات المستخدمة بشكل شائع لوظائف التطبيق الرئيسية هي :المصادقة ، JAAS -طبقة العرض التقديمي
، ACEGI - SiteMeshرسم خرائط ارتباط كائن قاعدة البيانات -تسجيل اإلسبات Log4J -
إذا كان بإمكانك تحديد الحزم مفتوحة المصدر المستخدمة Wفي التطبيق الذي تهاجمه ،فيمكنك تنزيلها وإجراء مراجعة التعليمات البرمجية أو تثبيتها
للتجربة عليها .قد تكون ثغرة في أي من هذه قابلة لالستغالل للتنازل عن التطبيق األوسع ASP.NET ASP.NET .هو إطار عمل تطبيق الويب من Microsoft
وهو منافس مباشر لمنصة Java. ASP.NETأصغر بعدة سنوات من نظيره ولكنه حقق بعض التقدم في منطقة جافا .يستخدم ASP.NETبرنامج NET.
جهازا افتراضيًا (وقت تشغيل اللغة العامة) ومجموعة من واجهات برمجة التطبيقات القوية .وبالتالي ،يمكن كتابة ً Frameworkمن ، Microsoftوالذي يوفر
تطبيقات ASP.NETبأي لغة ، NET .مثل # Cأو .VB.NETيتناسب ASP.NET Wمع نموذج البرمجة القائم على الحدث والذي يستخدم عادة في برامج سطح
المكتب التقليدية ،بدالً من النهج القائم على البرنامج النصي المستخدم في معظم أطر عمل تطبيقات الويب األقدم .هذا ،إلى جانب أدوات التطوير القوية المتوفرة
مع ، Visual Studioيجعل تطوير تطبيق ويب وظيفي سهل للغاية ألي شخص لديه الحد األدنى من مهارات البرمجة .يساعد إطار عمل ASP.NETعلى
الحماية ضد بعض نقاط الضعف الشائعة Wفي تطبيقات الويب مثل البرمجة النصية عبر المواقع ،دون الحاجة إلى أي جهد من قبل المطور .ومع ذلك ،فإن أحد
الجوانب السلبية العملية لبساطتها الواضحة هو أن العديد من تطبيقات ASP.NETالصغيرة الحجم يتم إنشاؤها بالفعل من قبل المبتدئين الذين يفتقرون إلى أي وعي
بمشاكل األمان األساسية Wالتي تواجهها تطبيقات الويب PHP .برزت لغة PHPمن مشروع هواية (اختصر اختصار الصفحة الرئيسية الشخصية في األصل) .وقد
تطورت منذ ذلك الحين بشكل ال يمكن التعرف عليه تقريبًا إلى إطار قوي للغاية وغني لتطوير تطبيقات الويب .غالبًا ما يتم استخدامه جنبًا إلى جنب مع التقنيات
المجانية األخرى في ما يعرف باسم مكدس ( LAMPبما في ذلك Linuxو Apacheو MySQLو .)PHPتم تطوير العديد من التطبيقات والمكونات مفتوحة
المصدر باستخدام . PHPيوفر العديد من هذه الحلول الجاهزة لوظائف التطبيق الشائعة ،والتي غالبًا ما يتم دمجها Wفي تطبيقات أوسع مخصصة مصممة
صا ،على سبيل المثال :لوحات النشرات PHPBB -و PHP-Nukeاإلدارية األمامية -بريد الويب PHPMyAdmin - SquirrelMailو IlohaMail خصي ً
معرض الصور -صالة عرض
عربات التسوق osCommerce ، ECW-Shop Wikis - MediaWiki ، WakkaWikki -نظرً ا ألن PHPمجانية وسهلة االستخدام ،فقد كانت في
الغالب اللغة المفضلة لكثير من المبتدئين الذين يكتبون تطبيقات الويب .عالوة على ذلك ،فإن التصميم والتكوين االفتراضي إلطار PHPقد سهّل تاريخيا ً على
المبرمجين إدخال أخطاء األمان دون قصد في التعليمات البرمجية الخاصة بهم .هذه العوامل تعني أن التطبيقات المكتوبة بلغة PHPعانت من عدد غير متناسب
من الثغرات األمنية .باإلضافة إلى ذلك ،توجد العديد من العيوب داخل منصة PHPنفسها ،والتي يمكن استغاللها غالبًا عبر التطبيقات التي تعمل عليها .راجع
الفصل 18للحصول على تفاصيل العيوب الشائعة الناشئة في تطبيقات . PHPوظائف من جانب العميل لكي يتمكن التطبيق من جانب الخادم من تلقي مدخالت
المستخدم واإلجراءات ،وتقديم نتائج هذه مرة أخرى إلى المستخدم ،فإنه يحتاج إلى توفير واجهة مستخدم من جانب العميل .نظرً ا ألن جميع تطبيقات الويب يتم
الوصول إليها عبر متصفح الويب ،فإن هذه الواجهات Wجميعها Wتشترك في جوهر مشترك من التقنيات .ومع ذلك ،فقد تم البناء عليها بطرق متنوعة متنوعة ،كما
استمرت الطرق التي تستخدم بها التطبيقات في تعزيز التكنولوجيا من جانب العميل في التطور السريع في السنوات األخيرة HTML .التقنية األساسية المستخدمة
لبناء واجهات الويب هي لغة ترميز النص التشعبي ( .)HTMLهذه لغة قائمة على العالمات ُت ستخدم لوصف هيكل المستندات التي يتم تقديمها داخل المتصفح .من
بداياته البسيطة كوسيلة لتوفير التنسيق األساسي للمستندات النصية ،تطورت HTMLإلى لغة غنية وقوية يمكن استخدامها إلنشاء واجهات مستخدم معقدة للغاية
وعملية .االرتباطات التشعبية يتم توجيه قدر كبير من االتصاالت من العميل إلى الخادم من خالل نقر المستخدم Wعلى االرتباطات التشعبية .في تطبيقات الويب ،
تحتوي االرتباطات التشعبية بشكل متكرر على معلمات Wطلب محددة مسب ًقا .هذه هي عناصر البيانات التي لم يُدخلها المستخدم Wمطل ًقا ولكن تم إرسالها ألن الخادم
وضعها في عنوان URLالهدف لالرتباط التشعبي الذي ينقر عليه المستخدم .على سبيل المثال ،قد يقدم تطبيق ويب سلسلة من الروابط إلى القصص اإلخبارية ،
كل منها يحتوي على النموذج التالي:
عندما ينقر المستخدم على هذا الرابط ،يقوم المتصفح بالطلب التالي:
يتلقى الخادم المعلمتين في سلسلة االستعالم ( newsidو )langويستخدم قيمهما Wلتحديد المحتوى الذي يجب تقديمه للمستخدم .النماذج في حين أن التنقل
المستند إلى االرتباط التشعبي مسؤول عن غالبية اتصاالت العميل مع الخادم ،في معظم تطبيقات الويب ،هناك حاجة إلى طرق أكثر مرونة لجمع المدخالت
وتلقي اإلجراءات من المستخدمين .نماذج HTMLهي اآللية المعتادة للسماح للمستخدمين بإدخال إدخال تعسفي عبر متصفحهم .النموذج النموذجي هو كما يلي:
عندما يقوم المستخدم بإدخال قيم في النموذج والنقر على زر اإلرسال ،يقوم المتصفح بتقديم طلب مثل ما يلي:
في هذا الطلب ،هناك العديد من نقاط االهتمام التي تعكس كيفية استخدام الجوانب المختلفة للطلب للتحكم في المعالجة من جانب الخادم :نظرً ا ألن عالمة
نموذج HTMLتحتوي على سمة تحدد طريقة ، POSTفإن المتصفح يستخدم هذه الطريقة إلرسال النموذج ،ويضع البيانات من النموذج في نص رسالة الطلب.
باإلضافة إلى عنصري البيانات اللذين أدخلهما المستخدم ،يحتوي النموذج على معلمة مخفية (إعادة) ومعلمة إرسال (إرسال) .كالهما مقدم في الطلب ويمكن
استخدامه من قبل التطبيق من جانب الخادم للتحكم في منطقه.
يحتوي عنوان URLالهدف الخاص بتقديم النموذج على معلمة (تطبيق) محددة مسب ًقا ،كما في مثال االرتباط التشعبي الموضح ساب ًقا .يمكن استخدام هذه
المعلمة للتحكم في المعالجة من جانب الخادم .يحتوي الطلب على معلمة ملف تعريف ارتباط ( ، )SESSوالتي تم إصدارها للمتصفح في استجابة سابقة من الخادم.
يمكن استخدام هذه المعلمة للتحكم في المعالجة من جانب الخادم .يحتوي الطلب السابق على رأس يحدد أن نوع المحتوى في نص الرسالة هو x-www-form-
.urlencodedوهذا يعني أن المعلمات Wممثلة في نص الرسالة كأزواج اسم /قيمة بنفس الطريقة التي تكون بها في سلسلة استعالم .URLنوع المحتوى اآلخر
الذي من المحتمل أن تواجهه عند إرسال بيانات النموذج هو بيانات متعددة األجزاء /بيانات النموذج .يمكن أن يطلب أحد التطبيقات أن تستخدم المستعرضاتW
ترميز متعدد األجزاء عن طريق تحديد ذلك في سمة enctypeفي عالمة النموذج .باستخدام هذا الشكل من الترميز ،سيحدد رأس نوع المحتوى في الطلب أيضًا
ً
ترميزا متعدد األجزاء ،فسيبدو الطلب الناتج كما سلسلة عشوائية يتم استخدامها كفاصل للمعلمات Wالواردة في نص الطلب .على سبيل المثال ،إذا حدد النموذج
يلي:
يمكن استخدام االرتباطات والنماذج الخاصة بـ JavaScriptإلنشاء واجهة مستخدم غنية قادرة على جمع معظم أنواع المدخالت Wالتي تتطلبها تطبيقات الويب
بسهولة .ومع ذلك ،تستخدم معظم التطبيقات نموذجً ا أكثر توزي ًع ا ،حيث يتم استخدام جانب العميل ليس فقط لتقديم بيانات المستخدم وإجراءاته ولكن أيضً ا إلجراء
المعالجة الفعلية للبيانات .يتم ذلك لسببين رئيسيين :يمكن أن يحسن أداء التطبيق ،ألنه يمكن تنفيذ مهام معينة بالكامل على مكون العميل ،دون الحاجة إلى إجراء
رحلة ذهاب وعودة من الطلب واالستجابة للخادم .يمكن أن يعزز قابلية االستخدام ،ألنه يمكن تحديث أجزاء من واجهة المستخدم ديناميكيًا استجابة إلجراءات
المستخدم ،دون الحاجة إلى تحميل صفحة HTMLجديدة تمامًا يتم تسليمها بواسطة الخادم JavaScript .هي لغة برمجة بسيطة نسبيًا ولكنها قوية يمكن
استخدامها بسهولة لتوسيع واجهات الويب بطرق غير ممكنة باستخدام HTMLوحده .يتم استخدامه بشكل شائع ألداء المهام التالية :التحقق من صحة البيانات التي
أدخلها المستخدم قبل إرسالها إلى الخادم ،لتجنب الطلبات غير الضرورية إذا كانت البيانات تحتوي على أخطاء .تعديل واجهة المستخدم ديناميكيًا استجابة
إلجراءات المستخدم ؛ على سبيل المثال ،لتنفيذ القوائم المنسدلة وعناصر التحكم األخرى المألوفة من واجهات غير الويب .االستعالم عن نموذج كائن المستند (
) DOMوتحديثه داخل المتصفح للتحكم في سلوك المتصفح .من التطورات الهامة في استخدام جافا سكريبت ظهور تقنيات AJAXلخلق تجربة مستخدم أكثر
سالسة أقرب إلى تلك التي توفرها تطبيقات سطح المكتب التقليدية .يتضمن ( AJAXأو JavaScriptو XMLغير المتزامن) إصدار طلبات HTTPديناميكية من
داخل صفحة ، HTMLلتبادل البيانات مع الخادم وتحديث صفحة الويب الحالية وف ًقا لذلك ،دون تحميل صفحة جديدة تمامًا .يمكن أن توفر هذه التقنيات واجهات
مستخدم غنية ومرضية للغاية .كما يمكن للمهاجمين Wفي بعض األحيان استخدامها لتأثير قوي ،وقد يُحدثون نقاط ضعف خاصة بهم إذا لم يتم تنفيذها بعناية (انظر
رمزا ثنائيًا مخصصً ا لتوسيع ً الفصل .) 12مكونات العميل السميكة تتجاوز قدرات جافا سكريبت ،تستخدم بعض تطبيقات الويب تقنيات عميل أكثر سم ًكا Wتستخدم
إمكانيات المتصفح المدمجة بطرق عشوائية .قد يتم نشر هذه المكونات كرمز ثانوي يتم تنفيذه بواسطة مكون إضافي مناسب للمتصفح ،أو قد يتضمن
تثبيت الملفات التنفيذية األصلية على جهاز الكمبيوتر العميل نفسه .تقنيات العميل السميك التي من المحتمل أن تواجهها عند مهاجمة Wتطبيقات الويب هي:
تطبيقات Javaالنشطة ActiveXتتحكم في عناصر Shockwave Flashهذه التقنيات موصوفة بالتفصيل في الفصل .5الحالة والجلسات تتيح التقنيات
الموضحة حتى اآلن مكونات الخادم والعميل على الويب تطبيق لتبادل ومعالجة البيانات بطرق عديدة .لتنفيذ معظم أنواع الوظائف المفيدة ،تحتاج التطبيقات إلى
تتبع حالة تفاعل كل مستخدم مع التطبيق عبر طلبات متعددة .على سبيل المثال ،قد يسمح تطبيق التسوق للمستخدمين بتصفح كتالوج المنتجات وإضافة عناصر
إلى سلة التسوق وعرض محتويات سلة التسوق وتحديثها والمتابعة إلى الخروج وتقديم تفاصيل شخصية وتفاصيل الدفع .لجعل هذا النوع من الوظائف ممك ًنا ،
يجب أن يحتفظ التطبيق بمجموعة من البيانات ذات الحالة المتولدة عن إجراءات المستخدم عبر عدة طلبات .عاد ًة ما يتم االحتفاظ بهذه البيانات ضمن بنية جانب
الخادم تسمى جلسة .عندما يقوم المستخدم بإجراء ،مثل إضافة عنصر إلى عربة التسوق الخاصة به ،يقوم التطبيق من جانب الخادم بتحديث التفاصيل ذات
الصلة في جلسة المستخدم .عندما تعرض المستخدم Wالح ًق ا محتويات سلة التسوق الخاصة بها ،يتم استخدام البيانات من الجلسة إلرجاع المعلومات الصحيحة إلى
المستخدم .في بعض التطبيقات ،يتم تخزين معلومات الحالة على مكون العميل بدالً من الخادم .يتم تمرير مجموعة البيانات الحالية إلى العميل في كل استجابة
خادم ،ويتم إرسالها إلى الخادم في كل طلب عميل .بالطبع ،نظرً ا ألن أي بيانات يتم إرسالها عبر مكون العميل قد يعدلها المستخدم ،تحتاج التطبيقات إلى اتخاذ
تدابير لحماية نفسها من المهاجمين الذين قد يغيرون معلومات الحالة هذه في محاولة للتدخل في منطق التطبيق .تستخدم منصة ASP.NETحقل نموذج مخفي
يسمى ViewStateلتخزين معلومات الحالة حول واجهة الويب الخاصة بالمستخدم وبالتالي تقليل النفقات العامة Wعلى الخادم .تتضمن محتويات ViewState
بشكل افتراضي تجزئة ذات مفاتيح لمنع العبث .نظرً ا ألن بروتوكول HTTPفي حد ذاته عديم الحالة ،فإن معظم التطبيقات تحتاج إلى وسيلة إلعادة تحديد هوية
المستخدمين الفرديين عبر طلبات متعددة ،من أجل استخدام المجموعة الصحيحة من بيانات الحالة لمعالجة كل طلب .يتم تحقيق ذلك عاد ًة عن طريق إصدار رمز
مميز لكل مستخدم يحدد بشكل فريد جلسة ذلك المستخدم .قد يتم إرسال هذه الرموز المميزة باستخدام أي نوع من معلمات الطلب ،ولكن يتم استخدام ملفات
تعريف ارتباط HTTPفي معظم التطبيقات .تنشأ عدة أنواع من الضعف فيما يتعلق بمعالجة الجلسة ،ويتم وصفها بالتفصيل في الفصل .7
أنظمة التشفير تستخدم تطبيقات الويب العديد من أنظمة التشفير المختلفة لبياناتها .يعتمد كل من بروتوكول HTTPولغة HTMLتاريخيًا على النص ،وقد
تم ابتكار مخططات ترميز مختلفة لضمان إمكانية معالجة األحرف غير العادية والبيانات الثنائية بأمان من خالل هذه اآلليات .عندما تهاجم تطبيق ويب ،ستحتاج
في كثير من األحيان إلى ترميز البيانات باستخدام مخطط ذي صلة لضمان معالجتها بالطريقة التي تنويها .عالوة على ذلك ،في كثير من الحاالت ،قد تتمكن من
معالجة مخططات التشفير التي يستخدمها أحد التطبيقات إلحداث سلوك لم يقصده مصمموه .يُسمح لعناوين URLالخاصة بتشفير عناوين URLبأن تحتوي فقط
على األحرف القابلة للطباعة في مجموعة أحرف - US-ASCIIأي تلك التي يكون رمز ASCIIالخاص بها في النطاق 0x20–0x7eشامالً .عالوة على ذلك ،
يتم تقييد العديد من األحرف داخل هذا النطاق ألن لها معنى خاصً ا ضمن مخطط عنوان URLنفسه أو داخل بروتوكول .HTTPيتم استخدام نظام ترميز URL
لترميز أي أحرف إشكالية ضمن مجموعة أحرف ASCIIالموسعة بحيث يمكن نقلها بأمان عبر .HTTPإن أي حرف مشفر بعنوان URLهو البادئة ٪متبوعة
برمز ASCIIالمكون من رقمين المعبر عنه بالنظام الست عشري .يتم عرض بعض األمثلة على األحرف التي يتم ترميزها بشكل شائع URLهنا:
يوجد ترميز آخر يجب أن تكون على دراية به هو الحرف ، +الذي يمثل مسافة Wمشفرة بعنوان ( URLباإلضافة إلى تمثيل ٪20للمسافة) .مالحظة :لغرض
مهاجمة Wتطبيقات الويب ،يجب عليك ترميز URLألي من األحرف التالية عند إدراجها كبيانات في طلب :HTTP
(بالطبع ،ستحتاج غال ًب ا إلى استخدام هذه األحرف بمعناها الخاص عند تعديل الطلب -على سبيل المثال ،إلضافة معلمة طلب إضافية إلى سلسلة االستعالم .في
هذه الحالة ،يجب استخدامها في شكلها الحرفي 56 ).الفصل الثالث تقنيات تطبيقات الويب 70779c03.qxd: WileyRed 9/14/07 3:12 PM Page 56
ترميز Unicode Unicodeهو معيار ترميز األحرف تم تصميمه لدعم جميع أنظمة الكتابة المستخدمة Wفي العالم .يستخدم مخططات Wترميز مختلفة ،يمكن
استخدام بعضها لتمثيل أحرف غير عادية في تطبيقات الويب .يعمل ترميز Unicode 16بت بطريقة مشابهة Wلترميز .URLبالنسبة لإلرسال عبر ، HTTPيكون
شكل الحرف المشفر بترميز Unicode 16بت هو البادئة u ٪متبوعة بنقطة رمز Unicodeللحرف معبرً ا عنها بالنظام الست عشري .فمثال:
UTF-8هو معيار ترميز متغير الطول يستخدم بايت واحد أو أكثر للتعبير عن كل حرف .بالنسبة لإلرسال عبر ، HTTPيستخدم نموذج UTF-8المشفر لحرف
متعدد البايت كل بايت يتم التعبير عنه بالنظام الست عشري ويسبقه البادئة .٪فمثال:
لغرض مهاجمة Wتطبيقات الويب ،يعد ترميز Unicodeذو أهمية في المقام األول ألنه يمكن استخدامه أحيا ًنا في هزيمة آليات التحقق من اإلدخال .إذا قام عامل
تصفية اإلدخال بحظر بعض التعبيرات الضارة ،ولكن المكون الذي يعالج اإلدخال بعد ذلك يفهم ترميز ، Unicodeفقد يكون من الممكن تجاوز المرشح
باستخدام العديد من ترميزات Unicodeالقياسية والتالفة .ترميز HTMLترميز HTMLهو مخطط يستخدم لتمثيل األحرف التي بها مشاكل بحيث يمكن دمجها
بأمان في مستند .HTMLتحتوي األحرف المختلفة على معنى خاص كأحرف تعريف داخل HTMLويتم استخدامها لتعريف بنية المستند بدالً من محتواه.
الستخدام هذه األحرف بأمان كجزء من محتوى المستند ،من الضروري ترميزها بتنسيق .HTMLيحدد ترميز HTMLالعديد من كيانات HTMLلتمثيل أحرف
حرفية محددة ،على سبيل المثال:
باإلضافة إلى ذلك ،يمكن ألي حرف ترميز HTMLباستخدام رمز ASCIIالخاص به في شكل عشري ،على سبيل المثال:
أو باستخدام رمز ASCIIالخاص به في شكل سداسي عشري (مسبوقة بعالمة س) ،على سبيل المثال:
عندما تهاجم تطبيق ويب ،من المرجح أن يكون اهتمامك الرئيسي بتشفير HTMLعند البحث عن ثغرات البرمجة النصية عبر المواقع .إذا أعاد أحد التطبيقات
إدخال المستخدم دون تعديل في استجاباته ،فمن المحتمل أن يكون عرضة للخطر ،بينما إذا كانت األحرف الخطرة مشفرة بتنسيق ، HTMLفمن المحتمل أنها
آمنة .انظر الفصل 12لمزيد من التفاصيل حول نقاط الضعف هذه .ترميز Base64يسمح ترميز Base64بتمثيل أي بيانات ثنائية بأمان باستخدام أحرف
ضا لترميز بيانات اعتماد المستخدم في ASCIIالقابلة للطباعة فقط .يتم استخدامه عادة لتشفير مرفقات البريد اإللكتروني للنقل اآلمن عبر ، SMTPويستخدم أي ً
مصادقة HTTPاألساسية .يقوم ترميز Base64بمعالجة بيانات اإلدخال في كتل من ثالث وحدات بايت .تنقسم كل واحدة من هذه الكتل إلى أربع قطع من كل
منها ستة بتات .تسمح ستة بتات من البيانات بـ 64تبدياًل مختل ًفا ممك ًنا ،وبالتالي يمكن تمثيل كل قطعة باستخدام مجموعة من 64حر ًفا .يستخدم ترميز Base64
مجموعة األحرف التالية ،التي تحتوي على أحرف ASCIIقابلة للطباعة فقط:
إذا نتج عن الكتلة النهائية لبيانات اإلدخال أقل من ثالث قطع من بيانات اإلخراج ،فسيتم إخراج الناتج بحرف واحد أو حرفين = .على سبيل المثال ،نموذج
ترميز Base64من كتيب Web Application Hackerهو:
تستخدم العديد من تطبيقات الويب ترميز Base64إلرسال البيانات الثنائية داخل ملفات تعريف االرتباط والمعلمات Wاألخرى ،وحتى للتعتيم على البيانات
الحساسة Wلمنع التعديل التافه .يجب عليك دائمًا البحث عن أي بيانات Base64يتم إصدارها للعميل وفك ترميزها .غالبًا ما يمكن التعرف بسهولة على السالسل
المشفرة باستخدام Base64من مجموعة األحرف الخاصة بها ووجود أحرف الحشو في نهاية السلسلة 58 .الفصل 3تقنيات تطبيقات الويب 70779c03.qxd:
ً
ترميزا سداسيًا عشريًا عند إرسال البيانات الثنائية ،باستخدام أحرف WileyRed 9/14/07 3:12 PM Page 58تشفير سداسي تستخدم العديد من التطبيقات
ASCIIلتمثيل الكتلة السداسية العشرية .على سبيل المثال ،سيؤدي التشفير السداسي السم المستخدم " "dafداخل ملف تعريف االرتباط إلى:
الخطوات التالية حتى اآلن ،وصفنا الحالة الحالية ألمان تطبيقات الويب (في) ،وفحصنا اآلليات األساسية Wالتي يمكن من خاللها لتطبيقات الويب الدفاع عن
نفسها ،وألقينا نظرة موجزة على التقنيات الرئيسية المستخدمة في تطبيقات اليوم .مع وضع هذا األساس ،نحن اآلن في وضع يمكننا من البدء في النظر إلى
الجوانب العملية الفعلية لمهاجمة Wتطبيقات الويب .في أي هجوم ،تكون مهمتك األولى هي تعيين محتوى التطبيق المستهدف ووظائفه ،وتحديد كيفية عمله ،وكيف
يحاول الدفاع عن نفسه ،والتقنيات التي يستخدمها .يفحص الفصل التالي عملية رسم الخرائط هذه بالتفصيل ويوضح كيف يمكنك استخدامها للحصول على فهم
عميق لسطح هجوم التطبيق الذي سيثبت أنه حيوي عندما يتعلق األمر بإيجاد واستغالل العيوب األمنية داخل هدفك .يمكن العثور على إجابات األسئلة على
.www.wiley.com/go/webhacker. 1ما هي طريقة OPTIONSالمستخدمة؟ .2 Wما هي رؤوس If-Modified-Sinceو If-None-Matchالمستخدمة؟
لماذا قد تكون مهتمًا بهذه عند مهاجمة تطبيق؟ . 3ما هي أهمية العالمة اآلمنة عندما يقوم الخادم بتعيين ملف تعريف ارتباط؟ .4ما الفرق بين أكواد الحالة
المشتركة 301و 302؟ .5كيف يتفاعل المتصفح مع وكيل الويب عند استخدام SSL
رسم خرائط التطبيق
الخطوة األولى في عملية مهاجمة 0تطبيق هي جمع وفحص بعض المعلومات األساسية حوله ،من أجل الحصول على فهم أفضل لما تواجهه .يبدأ تمرين رسم
الخرائط بتعداد محتوى التطبيق ووظائفه ،من أجل فهم ما يفعله التطبيق فعالً وكيف يتصرف .سيكون من السهل التعرف على الكثير من هذه الوظائف ،ولكن قد
يتم إخفاء بعضها بعي ًد ا ،وتتطلب درجة من التخمين والحظ من أجل االكتشاف .بعد تجميع كتالوج لوظائف التطبيق ،تتمثل المهمة الرئيسية في فحص كل جانب من
جوانب سلوكه ،وآلياته األمنية األساسية ،والتقنيات المستخدمة( 0على كل من العميل والخادم) .سيمكنك هذا من تحديد سطح الهجوم الرئيسي الذي يكشفه التطبيق ،
وبالتالي المناطق األكثر إثارة لالهتمام التي تستهدفها االستكشاف الالحق للعثور على نقاط الضعف القابلة لالستغالل .في هذا الفصل ،سنصف الخطوات العملية
التي تحتاج إلى اتباعها أثناء رسم خرائط التطبيق ،والتقنيات والحيل المختلفة التي يمكنك استخدامها لزيادة فعاليتها إلى أقصى حد ،وبعض األدوات التي يمكن أن
تساعدك في هذه العملية .رسم خرائط التطبيق الفصل 70779c04.qxd: WileyRed 9/14/07 3:12 PM Page 61 4تعداد المحتوى والوظائف في تطبيق
نموذجي ،يمكن تحديد غالبية المحتوى والوظائف عبر التصفح اليدوي .النهج األساسي هو السير عبر التطبيق بد ًءا من الصفحة األولية الرئيسية ،باتباع كل رابط
والتنقل عبر جميع الوظائف متعددة المراحل (مثل تسجيل المستخدم أو إعادة تعيين كلمة المرور) .إذا كان التطبيق يحتوي على "خريطة الموقع" ،يمكن أن يوفر
هذا نقطة بداية مفيدة لتعداد المحتوى .ومع ذلك ،إلجراء فحص دقيق للمحتوى الذي تم تعداده ،وللحصول على سجل شامل لكل شيء تم تحديده ،من الضروري
استخدام بعض التقنيات األكثر تقد ًما من التصفح البسيط Web Spidering .توجد أدوات مختلفة تقوم بأداء العنكبوت اآللي لمواقع الويب .تعمل هذه األدوات من
خالل طلب صفحة ويب ،وتحليلها للحصول على روابط لمحتوى آخر ،ثم طلبها ،وتستمر بشكل متكرر حتى يتم اكتشاف أي محتوى جديد .بنا ًء على هذه الوظيفة
ضا وإرسالها مرة أخرى إلى التطبيق باستخدام العديد من األساسية ، 0تحاول عناكب تطبيق الويب تحقيق مستوى أعلى من التغطية من خالل تحليل نماذج HTMLأي ً
القيم المسبقة أو العشوائية .يمكن أن يم ّك نهم ذلك من التنقل عبر الوظائف متعددة المراحل ،واتباع التنقل المستند إلى النماذج (على سبيل المثال ،حيث يتم استخدام
ضا بإجراء بعض تحليل JavaScriptمن جانب العميل الستخراج عناوين URLالتي تشير إلى المزيد من القوائم المنسدلة كقوائم محتوى) .تقوم بعض األدوات أي ً
المحتوى .تقوم األدوات المجانية التالية جميعها بعمل الئق في تعداد محتوى التطبيق ووظائفه (انظر الفصل 19للحصول على تحليل مفصل لقدراتهم)Paros :
( Burp Spiderجزء من )Burp Suiteيوضح WebScarabالشكل 1-4نتائج استخدام Burp Spiderتعيين جزء من التطبيق .تلميح تحتوي العديد من خوادم
الويب على ملف باسم robots.txtفي جذر الويب ،والذي يحتوي على قائمة بعناوين URLالتي ال يرغب الموقع في زيارتها عناكب الويب أو محركات 0البحث
لفهرستها .في بعض األحيان ،يحتوي هذا الملف على مراجع لوظائف حساسة ،والتي أنت مهتم بالتأكيد بالتدقيق .ستتحقق بعض أدوات التجسس المصممة 0لمهاجمة0
تطبيقات الويب من ملف robots.txtوتستخدم جميع عناوين URLالموجودة فيه كبذور في عملية التجسس.
الشكل :1-4رسم خريطة لجزء من
التطبيق باستخدام Burp Spiderفي حين أنه قد يكون فعاالً في كثير من األحيان ،هناك بعض القيود الهامة لهذا النوع من النهج المؤتمت بالكامل لتعداد المحتوى:
آليات تصفح غير عادية (مثل القوائم التي يتم إنشاؤها ديناميكيًا ومعالجتها باستخدام JavaScriptمعقدة غالبًا ما ال يتم التعامل مع التعليمات البرمجية) بشكل صحيح
من خالل هذه األدوات ،وبالتالي قد تفوتهم مناطق كاملة من التطبيق .غالبًا ما تقوم الوظائف متعددة المراحل بتنفيذ عمليات التحقق من صحة إدخال المدخالت0
الدقيقة ،والتي ال تقبل القيم التي قد يتم تقديمها بواسطة أداة آلية .على سبيل المثال ،قد يحتوي نموذج تسجيل المستخدم على حقول لالسم وعنوان البريد اإللكتروني
ورقم الهاتف والرمز البريدي .عادةً ما يرسل عنكبوت التطبيق اآللي سلسلة اختبار واحدة في كل حقل نموذج قابل للتحرير ،وسيعرض التطبيق رسالة خطأ تفيد بأن
عنص ًرا أو أكثر من العناصر المرسلة كانت غير صالحة .نظ ًرا ألن العنكبوت ليس ذكيًا بما يكفي لفهم هذه الرسالة والتصرف بنا ًء عليها ،فلن يتم تجاوز نموذج
التسجيل ،وبالتالي لن يكتشف أي محتوى أو وظائف أخرى يمكن الوصول إليه بعده .عادةً ما تستخدم العناكب اآللية عناوين URLكمعرِّ فات للمحتوى الفريد .لتجنب
استمرار التجسس إلى أجل غير مسمى ،فإنهم يدركون متى تم طلب المحتوى المرتبط بالفعل وال يطلبونه مرة أخرى .ومع ذلك ،تستخدم العديد من التطبيقات التنقل
المستند إلى النماذج حيث قد يعرض نفس عنوان URLمحتوى ووظائف مختلفة تما ًم ا .على سبيل المثال ،يمكن للفصل الرابع رسم خرائط التطبيق 63
70779c04.qxd: WileyRed 9/14/07 3:12م الصفحة 63أن يقوم التطبيق المصرفي بتنفيذ كل إجراء للمستخدم عبر طلب POSTإلى ، account.jsp/
واستخدام المعلمات إلبالغ اإلجراء يتم إنجازه .إذا رفض العنكبوت تقديم طلبات متعددة إلى عنوان URLهذا ،فسيفتقد معظم محتوى التطبيق .تحاول بعض عناكب
التطبيق معالجة هذا الموقف (على سبيل المثال ،يمكن تكوين Burp Spiderلتمييز عمليات إرسال النموذج بنا ًء على أسماء المعلمات 0وقيمها) ؛ ومع ذلك ،قد ال
تزال هناك مواقف يكون فيها النهج اآللي بالكامل غير فعال تما ًم ا .على العكس من النقطة السابقة ،تضع بعض التطبيقات بيانات متغيرة ضمن عناوين URLالتي ال
تُ ستخدم بالفعل لتحديد الموارد أو الوظائف (على سبيل المثال ،المعلمات التي تحتوي على أجهزة ضبط الوقت أو بذور أرقام عشوائية) .قد تحتوي كل صفحة من
التطبيق على ما يبدو أنه مجموعة جديدة من عناوين URLالتي يجب أن يطلبها العنكبوت ،مما يؤدي إلى استمرار تشغيله إلى أجل غير مسمى ،وحيث يستخدم
التطبيق المصادقة ،يجب أن يكون عنكبوت التطبيق الفعال قاد ًر ا على التعامل مع هذا من أجل الوصول إلى الوظائف التي تحميها .يمكن للعناكب المذكورة سابقًا
تحقيق ذلك ،عن طريق تكوينها يدويًا إما باستخدام رمز مميز لجلسة مصادق عليها أو باستخدام بيانات اعتماد إلرسالها إلى وظيفة تسجيل الدخول .ومع ذلك ،حتى
عند القيام بذلك ،من الشائع أن تجد أن تشغيل العنكبوت يكسر الجلسة المصدق عليها ألسباب مختلفة :من خالل اتباع جميع عناوين ، URLسيطلب العنكبوت في
مرحلة ما وظيفة تسجيل الخروج ،مما يتسبب في كسر جلسته .يرسل العنكبوت إدخااًل غير صالح إلى وظيفة حساسة ، 0قد ينهي التطبيق الجلسة بشكل دفاعي .إذا
كان التطبيق يستخدم الرموز المميزة لكل صفحة ،فمن المؤكد أن العنكبوت سيفشل في التعامل معها 0بشكل صحيح عن طريق طلب الصفحات خارج التسلسل
المتوقع ،مما قد يتسبب في كامل سيتم إنهاء الجلسة .تحذير في بعض التطبيقات ،قد يكون تشغيل حتى عنكبوت ويب بسيط يقوم بتحليل طلبات الروابط أمرًا خطيرًا
للغاية .على سبيل المثال ،قد يحتوي التطبيق على وظيفة إدارية تحذف المستخدمين ،وتغلق قاعدة البيانات ،وتعيد تشغيل الخادم ،وما شابه .إذا تم استخدام
عنكبوت مدرك للتطبيق ،يمكن أن يحدث ضرر كبير إذا اكتشف العنكبوت وظائف حساسة 0واستخدمها .واجه المؤلفون تطبيقًا تضمن وظيفة لتحرير المحتوى الفعلي
للتطبيق الرئيسي .كانت هذه الوظيفة قابلة لالكتشاف عبر خريطة الموقع ولم تكن محمية بواسطة أي تحكم بالوصول .إذا تم تشغيل عنكبوت آلي ضد هذا الموقع ،
فسيجد وظيفة التحرير ويبدأ في إرسال بيانات عشوائية ،مما يؤدي إلى تشويه موقع الويب الرئيسي في الوقت الحقيقي أثناء تشغيل العنكبوت
Spideringالموجه بواسطة المستخدم يعد هذا أسلوبًا أكثر تعقيدًا وتحك ًما ،ويفضل عادةً على Spideringاآللي .هنا ،يتنقل المستخدم عبر التطبيق بالطريقة
العادية باستخدام متصفح قياسي ،محاواًل التنقل عبر جميع وظائف التطبيق .أثناء قيامه بذلك ،يتم تمرير حركة المرور الناتجة من خالل أداة تجمع بين وكيل
اعتراض وعنكبوت ،والتي تراقب جميع الطلبات واالستجابات .تقوم األداة بإنشاء خريطة للتطبيق ،تتضمن جميع عناوين URLالتي زارها المتصفح ،كما تحلل
جميع استجابات التطبيق بنفس طريقة العنكبوت العادي المدرك للتطبيق وتقوم بتحديث خريطة الموقع بالمحتوى والوظائف يكتشف .يمكن استخدام العناكب
الموجودة داخل Burp Suiteو WebScarabبهذه الطريقة (انظر الفصل 19لمزيد من المعلومات) .مقارنةً بمنهج العنكبوت األساسي ،يحمل هذا األسلوب
العديد من الفوائد :حيث يستخدم التطبيق آليات غير عادية أو معقدة للتنقل ،يمكن للمستخدم اتباعها باستخدام متصفح بالطريقة العادية .ستتم معالجة 0أي وظائف
ومحتويات يصل إليها المستخدم بواسطة أداة الوكيل /العنكبوت .يتحكم المستخدم في جميع البيانات المرسلة إلى التطبيق ويمكنه التأكد من استيفاء متطلبات التحقق
من صحة البيانات ،ويمكن للمستخدم 0تسجيل الدخول إلى التطبيق بالطريقة المعتادة ،والتأكد من أن جلسة المصادقة 0تظل نشطة طوال عملية رسم الخرائط .إذا أدى
أي إجراء إلى إنهاء الجلسة ،يمكن للمستخدم تسجيل الدخول مرة أخرى ومتابعة التصفح ،وسيتم تعداد أي وظائف خطيرة ،مثل ، deleteUser.jspوإدماجها
بالكامل في خريطة الموقع ،ألنه سيتم تحليل الروابط المؤدية إليها من ردود التطبيق .ولكن يمكن للمستخدم استخدام سلطته التقديرية في تحديد الوظائف التي يطلبها
بالفعل أو يقوم بها .تلميح باإلضافة إلى أدوات الوكيل /العنكبوت التي تم وصفها للتو ،هناك مجموعة أخرى من األدوات التي غالبًا ما تكون مفيدة أثناء تعيين
التطبيق هي ملحقات المتصفح المختلفة التي يمكنها إجراء تحليل HTTPو HTMLمن داخل واجهة المتصفح .على سبيل المثال ،أداة IEWatchالموضحة في
الشكل ، 2-4والتي تعمل في ، Microsoft Internet Explorerتراقب جميع تفاصيل الطلبات واالستجابات ،بما في ذلك الرؤوس ،ومعلمات 0الطلب ،وملفات
تعريف االرتباط ،وتحلل كل صفحة تطبيق لعرض الروابط والنصوص والنماذج ،ومكونات العميل الكثيف .في حين أنه يمكن بالطبع عرض كل هذه المعلومات0
ثان من بيانات الخرائط المفيدة يمكن أن يساعدك فقط على فهم التطبيق بشكل أفضل وتعداد جميع وظائفه .راجع الفصل 19
في وكيل اعتراضك ،فإن وجود سجل ٍ
لمزيد من المعلومات حول أدوات من هذا النوع.
خيمة يكتشفها ■ .تحتوي خريطة الموقع التي تم إنشاؤها بواسطة أداة الوكيل /العنكبوت على ثروة من المعلومات حول التطبيق المستهدف ،والتي ستكون مفيدة
الحقًا في تحديد أسطح الهجوم المختلفة التي يعرضها التطبيق 66 .الفصل ■ 4رسم خرائط التطبيق 70779c04.qxd: WileyRed 9/14/07 3:12 PM Page
66اكتشاف المحتوى المخفي من الشائع ج ًد ا أن تحتوي التطبيقات على محتوى ووظائف ال ترتبط مباشرة أو يمكن الوصول إليها من المحتوى المرئي الرئيسي .من
األمثلة الشائعة على ذلك الوظائف التي تم تنفيذها ألغراض االختبار أو التصحيح ولم يتم إزالتها مطلقًا .ينشأ مثال آخر حيث يقدم التطبيق وظائف مختلفة لفئات
مختلفة من المستخدمين (على سبيل المثال ،المستخدمون المجهولون والمستخدمون العاديون المصدقون والمسؤولون) .قد يفقد المستخدمون في مستوى امتياز واحد
والذين يقومون بإجراء عملية شاملة للتطبيق الوظائف التي تكون مرئية للمستخدمين في المستويات األخرى .قد تتمكن المهاجم 0الذي يكتشف الوظيفة من استغاللها
لرفع امتيازاتها داخل التطبيق .هناك عدد ال يحصى من الحاالت األخرى التي قد يوجد فيها محتوى ووظيفة مثيرة لالهتمام لم تحددها تقنيات رسم الخرائط
الموصوفة سابقً ا ،بما في ذلك ■ :نسخ احتياطية من الملفات الحية .في حالة الصفحات الديناميكية ،ربما تم تغيير امتداد الملف الخاص بها إلى واحد لم يتم تعيينه
على أنه قابل للتنفيذ ،مما يتيح لك مراجعة مصدر الصفحة للثغرات التي يمكن استغاللها بعد ذلك في الصفحة الرئيسية ■ .محفوظات النسخ االحتياطي التي تحتوي
على لقطة كاملة للملفات داخل (أو خارج بالفعل) جذر الويب ،مما قد يتيح لك التعرف بسهولة على كل المحتوى والوظائف داخل التطبيق ■ .وظائف جديدة تم
نشرها على الخادم لالختبار ولكن لم يتم ربطها بعد من التطبيق الرئيسي ■ .اإلصدارات القديمة من الملفات التي لم تتم إزالتها من الخادم .في حالة الصفحات
الديناميكية ،قد تحتوي هذه على نقاط ضعف تم إصالحها في اإلصدار الحالي ولكن ال يزال من الممكن استغاللها في اإلصدار القديم ■ .التكوين وتضمين الملفات
التي تحتوي على بيانات حساسة 0مثل بيانات اعتماد قاعدة البيانات ■ .ملفات المصدر التي تم تجميع وظائف التطبيق المباشر منها ■ .ملفات السجل التي قد تحتوي
على معلومات حساسة 0مثل أسماء المستخدمين الصالحة ،والعالمات 0المميزة للجلسات ،وعناوين URLالتي تمت زيارتها ،واإلجراءات المنفذة ،وما إلى ذلك.
يتطلب االكتشاف الفعال للمحتوى المخفي مجموعة من التقنيات اآللية واليدوية ،وكثي ًرا ما يعتمد على درجة من الحظ .تقنيات القوة الغاشمة 0في الفصل ، 13
سنصف كيف يمكن االستفادة من التقنيات اآللية لتسريع أي هجوم على تطبيق ما .في السياق الحالي ،يمكن استخدام األتمتة إلجراء عدد كبير من الطلبات إلى خادم
الويب ،في محاولة لتخمين أسماء أو معرفات الوظائف المخفية
على سبيل المثال ،افترض أن العنكبوت الذي يوجهه المستخدم 0قد حدد محتوى التطبيق التالي:
قد تتضمن الخطوة األولى في الجهد اآللي لتحديد المحتوى المخفي الطلبات التالية لتحديد الدالئل اإلضافية:
بعد ذلك ،يمكن تقديم الطلبات التالية لتحديد موقع صفحات إضافية:
مالحظة :ال تفترض أن التطبيق سوف يستجيب بـ " "OK 200في حالة وجود المورد المطلوب ،و " "Not Found 404إذا لم يكن موجودًا .تتعامل العديد من
صلة ورمز استجابة .200عالوة على ذلك ،قد تتلقى بعض طلبات التطبيقات مع طلبات الموارد غير الموجودة بطريقة مخصصة ،وغالبًا ما تُرجع رسالة خطأ مف ّ
الموارد الموجودة استجابة غير . 200فيما يلي دليل تقريبي للمعنى المحتمل لرموز االستجابة التي قد تصادفها خالل تمرين قسري يبحث عن محتوى مخفي■ :
302تم العثور عليه -إذا كانت إعادة التوجيه إلى صفحة تسجيل الدخول ،فقد ال يمكن الوصول إلى المورد إال من خالل المصادقة المستخدمين .إذا كانت رسالة
خطأ ،فقد يكشف هذا عن سبب مختلف .إذا كان األمر يتعلق بمكان آخر ،فإن إعادة التوجيه 68الفصل ■ 4تعيين التطبيق 70779c04.qxd: WileyRed
9/14/07 3:12 PM Page 68قد يكون جز ًء ا من المنطق المقصود للتطبيق ،ويجب إجراء مزيد من التحقيق في ذلك 400 ■ .طلب غير صحيح -قد يستخدم
التطبيق نظام تسمية مخصص لألدلة والملفات الموجودة في عناوين ، URLوالتي لم يتم االمتثال لطلب معين .ومع ذلك ،من المرجح أن قائمة الكلمات التي
تستخدمها تحتوي على بعض أحرف المسافات 0البيضاء أو بناء جملة غير صالح 401 ■ .غير مصرح به أو 403محظور -يشير هذا عادةً إلى أن المورد المطلوب
موجود ولكن قد ال يتمكن أي مستخدم من الوصول إليه ،بغض النظر عن حالة المصادقة أو مستوى االمتياز .غالبًا ما يحدث عند طلب األدلة ،وقد تستنتج وجود
الدليل 500 ■ .خطأ داخلي في الخادم -أثناء اكتشاف المحتوى ،يشير هذا عادةً إلى أن التطبيق يتوقع تقديم معلمات 0معينة عند طلب المورد .تعني االستجابات0
المختلفة المحتملة التي قد تشير إلى وجود محتوى مثير لالهتمام أنه من الصعب كتابة نص برمجي مؤتمت بالكامل إلخراج قائمة بالموارد الصالحة .أفضل طريقة
هي التقاط أكبر قدر ممكن من المعلومات حول استجابات التطبيق أثناء ممارسة القوة الغاشمة ومراجعتها يدويًا .يمكن استخدام Burp Intruderللتكرار من خالل
قائمة بأسماء 0الدليل الشائعة والتقاط تفاصيل استجابات الخادم ،والتي يمكن مراجعتها لتحديد الدالئل الصالحة .يوضح الشكل 3-4تم تكوين Burp Intruder
للتحقيق في الدالئل الشائعة الموجودة في جذر الويب.
الشكل :3-4تم تكوين الدخيل التجشؤ للتحقيق في الدالئل المشتركة
عند تنفيذ الهجوم ،سيؤدي النقر على رؤوس األعمدة مثل "الحالة" و "الطول" إلى فرز النتائج وفقًا لذلك ،مما يتيح انتقاء الحاالت الشاذة بسرعة ،كما هو
هنا ،يتم إجراء كل طلب على عنوان URLواحد .يتم استخدام معلمات 0الطلب إلخبار التطبيق بالوظيفة التي يجب تنفيذها ،عن طريق تسمية Java servlet
وطريقة االستدعاء .توفر معلمات أخرى المعلومات الستخدامها في أداء الوظيفة .في الصورة المستندة إلى صفحات التطبيق ،سيظهر للتطبيق وظيفة واحدة فقط ،
ولن توضح الخريطة المستندة إلى عنوان URLوظيفته .ومع ذلك ،إذا قمنا بتعيين التطبيق من حيث المسارات الوظيفية ،فيمكننا الحصول على كتالوج أكثر إفادة
ومفيدة لوظائفه .الشكل 5-4عبارة عن خريطة جزئية للمسارات الوظيفية الموجودة داخل التطبيق.
الشكل :5-4تعيين المسارات الوظيفية داخل تطبيق ويب .WahhBankتسجيل الدخول إلى .WahhBankتحويالت المنزلselectAccounts .
.BillPayment. addPayee BillPaymentحدد .PayPay TransferFundsأدخل مبلغ الفاتورة .enterAmount TransferFunds .تأكيد تحويل
الفاتورة .تأكيد الدفع واه بنك .تسجيل الخروج الفصل الرابع ■ رسم خرائط التطبيق 70779c04.qxd: WileyRed 9/14/07 3:12 77م الصفحة 77يمثل
تمثيل وظائف التطبيق بهذه الطريقة أكثر فائدة حتى في الحاالت التي يمكن فيها تطبيق الصورة المعتادة المستندة إلى صفحات التطبيق دون اي مشاكل .العالقات0
المنطقية والتبعيات بين الوظائف المختلفة قد ال تتوافق مع بنية الدليل المستخدمة 0داخل عناوين .URLهذه العالقات المنطقية هي األكثر أهمية بالنسبة لك ،سواء في
فهم الوظائف األساسية للتطبيق أو في صياغة الهجمات 0المحتملة ضده .من خالل تحديد هذه ،يمكنك فهم توقعات 0وافتراضات مطوري التطبيق بشكل أفضل عند
تنفيذ الوظائف ،ومحاولة العثور على طرق النتهاك هذه االفتراضات ،مما يتسبب في سلوك غير متوقع داخل التطبيق .في التطبيقات التي يتم فيها تحديد الوظائف
باستخدام معلمة طلب ،بدالً من عنوان ، URLفإن هذا له آثار على تعداد محتوى التطبيق .في المثال السابق ،من غير المرجح أن تكشف تمارين اكتشاف المحتوى
الموضحة حتى اآلن عن أي محتوى مخفي .يجب تكييف هذه التقنيات مع اآلليات المستخدمة بالفعل من قبل التطبيق للوصول إلى الوظائف .خطوات ■ HACKحدد
أي حاالت يتم فيها الوصول إلى وظيفة التطبيق ليس عن طريق طلب صفحة معينة لتلك الوظيفة (مثل )admin/editUser.jsp/ولكن عن طريق تمرير اسم
الوظيفة في معلمة (مثل admin .jsp /؟ = ) actionتحرير المستخدم) ■ .تعديل التقنيات المؤتمتة الموصوفة الكتشاف محتوى محدد بعنوان URLللعمل على
آليات الوصول إلى المحتوى المستخدمة 0داخل التطبيق .على سبيل المثال ،إذا كان التطبيق يستخدم معلمات 0تحدد أسماء servletو ، methodحدد أوالً سلوكه
عند طلب servletو /أو أسلوب غير صالح ،وعندما يتم طلب طريقة صالحة مع معلمات 0أخرى غير صالحة .حاول تحديد سمات استجابات الخادم التي تشير إلى
"النتائج" -أي الخوادم واألساليب الصالحة .إذا كان ذلك ممكنًا ،فابحث عن طريقة لمهاجمة المشكلة على مرحلتين ،أوالً تعداد الخوادم الصغيرة ثم الطرق داخلها.
باستخدام طريقة مشابهة 0لتلك المستخدمة 0للمحتوى المحدد بواسطة ، URLقم بتجميع قوائم العناصر الشائعة ، 0وأضف إليها من خالل االستدالل على األسماء 0التي
تمت مالحظتها بالفعل ،وقم بإنشاء أعداد كبيرة من الطلبات بنا ًء على هذه ■ .إذا كان ذلك ممكنًا ، 0قم بتجميع خريطة لمحتوى التطبيق استنادًا إلى المسارات
الوظيفية ،مع عرض جميع الوظائف المذكورة والمسارات المنطقية والتبعيات بينها 78 .الفصل ■ 4تعيين التطبيق 70779c04.qxd: WileyRed 9/14/07
3:12م الصفحة 78اكتشاف المعلمات المخفية هناك اختالف في الحالة التي يستخدم فيها التطبيق معلمات 0الطلب لتحديد الوظيفة التي يجب تنفيذها ينشأ عند
استخدام معلمات أخرى للتحكم في منطق التطبيق بطرق مهمة .على سبيل المثال ،قد يتصرف تطبيق بشكل مختلف إذا تمت إضافة المعلمة debug = trueإلى
سلسلة االستعالم ألي عنوان - URLفقد يؤدي إلى إيقاف تشغيل بعض عمليات التحقق من صحة اإلدخال أو السماح للمستخدم بتجاوز عناصر تحكم معينة في
الوصول أو عرض معلومات التصحيح المطول في استجابته .في كثير من الحاالت ،ال يمكن استنتاج حقيقة أن التطبيق يعالج هذه المعلمة مباشرة من أي من
محتواه (على سبيل المثال ،ال يتضمن debug = falseفي عناوين URLالتي ينشرها كارتباطات تشعبية) .ال يمكن الكشف عن تأثير المعلمة إال عن طريق تخمين
نطاق من القيم حتى يتم تقديم القيمة الصحيحة.
خطوات ■ HACKباستخدام قوائم بأسماء معلمات التصحيح الشائعة (التصحيح ،االختبار ،اإلخفاء ،المصدر ،إلخ) والقيم المشتركة (صحيح ،نعم ،تشغيل ، 1 ،
وما إلى ذلك) ،قم بإجراء عدد كبير من الطلبات إلى صفحة تطبيق معروفة أو الوظيفة ،تتكرر من خالل جميع تبديالت االسم والقيمة .بالنسبة لطلبات ، POSTقم
بإدراج المعلمة المضافة 0في كل من سلسلة استعالم URLوفي نص الرسالة ■ .يمكن استخدام Burp Intruderإلجراء هذا االختبار باستخدام مجموعات حمولة
متعددة ونوع هجوم "القنابل العنقودية" (انظر الفصل 13لمزيد من التفاصيل) ■ .مراقبة جميع الردود المستلمة لتحديد أي حاالت شاذة قد تشير إلى أن المعلمة
المضافة 0كان لها تأثير على معالجة التطبيق ■ .بنا ًء على الوقت المتاح ،استهدف عددًا من الصفحات أو الوظائف المختلفة الكتشاف المعلمات المخفية .اختر
وظائف حيث من المرجح أن المطورين قاموا بتطبيق منطق التصحيح ،مثل تسجيل الدخول والبحث وتحميل الملفات وتنزيلها وما شابه .تحليل التطبيق يعد تعداد
أكبر قدر ممكن من محتوى التطبيق عنصرًا واح ًد ا فقط من عملية رسم الخرائط .على نفس القدر من األهمية ،مهمة تحليل وظائف التطبيق وسلوكه والتكنولوجيات
المستخدمة ، 0من أجل تحديد أسطح الهجوم الرئيسية التي يكشف عنها ،والبدء في صياغة نهج لفحص التطبيق لنقاط الضعف القابلة لالستغالل .الفصل الرابع ■
رسم خرائط التطبيق 70779c04.qxd: WileyRed 9/14/07 3:12 PM Page 79 79بعض المجاالت الرئيسية التي يجب التحقق منها هي ■ :الوظائف
األساسية 0للتطبيق -اإلجراءات التي يمكن االستفادة منها في تنفيذها عند استخدامها على النحو المنشود ■ .السلوكيات الطرفية األخرى للتطبيق ،بما في ذلك
الروابط خارج الموقع ،ورسائل الخطأ ،ووظائف اإلدارة والتسجيل ،واستخدام عمليات إعادة التوجيه ،وما إلى ذلك ■ .آليات األمان األساسية وكيفية عملها ،وال
سيما إدارة حالة الجلسة ،وعناصر التحكم في الوصول ،وآليات المصادقة 0والمنطق الداعم (تسجيل المستخدم ،وتغيير كلمة المرور ،واستعادة الحساب ، 0وما إلى
ذلك) ■ .جميع المواقع المختلفة التي تتم فيها معالجة المدخالت التي يوفرها المستخدم من خالل التطبيق -كل عنوان URLومعلمة سلسلة االستعالم وعنصر بيانات
POSTوملف تعريف االرتباط وما شابه ■ .التقنيات المستخدمة من جانب العميل ،بما في ذلك النماذج والبرامج النصية من جانب العميل ومكونات العميل السميك
(تطبيقات Javaالصغيرة وعناصر تحكم ActiveXو ) Flashوملفات تعريف االرتباط ■ .التقنيات المستخدمة من جانب الخادم ،بما في ذلك الصفحات الثابتة
والديناميكية ،وأنواع معلمات 0الطلب المستخدمة ،واستخدام ، SSLوبرمجيات 0خادم الويب ،والتفاعل مع قواعد البيانات ،وأنظمة البريد اإللكتروني والمكونات
الخلفية األخرى ■ .أي تفاصيل أخرى يمكن استخالصها عن الهيكل الداخلي ووظائف التطبيق من جانب الخادم -اآلليات التي يستخدمها 0خلف الكواليس لتقديم
الوظائف والسلوك المرئي من منظور العميل.
تحديد نقاط اإلدخال إلدخال المستخدم يجب أن تكون غالبية الطرق التي يلتقط بها التطبيق مدخالت المستخدم للمعالجة من جانب الخادم واضحة عند مراجعة طلبات
HTTPالتي يتم إنشاؤها أثناء استعراض وظائف التطبيق .المواقع الرئيسية التي يجب االنتباه إليها هي ■ :كل سلسلة عنوان URLتصل إلى عالمة سلسلة االستعالم.
■ كل معلمة مقدمة ضمن سلسلة استعالم ■ .URLكل معلمة يتم تقديمها داخل نص طلب ■ .POSTكل ملف تعريف ارتباط ■ .كل رأس HTTPآخر يمكن
معالجته في حاالت نادرة بواسطة التطبيق ،وال سيما رؤوس المستخدم-الوكيل والمحيل والقبول و AcceptLanguageوالمضيف 80 .الفصل ■ 4تعيين التطبيق
70779c04.qxd: WileyRed 9/14/07 3:12م الصفحة 80ال تستخدم بعض التطبيقات تنسيق سلسلة االستعالم القياسي (الذي تم وصفه في الفصل ، )3
ولكنها تستخدم مخططها 0المخصص الخاص بها ،والذي قد تستخدم عالمات سلسلة االستعالم غير القياسية وفواصل الحقول ،أو قد تتضمن مخططات بيانات أخرى
مثل XMLضمن سلسلة االستعالم ،أو قد تضع سلسلة االستعالم بشكل فعال ضمن ما يبدو أنه جزء الدليل أو اسم الملف من عنوان .URLفيما يلي بعض األمثلة
على تنسيقات سلسلة االستعالم غير القياسية التي واجهها المؤلفون في البرية:
إذا تم استخدام تنسيق سلسلة استعالم غير قياسي ،فسيتعين عليك مراعاة ذلك عند فحص التطبيق لجميع أنواع الثغرات الشائعة .على سبيل المثال ،عند اختبار رابط
عنوان URLالنهائي في هذه القائمة ،إذا كنت ستتجاهل التنسيق المخصص وتعامل ببساطة سلسلة االستعالم على أنها تحتوي على معلمة واحدة تسمى البيانات ،
وبالتالي قم بتقديم أنواع مختلفة من حموالت الهجوم كقيمة هذه المعلمة ،سيفقد العديد من أنواع الثغرات التي قد تكون موجودة في معالجة سلسلة االستعالم .على
العكس ،إذا قمت 0بتشريح التنسيق ووضع حموالتك داخل حقول بيانات XMLالمضمنة ،فقد تكتشف على الفور خطًأ ها ًما مثل إدخال SQLأو اجتياز المسار.
تتضمن الفئة النهائية لنقاط اإلدخال الخاصة بإدخال المستخدم أي قناة خارج النطاق يتلقى التطبيق بواسطتها البيانات التي يمكنك التحكم فيها .قد تكون بعض نقاط
الدخول هذه غير قابلة للكشف تما ًما إذا قمت 0ببساطة بفحص حركة مرور HTTPالتي تم إنشاؤها بواسطة التطبيق ،وعادةً ما يتطلب العثور عليها فهم السياق
األوسع للوظيفة التي ينفذها التطبيق .تتضمن بعض أمثلة تطبيقات الويب التي تتلقى بيانات يمكن التحكم فيها من قِبل المستخدم عبر قناة خارج النطاق ■ :تطبيق
بريد الويب الذي يعالج رسائل البريد اإللكتروني المستلمة عبر SMTPويعرضها ■ .تطبيق نشر يحتوي على وظيفة السترداد المحتوى عبر HTTPمن خادم آخر.
■ تطبيق للكشف عن التطفل يقوم بجمع البيانات باستخدام الشم على الشبكة ويعرض ذلك باستخدام واجهة تطبيق ويب .الفصل الرابع ■ رسم خرائط التطبيق 81
70779c04.qxd: WileyRed 9/14/07 3:12 PM Page 81تحديد تقنيات جانب الخادم من الممكن عادةً أخذ بصمات التقنيات المستخدمة 0على الخادم عبر
القرائن والمؤشرات المختلفة Banner Grabbing .تكشف العديد من خوادم الويب معلومات اإلصدار الدقيقة ،حول برنامج خادم الويب نفسه والمكونات األخرى
التي تم تثبيتها .على سبيل المثال ،يكشف رأس خادم HTTPعن قدر كبير من التفاصيل حول بعض عمليات التثبيت:
باإلضافة إلى رأس الخادم ،المواقع األخرى التي قد يتم الكشف عن نوع البرنامج وإصداره هي ■ :القوالب المستخدمة 0إلنشاء صفحات ■ HTMLرؤوس HTTP
مخصصة ■ معلمات 0سلسلة استعالم عنوان URLبصمة HTTPمن حيث المبدأ ،أي عنصر من المعلومات التي يتم إرجاعها بواسطة الخادم يمكن تخصيصها أو
حتى تزييفها عن عمد ،وال تُعد الفتات مثل رأس الخادم استثنا ًء .تتضمن بعض برامج خادم الويب أداة للمسؤولين لتعيين قيمة عشوائية لرأس الخادم .عالوة على
ذلك ،هناك منتجات أمان تستخدم طرقًا مختلفة لمحاولة منع اكتشاف برنامج خادم الويب ،مثل .ServerMask by Port80 Softwareال يبدو أن محاولة
الحصول على شعار الخادم من خادم الويب الخاص بـ Port80تكشف عن الكثير من المعلومات المفيدة:
على الرغم من إجراءات كهذه ،من الممكن عادةً للمهاجم 0المصمم استخدام جوانب أخرى من سلوك خادم الويب لتحديد البرنامج المستخدم ،أو على األقل تضييق
نطاق االحتماالت .تحتوي مواصفات HTTPعلى الكثير من التفاصيل التي تكون اختيارية أو متروكة لتقدير الجهة المنفذة .عالوة على ذلك ،فإن العديد من خوادم
الويب تحيد أو تمدد المواصفات بطرق مختلفة مختلفة .ونتيجة لذلك ،هناك العديد من الطرق الدقيقة التي يمكن من خاللها بصمة خادم الويب ،بخالف شعار الخادم
الخاص به Httprint .هي أداة سهلة االستخدام تقوم بإجراء عدد من االختبارات في محاولة لضبط بصمة برنامج خادم الويب .في حالة خادم Port80
، Softwareفإنه يبلغ بدرجة ثقة تبلغ ٪58أن برنامج الخادم المستخدم هو في الواقع Microsoft IISاإلصدار ، 5.1كما هو موضح في الشكل .6-4
الشكل :6-4بصمة Httprintالمختلفة لخوادم الويب المختلفة توضح لقطة الشاشة أيضًا كيف يمكن لـ Httprintهزيمة أنواع أخرى من المحاوالت المضللة بشأن
برنامج خادم الويب المستخدم .يستخدم موقع Foundstoneعلى الويب الفتة مضللة ،ولكن ال يزال بإمكان Httprintاكتشاف البرنامج الفعلي .وقد تم تكوين
خادم RedHatلتقديم شعار Apacheغير اللفظي "أباتشي" ،ولكن Httprintقادر على استنتاج نسخة معينة من Apacheيتم استخدامها بدرجة عالية من الثقة.
الفصل ■ 4رسم خرائط التطبيق 70779c04.qxd: WileyRed 9/14/07 3:12 PM Page 83 83ملحقات الملفات المستخدمة في عناوين URLغالبًا ما
تكشف عن النظام األساسي أو لغة البرمجة المستخدمة 0لتنفيذ الوظائف ذات الصلة .على سبيل المثال - asp ■ :صفحات خادم Microsoftالنشطة ■ aspx -
- Microsoft ASP.NET ■ jspصفحات خادم - Java ■ cfm - Cold Fusion ■ phpلغة - PHP ■ d2w - WebSphere ■ plلغة - Perl ■ pyلغة
- Python ■ dllعادةً ما يتم تجميع الكود األصلي ( Cأو nsf ■ )++ Cأو ntf - Lotus Dominoحتى إذا كان التطبيق ال يستخدم ملحق ملف معين في محتواه
المنشور ،فمن الممكن عادةً التحقق مما إذا كانت التكنولوجيا التي تدعم هذا الملحق قد تم تنفيذها على الخادم .على سبيل المثال ،إذا تم تثبيت ، ASP.NETفإن طلب
ملف aspx.غير موجود سيُظهر صفحة خطأ مخصصة تم إنشاؤها بواسطة إطار عمل ، ASP.NETكما هو موضح في الشكل ، 7-4في حين أن طلب ملف غير
موجود بامتداد مختلف يُرجع عا ًم ا رسالة خطأ تم إنشاؤها بواسطة خادم الويب ،كما هو موضح في الشكل .8-4
الشكل :7-4صفحة خطأ مخصصة تشير إلى أن منصة ASP.NETموجودة على الخادم
الشكل : 8-4رسالة خطأ عامة تم إنشاؤها عند طلب امتداد ملف غير معروف باستخدام تقنيات اكتشاف المحتوى المؤتمتة الموصوفة بالفعل ،من الممكن
طلب عدد كبير من امتدادات الملفات الشائعة والتأكد بسرعة من تنفيذ أي من التقنيات المرتبطة على الخادم .ينشأ السلوك المتشعب الموضح ألن العديد من خوادم
الويب تقوم بتعيين امتدادات ملفات معينة لمكونات معينة من جانب الخادم .قد يعالج كل مكون مختلف األخطاء (بما في ذلك طلبات المحتوى غير الموجود) بطريقة
مختلفة .يوضح الشكل 9-4الملحقات المختلفة التي تم تعيينها إلى DLLsلمعالج مختلف في تثبيت افتراضي لـ .IIS 5.0
الشكل :9-4تعيينات امتداد الملف في IIS 5.0الفصل ■ 4تعيين التطبيق 70779c04.qxd: WileyRed 9/14/07 3:12 85م الصفحة 85من الممكن
الكشف عن وجود كل تعيين ملحق الملف عبر الخطأ المختلف الرسائل التي تم إنشاؤها عند طلب ملحق الملف هذا .في بعض الحاالت ،قد يشير اكتشاف تعيين
معين إلى وجود ثغرة في خادم الويب -على سبيل المثال ،تم العثور على معالجات printer. 0و ida / .idq.في IISفي الماضي عرضة لثغرات أمنية في المخزن
المؤقت .البصمة الشائعة األخرى التي يجب أن تكون على دراية بها هي عناوين URLالتي تبدو كما يلي:
عادةً ما يتم إنشاء األرقام المفصولة بفواصل في نهاية عنوان URLبواسطة النظام األساسي إلدارة محتوى .Vignetteأسماء الدليل من الشائع العثور على أسماء
دليل فرعي تشير إلى وجود تقنية مرتبطة .على سبيل المثال ■ ■ servlet - Java servlets ■ ■ :الثابتة والمتنقلة Oracle Application Server PL / -
- SQL gateway ■ ■ cfdocs or cfide - Cold Fusion ■ ■ SilverStreamخادم الويب SilverStream ■ ■ WebObjectsأو {woa. }function
■ ■ - Apple WebObjectsالقضبان Ruby on Rails Session Tokens -العديد من خوادم الويب ومنصات تطبيقات الويب تنشئ رمو ًزا مميزة للجلسة
بشكل افتراضي مع األسماء 0التي توفر معلومات حول التقنية المستخدمة .على سبيل المثال - JSESSIONID ■ ■ :منصة - Java ■ ■ ASPSESSIONIDخادم
Microsoft IIS ■ ■ ASP.NET_SessionId - Microsoft ASP.NET ■ ■ CFID / CFTOKEN - Cold Fusion ■ ■ PHPSESSID - PHP 86
■ Chapter 4رسم خرائط للتطبيق 70779c04.qxd : WileyRed 9/14/07 3:12 PM Page 86مكونات رمز الطرف الثالث تتضمن العديد من تطبيقات
الويب مكونات رمز طرف ثالث لتنفيذ وظائف مشتركة مثل عربات التسوق وآليات تسجيل الدخول ولوحات الرسائل .قد تكون هذه مفتوحة المصدر أو ربما تم
شراؤها من مطور برامج خارجي .في هذه الحالة ،غالبًا ما تظهر نفس المكونات داخل العديد من تطبيقات الويب األخرى على اإلنترنت ،والتي يمكنك فحصها
لفهم كيفية عمل المكون .في كثير من األحيان ،سيتم استخدام ميزات مختلفة لنفس المكون بواسطة تطبيقات أخرى ،مما يتيح لك تحديد سلوك ووظائف إضافية
ضا ،قد يحتوي البرنامج على نقاط ضعف معروفة تمت مناقشتها 0في مكان آخر ،أو قد تتمكن من تنزيل تتجاوز ما هو مرئي مباشرة في التطبيق المستهدف .أي ً
المكون وتثبيته بنفسك وإجراء مراجعة شفرة المصدر أو التحقق من وجود عيوب بطريقة يتم التحكم فيها .خطوات االختراق ■ حدد جميع نقاط اإلدخال إلدخال
المستخدم ،بما في ذلك عناوين ، URLومعلمات سلسلة االستعالم ،وبيانات ، POSTوملفات تعريف االرتباط ،ورؤوس HTTPاألخرى التي يعالجها التطبيق■ .
فحص تنسيق سلسلة االستعالم المستخدمة من قبل التطبيق .إذا لم يتم استخدام التنسيق القياسي الموضح في الفصل ، 3فحاول فهم كيفية إرسال المعلمات 0عبر عنوان
.URLفي الواقع ،ال تزال جميع المخططات 0المخصصة تستخدم بعض االختالفات 0في نموذج االسم /القيمة ،لذا حاول فهم كيفية تضمين أزواج االسم /القيمة في
عناوين URLغير القياسية التي حددتها ■ .تحديد أي قنوات خارج النطاق يتم من خاللها إدخال بيانات يتحكم فيها المستخدم أو بيانات جهات خارجية أخرى في
معالجة التطبيق ■ .عرض الفتة خادم HTTPالتي أرجعها 0التطبيق .الحظ أنه في بعض الحاالت ،يتم التعامل مع مناطق مختلفة من التطبيق بمكونات خلفية
مختلفة ،وبالتالي قد يتم استقبال رؤوس مختلفة للخادم ■ .تحقق من وجود أي معرفات 0برامج أخرى مضمنة في أي رؤوس HTTPمخصصة أو تعليقات التعليمات
البرمجية المصدر لـ ■ .HTMLتشغيل أداة Httprintلبصمة خادم الويب ■ .إذا تم الحصول على معلومات دقيقة حول خادم الويب والمكونات األخرى ،فابحث
في إصدارات البرامج المستخدمة لتحديد أي ثغرات يمكن استغاللها للتقدم في هجوم (انظر الفصل ■ .)17راجع خريطتك لعناوين URLللتطبيق ،لتحديد أي
امتدادات ملف أو أدلة أو أدلة متتالية مثيرة لالهتمام قد توفر أدلة حول التقنيات المستخدمة 0على الخادم.
خطوات ( HACKتابع) ■ راجع أسماء جميع الرموز المميزة للجلسات الصادرة عن التطبيق لتحديد التقنيات المستخدمة ■ .استخدم قوائم التقنيات الشائعة ،أو
، Googleلتحديد التقنيات التي يمكن استخدامها على الخادم ،أو الكتشاف مواقع الويب والتطبيقات األخرى التي يبدو أنها تستخدم نفس التقنيات ■ .إجراء عمليات
بحث على Googleألسماء 0أي ملفات تعريف ارتباط ونصوص برمجية ورؤوس HTTPوما شابه ذلك قد تنتمي إلى مكونات برامج تابعة لجهات خارجية .إذا قمت0
بتحديد موقع تطبيقات أخرى يتم فيها استخدام نفس المكونات ،فراجعها لتحديد أي وظائف ومعلمات إضافية تدعمها المكونات ،وتحقق مما إذا كانت موجودة أيضًا
في التطبيق المستهدف .الحظ أن مكونات الطرف الثالث قد تبدو مختلفة تما ًما في كل عملية تنفيذ ،نظ ًرا لتخصيصات العالمة التجارية ،ولكن الوظائف األساسية ،
بما في ذلك أسماء البرامج النصية والمعلمات ،هي نفسها غالبًا .إن أمكن ،قم بتنزيل المكون وتثبيته وتحليله لفهم قدراته بشكل كامل واكتشاف أي ثغرات إن أمكن.
استشر مستودعات الثغرات المعروفة لتحديد أي عيوب معروفة في المكون المعني .تحديد الوظائف من جانب الخادم غالبًا ما يكون من الممكن استنتاج قدر كبير من
الوظائف والهيكل من جانب الخادم ،أو على األقل تخمين مدروس ،من خالل مالحظة القرائن التي يكشف عنها التطبيق للعميل .طلبات التشريح خذ بعين االعتبار
عنوان URLالتالي ،الذي يستخدم للوصول إلى وظيفة البحث:
كما رأينا ،يشير امتداد الملف jsp.إلى أن صفحات خادم جافا قيد االستخدام .يمكنك تخمين أن وظيفة البحث ستسترد معلوماتها من نظام الفهرسة أو قاعدة
البيانات ؛ يشير وجود معلمة OrderByإلى أنه يتم استخدام قاعدة بيانات خلفية ،وأنه يمكن استخدام القيمة التي ترسلها كبند ORDER BYالستعالم .SQLقد تكون
هذه المعلمة عرضة لحقن ، SQLكما قد تكون أي من المعلمات األخرى إذا تم استخدامها في استعالمات قاعدة البيانات (انظر الفصل 88 .)9الفصل ■ 4رسم
خرائط التطبيق 70779c04.qxd: WileyRed 9/14/07 3:12 PM Page 88من المجاالت 0المهمة األخرى هو حقل .isExpiredيبدو أن هذا يمثل عالمة
منطقية تحدد ما إذا كان استعالم البحث يجب أن يتضمن محتوى منتهي الصالحية .إذا لم يتوقع مصممو التطبيق أن يتمكن المستخدمون العاديون من استرداد أي
محتوى منتهي الصالحية ،فقد يؤدي تغيير هذه المعلمة من 0إلى 1إلى تحديد ثغرة التحكم في الوصول (انظر الفصل .)8يحتوي عنوان URLالتالي ،الذي يسمح
للمستخدمين بالوصول إلى نظام إدارة المحتوى ،على مجموعة مختلفة من القرائن:
هنا ،يشير ملحق الملف aspx.إلى أن هذا تطبيق .ASP.NETيبدو أيضًا أنه من المحتمل جدًا أن يتم استخدام معلمة القالب لتحديد اسم الملف ،ويتم استخدام المعلمة
locلتحديد دليل .يبدو أن امتداد الملف المحتمل tpl.يؤكد ذلك ،وكذلك الموقع /االفتراضي ،والذي يمكن أن يكون اسم دليل .من الممكن أن يقوم التطبيق باسترداد
ملف القالب المحدد ويتضمن المحتويات في استجابته .قد تكون هذه المعلمات 0عرضة لهجمات اجتياز المسار ،مما يسمح بقراءة الملفات العشوائية من الخادم (انظر
ضا معلمة التحرير ،والتي تم تعيينها على . falseقد يكون تغيير هذه القيمة إلى "حقيقي" سيؤدي إلى تعديل وظيفة التسجيل ،مما قد يتيح
الفصل .)10من المهم أي ً
للمهاجم 0تعديل العناصر التي لم يكن مطور التطبيق يعتزم تعديلها .ليس لدى المعلمة verأي غرض يمكن تخمينه بسهولة ،ولكن قد يكون تعديل ذلك سيؤدي إلى
قيام التطبيق بتنفيذ مجموعة مختلفة من الوظائف التي يمكن استغاللها من قبل مهاجم .أخي ًرا ،ضع في االعتبار الطلب التالي ،والذي يُستخدم إلرسال سؤال إلى
مسؤولي التطبيق:
كما هو الحال مع األمثلة األخرى ،يشير امتداد الملف php.إلى أنه يتم تنفيذ الوظيفة باستخدام لغة .PHPعالوة على ذلك ،من المرجح للغاية أن التطبيق يتفاعل
مع نظام بريد إلكتروني خارجي ،ويبدو أن اإلدخال الذي يمكن التحكم فيه من قبل المستخدم يتم تمريره إلى هذا النظام في جميع المجاالت ذات الصلة بالبريد
ضا لحقن رأس البريد اإللكتروني (انظر اإللكتروني .قد تكون الوظيفة قابلة لالستغالل إلرسال رسائل عشوائية إلى أي مستلم ،وقد يكون أي من الحقول عرضة أي ً
الفصل .)9الفصل الرابع ■ رسم خرائط التطبيق 70779c04.qxd: WileyRed 9/14/07 3:12 89م صفحة 89خطوات االختراق ■ راجع أسماء وقيم جميع
المعلمات 0التي يتم تقديمها إلى التطبيق ،في سياق الوظيفة التي يدعمونها ■ .حاول أن تفكر كمبرمج ،وتخيل ما هي اآلليات والتقنيات من جانب الخادم التي من
المحتمل أن يتم استخدامها لتنفيذ السلوك الذي يمكنك مالحظته .غالبًا ما يتصرف التطبيق بطريقة متسقة عبر نطاق وظائفه .قد يكون هذا بسبب كتابة وظائف مختلفة
من قبل نفس المطور ،أو بنفس مواصفات التصميم ،أو مشاركة 0بعض مكونات التعليمات البرمجية الشائعة .في هذه الحالة ،قد يكون من الممكن استخالص
استنتاجات 0حول الوظائف من جانب الخادم في منطقة واحدة واستنتاجها إلى منطقة أخرى .على سبيل المثال ،قد يفرض التطبيق بعض عمليات التحقق من صحة
المدخالت 0العالمية ،مثل تطهير أنواع مختلفة من المدخالت الضارة المحتملة قبل معالجتها .بعد تحديد ثغرة أمنية في حقن ، SQLقد تواجه مشاكل في استغاللها ،
ألن طلباتك المصممة يتم تعديلها بطرق غير مرئية من خالل منطق التحقق من صحة اإلدخال .ومع ذلك ،قد تكون هناك وظائف أخرى داخل التطبيق توفر
مالحظات جيدة حول نوع التعقيم الذي يتم إجراؤه -على سبيل المثال ،وظيفة تكرر بعض البيانات التي قدمها المستخدم إلى المتصفح .قد تكون قاد ًرا على استخدام
هذه الوظيفة الختبار ترميزات مختلفة وأشكال مختلفة لحمولة إدخال ، SQLلتحديد المدخالت األولية التي يجب إرسالها لتحقيق سلسلة الهجوم المطلوبة بعد تطبيق
منطق التحقق من اإلدخال .إذا كنت محظوظً ا ،فإن التحقق يعمل بنفس الطريقة عبر التطبيق ،مما يتيح لك استغالل خلل الحقن .تستخدم بعض التطبيقات مخططات
التعتيم المخصصة عند تخزين البيانات الحساسة 0على العميل ،لمنع الفحص غير الرسمي وتعديل هذه البيانات من قبل المستخدمين (انظر الفصل .)5قد يكون من
الصعب للغاية فك بعض هذه المخططات بالنظر إلى الوصول إلى عينة فقط من البيانات المشوشة .ومع ذلك ،قد تكون هناك وظائف داخل التطبيق حيث يمكن
للمستخدم توفير سلسلة مشوشة واسترداد األصل -على سبيل المثال ،قد تتضمن رسالة خطأ البيانات غير المشبعة التي أدت إلى الخطأ .إذا تم استخدام نفس نظام
التعتيم في جميع أنحاء التطبيق ،فقد يكون من الممكن أخذ سلسلة مشوشة من مكان واحد (على سبيل المثال ملف تعريف ارتباط) ،وإدخاله في الوظيفة األخرى لفك
ض ا إجراء هندسة عكسية لنظام التعتيم من خالل تقديم قيم متفاوتة بشكل منهجي للوظيفة ومراقبة مكافئاتها غير المشبعة.
رموز معناه .قد يكون من الممكن أي ً
أخيرًا ،غالبًا ما يتم التعامل مع األخطاء بطريقة غير متناسقة داخل التطبيق ،مع احتواء بعض المناطق لألخطاء ومعالجتها بأمان ،في حين تتعطل المناطق
األخرى وتعيد معلومات تصحيح األخطاء المطلقة إلى المستخدم( 0راجع الفصل .)14في هذه الحالة ،قد يكون من الممكن جمع معلومات من رسائل الخطأ التي تم
إرجاعها في منطقة واحدة وتطبيقها على مناطق أخرى حيث يتم التعامل مع األخطاء بأمان .على سبيل المثال ،من خالل معالجة معلمات الطلب بطرق منهجية
ومراقبة رسائل الخطأ الواردة ،قد يكون من الممكن تحديد البنية الداخلية والمنطق لمكون التطبيق المعني ؛ إذا كنت محظوظًا ،فقد يتم تكرار جوانب هذا الهيكل في
مناطق أخرى .خطوات ■ HACKحاول تحديد أي مواقع داخل التطبيق قد تحتوي على أدلة حول الهيكل الداخلي ووظائف المناطق األخرى ■ .قد ال يكون من
الممكن استخالص أية استنتاجات 0مؤكدة هنا ؛ ومع ذلك ،قد تكون الحاالت التي تم تحديدها مفيدة في مرحلة الحقة من الهجوم عند محاولة استغالل أي نقاط ضعف
محتملة .رسم خرائط لسطح الهجوم المرحلة النهائية من عملية رسم الخرائط هي تحديد أسطح الهجوم المختلفة التي كشف عنها التطبيق ،ونقاط الضعف المحتملة
التي ترتبط عادة بكل سطح .فيما يلي دليل تقريبي لبعض أنواع السلوك والوظائف الرئيسية التي يمكنك تحديدها ،وأنواع الثغرات األكثر شيوعًا داخل كل منها.
سيهتم الجزء المتبقي من هذا الكتاب بالتفاصيل العملية لكيفية اكتشاف كل من هذه المشاكل واستغاللها ■ :التحقق من جانب العميل -قد ال يتم نسخ الشيكات على
الخادم .تفاعل قاعدة البيانات -إدخال ■ . SQLتحميل الملفات و تنزيل -مسار ثغرات اجتياز المسار ■ .عرض البيانات التي يوفرها المستخدم - 0البرمجة النصية
عبر المواقع ■ .عمليات إعادة التوجيه الديناميكية -هجمات إعادة التوجيه وحقن الرأس ■ .تسجيل الدخول -تعداد اسم المستخدم ،كلمات المرور الضعيفة ،القدرة
على استخدام القوة الغاشمة ■ 0تسجيل الدخول متعدد المراحل -عيوب المنطق .التصعيد امتياز.
■ وظائف انتحال هوية المستخدم -تصعيد االمتياز ■ .استخدام اتصاالت النص الواضح -اختطاف الجلسة ،التقاط بيانات االعتماد والبيانات الحساسة األخرى■ .
روابط خارج الموقع -تسرب معلمات سلسلة االستعالم في رأس المرجع ■ .واجهات 0لألنظمة الخارجية -اختصارات في التعامل للجلسات و /أو عناصر التحكم
في الوصول ■ .رسائل الخطأ -تسرب المعلومات ■ .تفاعل البريد اإللكتروني -البريد اإللكتروني و /أو إدخال األوامر ■ .مكونات الرمز األصلي أو التفاعل -
تجاوزات المخزن المؤقت ■ .استخدام مكونات التطبيق التابعة لجهات 0خارجية -نقاط الضعف المعروفة ■ .يمكن تحديدها برنامج خادم الويب -نقاط الضعف
الشائعة في التكوين ،وأخطاء البرامج المعروفة .خطوات ■ HACKفهم الوظائف األساسية المنفذة داخل التطبيق وآليات األمان الرئيسية المستخدمة ■ .تحديد جميع
ميزات وظائف التطبيق وسلوكه التي غالبًا ما ترتبط بالثغرات الشائعة ■ .صياغة خطة هجوم تحدد أولويات الوظيفة األكثر إثارة لالهتمام وأخطر نقاط الضعف
المحتملة المرتبطة بها .ملخص الفصل رسم خرائط التطبيق هو شرط أساسي لمهاجمته .على الرغم من أنه قد يكون من المغري التعمق مباشرةً والبدء في البحث
عن األخطاء الفعلية ،إال أن تخصيص بعض الوقت لفهم سليم لوظائف التطبيق وتقنياته وسطح الهجوم سيؤتي ثماره .كما هو الحال مع جميع عمليات اختراق
تطبيقات الويب تقريبًا ،فإن النهج األكثر فاعلية هو استخدام التقنيات اليدوية المكملة عند االقتضاء عن طريق األتمتة المحكومة .ال توجد أداة مؤتمتة بالكامل يمكنها
إجراء تخطيط شامل للتطبيق بطريقة آمنة .للقيام بذلك ،تحتاج إلى استخدام يديك واالستفادة من تجربتك الخاصة .تتضمن المنهجية األساسية التي حددناها ما يلي■ :
التصفح اليدوي والتدقيق الموجه للمستخدم ،لتعداد المحتوى والوظائف المرئية للتطبيق