Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 33

‫كتيب تطبيق الويب‪ :‬اكتشاف واستغالل العيوب األمنية المنشورة من قبل ‪Wiley Publishing، Inc.

10475 Crosspoint Boulevard Indianapolis، IN‬‬


‫‪ 46256 www.wiley.com‬حقوق الطبع والنشر © ‪ 2008‬بواسطة ‪ Dafydd Stuttard‬و ‪ .Marcus Pinto‬تم النشر بواسطة ‪.Wiley Publishing، Inc‬‬
‫‪ ،‬إنديانابوليس ‪ ،‬إنديانا ‪ُ ،‬نشر في وقت واحد في كندا ‪ ISBN: 978-0-470-17077-9‬تم تصنيعها في الواليات المتحدة األمريكية ‪ 1 2 3 4 5 6 7 8 9 10‬ال‬
‫يجوز أن يكون أي جزء من هذا المنشور مستنسخة أو مخزنة في نظام استرجاع أو نقلها بأي شكل أو بأي وسيلة ‪ ،‬إلكترونية أو ميكانيكية أو تصوير ضوئي أو‬
‫تسجيل أو مسح ضوئي أو غير ذلك ‪ ،‬باستثناء ما هو مسموح به بموجب المادتين ‪ 107‬أو ‪ 108‬من قانون حقوق النشر بالواليات المتحدة لعام ‪ ، 1976‬دون أي‬
‫من الكتابات المسبقة إذن من الناشر ‪ ،‬أو تفويض من خالل دفع الرسوم المناسبة لكل نسخة إلى مركز تخليص حقوق الطبع والنشر ‪Rosewood Drive 222 ،‬‬
‫‪ ، ، Danvers ، MA 01923 ، (978) 750-8400‬فاكس (‪ . 8600-646 )978‬يجب توجيه الطلبات إلى الناشر للحصول على إذن إلى القسم القانوني ‪،‬‬
‫‪ ، Wiley Publishing، Inc. ، 10475 Crosspoint Blvd. ، Indianapolis ، IN 46256 ، (317) 572-3447‬فاكس (‪ ، 4355-572 )317‬أو عبر‬
‫اإلنترنت على ‪ .http: //www.wiley.com/go/permissions‬حدود المسؤولية ‪ /‬إخالء المسؤولية عن الضمان‪ :‬ال يقدم الناشر والمؤلف أي إقرارات أو‬
‫ضمانات فيما يتعلق بدقة أو اكتمال محتويات هذا العمل ويخليان المسؤولية عن كل الضمانات‪ ، W‬بما في ذلك على سبيل المثال ال الحصر ‪ ،‬ضمانات اللياقة البدنية‬
‫لغرض معين‪ .‬ال يجوز إنشاء‪ W‬أو تمديد أي ضمان من خالل المبيعات أو المواد الترويجية‪ .‬قد ال تكون النصائح واالستراتيجيات الواردة هنا مناسبة لكل موقف‪.‬‬
‫يباع هذا العمل على أساس أن الناشر ال يشارك في تقديم الخدمات‪ W‬القانونية أو المحاسبية أو المهنية األخرى‪ .‬إذا كانت المساعدة المهنية مطلوبة ‪ ،‬فيجب التماس‬
‫خدمات الشخص المهني المختص‪ .‬ال يتحمل الناشر وال المؤلف المسؤولية عن األضرار الناشئة عن ذلك‪ .‬حقيقة أن منظمة أو موقع ويب يشار إليه في هذا العمل‬
‫كمصدر و ‪ /‬أو مصدر محتمل لمزيد من المعلومات ال يعني أن المؤلف أو الناشر يؤيد المعلومات التي قد تقدمها المنظمة أو موقع الويب أو التوصيات التي قد‬
‫تقدمها‪ .‬عالوة على ذلك ‪ ،‬يجب أن يدرك القراء أن مواقع اإلنترنت المدرجة في هذا العمل ربما تغيرت أو اختفت بين وقت كتابة هذا العمل ووقت قراءته‪.‬‬
‫للحصول على معلومات عامة حول منتجاتنا وخدماتنا األخرى أو للحصول على الدعم الفني ‪ ،‬يرجى االتصال بقسم رعاية العمالء داخل الواليات المتحدة على‬
‫الرقم (‪ ، 2974-762 )800‬خارج الواليات المتحدة على الرقم (‪ 3993-572 )317‬أو الفاكس (‪ . 4002-572 )317‬مكتبة الكونجرس فهرسة البيانات في‬
‫النشر شتوتارد ‪ -Dafydd ، 1972 ،‬دليل القراصنة لتطبيق الويب‪ :‬اكتشاف واستغالل العيوب األمنية ‪ .Dafydd Stuttard ، Marcus Pinto /‬ص‪ .‬سم‪.‬‬
‫يتضمن فهرس‪ .ISBN 978-0-470-17077-9 (pbk.) 1 .‬اإلنترنت ‪ -‬تدابير األمن‪ .2 .‬أمن الحاسوب‪ .I .‬بينتو ‪ ،‬ماركوس ‪ .II -1978 ،‬عنوان‪.‬‬
‫‪ TK5105.875.I57S85 2008 005.8 - dc22 2007029983‬العالمات التجارية‪ Wiley :‬وثياب التجارة ذات الصلة هي عالمات تجارية مسجلة لشركة‬
‫‪ ، .Wiley Publishing، Inc‬في الواليات المتحدة وبلدان أخرى ‪ ،‬وال يجوز استخدامها دون إذن كتابي‪ .‬جميع العالمات‪ W‬التجارية األخرى هي ملك ألصحابها‪.‬‬
‫ض ا كتبها في مجموعة متنوعة من التنسيقات اإللكترونية‪.‬‬‫ال ترتبط شركة ‪ .Wiley Publishing، Inc‬بأي منتج أو بائع مذكور في هذا الكتاب‪ .‬تنشر ‪ Wiley‬أي ً‬
‫قد ال يتوفر بعض المحتوى الذي يظهر في الطباعة في الكتب اإللكترونية‬

‫هذا الكتاب هو دليل عملي الكتشاف واستغالل العيوب األمنية في تطبيقات الويب‪ .‬نقصد بـ "تطبيق الويب" تطبي ًقا يتم الوصول إليه باستخدام متصفح الويب‬
‫للتواصل مع خادم الويب‪ .‬ندرس مجموعة واسعة من التقنيات المختلفة ‪ ،‬مثل قواعد البيانات وأنظمة الملفات وخدمات الويب ‪ ،‬ولكن فقط في السياق الذي تستخدم‬
‫فيه تطبيقات الويب‪ .‬إذا كنت تريد معرفة كيفية تشغيل عمليات مسح المنفذ ‪ ،‬أو مهاجمة جدران الحماية ‪ ،‬أو اختراق الخوادم بطرق أخرى ‪ ،‬نقترح عليك البحث‬
‫في مكان آخر‪ .‬ولكن إذا كنت تريد معرفة كيفية اختراق تطبيق ويب ‪ ،‬وسرقة البيانات الحساسة ‪ ،‬وتنفيذ إجراءات غير مصرح بها ‪ ،‬فهذا هو الكتاب المناسب لك‪.‬‬
‫هناك ما يكفي من المثير والممتع أن نقول عن هذا الموضوع دون أن نبتعد عن أي منطقة أخرى‪ .‬نظرة عامة على هذا الكتاب إن تركيز هذا الكتاب عملي للغاية‪.‬‬
‫بينما نقوم بتضمين الخلفية والنظرية الكافية لك لفهم نقاط الضعف التي تحتوي عليها تطبيقات الويب ‪ ،‬فإن شاغلنا األساسي هو المهام والتقنيات التي تحتاج إلى‬
‫إتقانها القتحامها‪ .‬طوال الكتاب ‪ ،‬نوضح الخطوات المحددة التي تحتاج إلى اتخاذها للكشف عن كل نوع من الثغرات وكيفية استغاللها ألداء إجراءات غير مصرح‬
‫ضا مجموعة كبيرة من األمثلة الواقعية ‪ ،‬المستمدة‪ 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‬هل يمكنك تجاوز آلية التحقق هذه لتهريب البيانات التالية بعدها؟‬

‫‪Web Application Technologies‬تقنيات تطبيق الويب‬


‫تستخدم تطبيقات الويب عد ًد ا ال يحصى من التقنيات المختلفة لتنفيذ وظائفها‪ .‬يحتوي هذا الفصل على كتاب تمهيدي قصير عن التقنيات الرئيسية التي من‬
‫المحتمل أن تواجهها عند مهاجمة تطبيقات الويب‪ .‬سنفحص بروتوكول ‪ ، HTTP‬والتقنيات المستخدمة بشكل شائع من جانب الخادم والعميل ‪ ،‬ومخططات الترميز‬
‫المستخدمة‪ W‬لتمثيل البيانات في مواقف مختلفة‪ .‬هذه التقنيات سهلة الفهم بشكل عام ‪ ،‬وفهم ميزاتها ذات الصلة هو المفتاح لتنفيذ هجمات فعالة ضد تطبيقات الويب‪.‬‬
‫إذا كنت بالفعل على دراية بالتقنيات األساسية المستخدمة‪ W‬في تطبيقات الويب ‪ ،‬يمكنك تصفح هذا الفصل بسرعة لتأكيد أنه ال يوجد شيء جديد هنا بالنسبة لك‪ .‬إذا‬
‫كنت ال تزال تتعلم كيفية عمل تطبيقات الويب ‪ ،‬فيجب عليك قراءة هذا التمهيدي قبل المتابعة إلى الفصول األخيرة حول نقاط ضعف معينة‪ .‬لمزيد من القراءة حول‬
‫أي من المجاالت المشمولة ‪ ،‬أوصينا بـ )‪ .HTTP: The Definitive Guide by David Gourley and Brian Totty (O’Reilly، 2002‬بروتوكول ‪HTTP‬‬
‫بروتوكول نقل النص التشعبي (‪ ) HTTP‬هو بروتوكول االتصاالت األساسي المستخدم للوصول إلى شبكة الويب العالمية ويستخدمه جميع تطبيقات الويب اليوم‪.‬‬
‫هو بروتوكول بسيط تم تطويره في األصل السترداد الموارد الثابتة القائمة على النص ‪ ،‬ومنذ ذلك الحين تم توسيعه واالستفادة منه في مختلف‬
‫طرق لتمكينها من دعم التطبيقات الموزعة المعقدة التي أصبحت شائعة اآلن‪ .‬يستخدم ‪ HTTP‬نموذجً ا قائمًا على الرسائل يرسل فيه العميل رسالة طلب ‪،‬‬
‫ويقوم الخادم بإرجاع رسالة استجابة‪ .‬البروتوكول غير متصل بشكل أساسي‪ :‬على الرغم من أن ‪ HTTP‬يستخدم بروتوكول ‪ TCP‬ذي الحالة كآلية نقل له ‪ ،‬فإن كل‬
‫تبادل للطلب واالستجابة هو معاملة‪ W‬مستقلة ‪ ،‬وقد يستخدم اتصال ‪ TCP‬مختل ًفا‪ .‬طلبات ‪ HTTP‬تتكون جميع رسائل ‪( HTTP‬الطلبات واالستجابات) من رأس واحد‬
‫أو أكثر ‪ ،‬كل منها في سطر منفصل ‪ ،‬يليه سطر فارغ إلزامي ‪ ،‬يليه نص رسالة اختياري‪ .‬طلب ‪ HTTP‬النموذجي كما يلي‪:‬‬

‫يتكون السطر األول من كل طلب ‪ 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‬تم تكوين الدخيل التجشؤ للتحقيق في الدالئل المشتركة‬
‫عند تنفيذ الهجوم ‪ ،‬سيؤدي النقر على رؤوس األعمدة مثل "الحالة" و "الطول" إلى فرز النتائج وفقًا لذلك ‪ ،‬مما يتيح انتقاء الحاالت الشاذة بسرعة ‪ ،‬كما هو‬

‫موضح في الشكل ‪.4-4‬‬


‫الشكل ‪ :4-4‬نتائج اختبار اختبار الدالئل الشائعة ‪ ■ HACK STEPS‬قم بإجراء بعض الطلبات اليدوية لموارد معروفة صالحة وغير صالحة ‪ ،‬وحدد كيفية تعامل‬
‫الخادم مع هذه األخيرة‪ ■ .‬استخدام خريطة الموقع التي تم إنشاؤها من خالل العنكبوت الموجه بواسطة المستخدم كأساس الكتشاف المحتوى المخفي تلقائيًا‪ ■ .‬تقديم‬
‫طلبات تلقائية ألسماء الملفات واألدلة الشائعة‪ 0‬داخل كل دليل أو مسار معروف بوجوده داخل التطبيق‪ .‬استخدم ‪ Burp Intruder‬أو نص برمجي مخصص ‪ ،‬جنبًا‬
‫إلى جنب مع قوائم الكلمات للملفات واألدلة الشائعة ‪ ،‬إلنشاء أعداد كبيرة من الطلبات بسرعة‪ .‬إذا كنت قد حددت طريقة معينة يتعامل بها التطبيق مع طلبات الموارد‬
‫غير الصالحة (على سبيل المثال ‪ ،‬صفحة مخصصة "لم يتم العثور على الملف") ‪ ،‬فقم بتكوين الدخيل أو النص البرمجي إلبراز هذه النتائج حتى يمكن تجاهلها‪■ .‬‬
‫التقاط الردود المتلقاة من الخادم ومراجعتها يدويًا لتحديد الموارد الصالحة‪ ■ .‬أداء التمرين بشكل متكرر عند اكتشاف محتوى جديد‪ .‬االستدالل من المحتوى المنشور‬
‫تستخدم معظم التطبيقات نو ًع ا من نظام التسمية لمحتواها ووظائفها‪ .‬من خالل االستنتاج من الموارد المحددة بالفعل داخل التطبيق ‪ ،‬من الممكن ضبط تمرين التعداد‬
‫اآللي الخاص بك لزيادة احتمال اكتشاف المزيد من المحتوى المخفي‪.‬‬
‫خطوات االختراق ■ راجع نتائج التصفح الذي يوجهه المستخدم وتمارين القوة الغاشمة‪ 0‬األساسية‪ .‬تجميع قوائم بأسماء‪ 0‬جميع الدالئل الفرعية المعدودة ‪ ،‬وسيقان‬
‫الملفات ‪ ،‬وملحقات الملفات‪ ■ .‬راجع هذه القوائم لتحديد أي مخططات تسمية قيد االستخدام‪ .‬على سبيل المثال ‪ ،‬إذا كانت هناك صفحات تسمى‬
‫‪ AddDocument.jsp‬و ‪ ، ViewDocument.jsp‬فقد تكون هناك أيضًا صفحات تسمى ‪ EditDocument.jsp‬و ‪ .RemoveDocument.jsp‬يمكنك في‬
‫كثير من األحيان التعود على عادات التسمية للمطورين بمجرد قراءة بعض األمثلة‪ .‬على سبيل المثال ‪ ،‬اعتمادًا على أسلوبهم الشخصي ‪ ،‬قد يكون المطورون مطواًل‬
‫(‪ )AddANewUser.asp‬أو مقتضبًا (‪ )AddUser.asp‬أو يستخدمون االختصارات (‪ )AddUsr.asp‬أو حتى يكونون أكثر تشفيرًا (‪ .)AddU.asp‬قد يساعدك‬
‫التعرف على أنماط التسمية المستخدمة‪ 0‬في تخمين األسماء الدقيقة للمحتوى الذي لم تحدده بالفعل‪ ■ .‬في بعض األحيان ‪ ،‬يستخدم نظام التسمية المستخدم لمحتوى‬
‫مختلف معرفات‪ 0‬مثل األرقام والتواريخ ‪ ،‬مما يجعل استنتاج المحتوى المخفي أمرًا سهالً للغاية‪ .‬ويصادف هذا بشكل شائع في أسماء الموارد الثابتة ‪ ،‬بدالً من‬
‫النصوص الديناميكية‪ .‬على سبيل المثال ‪ ،‬إذا كان موقع الشركة على الويب يرتبط بـ ‪ AnnualReport2004.pdf‬والتقرير السنوي ‪ ، pdf.2005‬فيجب أن تكون‬
‫خطوة قصيرة لتحديد ما سيتم استدعاء التقرير التالي‪ .‬بشكل ال يصدق إلى حد ما ‪ ،‬كانت هناك حاالت سيئة السمعة‪ 0‬للشركات التي تضع ملفات تحتوي على نتائج‬
‫مالية على خوادم الويب الخاصة بهم قبل اإلعالن عنها علنًا ‪ ،‬فقط ليكتشفها‪ 0‬الصحفيون المخادعون بنا ًء على نظام التسمية المستخدم في السنوات السابقة‪ ■ .‬مراجعة‬
‫جميع التعليمات‪ 0‬البرمجية من جانب العميل مثل ‪ HTML‬وجافا سكريبت لتحديد أي أدلة حول المحتوى المخفي من جانب الخادم‪ .‬قد تتضمن هذه التعليقات ‪HTML‬‬
‫المتعلقة بالوظائف المحمية أو غير المرتبطة ‪ ،‬ونماذج ‪ HTML‬مع عناصر ‪ SUBMIT‬المعطلة ‪ ،‬وما شابه‪ .‬غالبًا ما يتم إنشاء التعليقات تلقائيًا بواسطة البرنامج الذي‬
‫تم استخدامه إلنشاء محتوى ويب ‪ ،‬أو بواسطة النظام األساسي الذي يعمل عليه التطبيق‪ .‬إن المراجع إلى عناصر مثل ملفات الخادم تتضمن أهمية خاصة ‪ -‬قد تكون‬
‫هذه الملفات قابلة للتنزيل بشكل عام وقد تحتوي على معلومات‪ 0‬حساسة‪ 0‬للغاية مثل سالسل اتصال قاعدة البيانات وكلمات المرور‪ .‬في حاالت أخرى ‪ ،‬قد تحتوي‬
‫تعليقات المطورين على جميع أنواع الحكايات المفيدة ‪ ،‬مثل أسماء قواعد البيانات ‪ ،‬والمراجع لمكونات النهاية ‪ ،‬وسالسل استعالم ‪ ، SQL‬وما إلى ذلك‪ .‬قد تحتوي‬
‫مكونات العميل السميك مثل تطبيقات ‪ Java‬الصغيرة وعناصر تحكم ‪ ActiveX‬على بيانات حساسة يمكنك استخراجها‪ .‬انظر الفصل ‪ 14‬لمزيد من الطرق التي قد‬
‫يكشف التطبيق عن معلومات عن نفسه‪( .‬تابع) الفصل الرابع ■ رسم خرائط التطبيق ‪70779c04.qxd: WileyRed 9/14/07 3:12 PM Page 71 71‬‬
‫‪( HACK STEPS‬تابع) ■ أضف إلى قوائم العناصر التي تم تعدادها أي أسماء محتملة أخرى تم تخمينها بنا ًء على هذه‪ .‬أضف أيضًا إلى قائمة ملحقات الملفات‬
‫االمتدادات الشائعة مثل ‪ txt‬و ‪ bak‬و ‪ src‬و ‪ inc‬و القديمة ‪ ،‬والتي قد تكشف المصدر عن النسخ االحتياطية للصفحات الحية ‪ ،‬باإلضافة إلى الملحقات المرتبطة‬
‫بلغات التطوير المستخدمة‪ ، 0‬مثل ‪ Java‬و ‪ ، cs‬والتي قد تكشف عن ملفات المصدر التي تم تجميعها في صفحات حية (راجع النصائح الموضحة الحقًا في هذا‬
‫الفصل لتحديد التقنيات المستخدمة)‪ .‬تقوم أداة ‪ Paros‬بإجراء هذا االختبار عند استخدامها إلجراء فحص الثغرات األمنية (انظر الفصل ‪ ■ .)19‬ابحث عن الملفات‬
‫المؤقتة التي ربما تم إنشاؤها عن غير قصد بواسطة أدوات المطورين ومحرري الملفات ‪ -‬على سبيل المثال ‪ ،‬ملف ‪ ، DS_Store.‬الذي يحتوي على فهرس دليل‬
‫تحت ‪ ، OSX‬أو ‪ ، file.php ~ 1‬وهو ملف مؤقت يتم إنشاؤه عند إنشاء ملف‪ .‬تم تحرير ‪ ■ . PHP‬إجراء المزيد من التمارين اآللية ‪ ،‬والجمع بين قوائم الدالئل‬
‫وسيقان الملفات وامتدادات الملفات لطلب أعداد كبيرة من الموارد المحتملة‪ .‬على سبيل المثال ‪ ،‬في دليل معين ‪ ،‬اطلب كل جذع ملف مدمج مع كل ملحق ملف‪ .‬أو‬
‫اطلب كل اسم دليل كدليل فرعي لكل دليل معروف‪ ■ .‬عندما يتم تحديد مخطط تسمية متسق ‪ ،‬ضع في اعتبارك القيام بتمرين أكثر قوة تركز على القوة الغاشمة على‬
‫أساس ذلك‪ .‬على سبيل المثال ‪ ،‬إذا كان من المعروف وجود ‪ AddDocument.jsp‬و ‪ ، ViewDocument.jsp‬يمكنك إنشاء قائمة‪ 0‬باإلجراءات (تحرير ‪ ،‬حذف ‪،‬‬
‫إنشاء ‪ ،‬وما إلى ذلك) وتقديم طلبات من النموذج ‪ .XxxDocument.jsp‬وبدالً من ذلك ‪ ،‬قم بإنشاء قائمة بأنواع العناصر (المستخدم ‪ ،‬الحساب‪ ، 0‬الملف ‪ ،‬إلخ‪ ).‬وقم‬
‫بعمل طلبات من النموذج ‪ ■ .AddXxx.jsp‬قم بإجراء كل تمرين تكراريًا ‪ ،‬باستخدام محتوى وأنماط جديدة معدة كأساس‪ 0‬لمزيد من العنكبوت الذي يوجهه‬
‫المستخدم ‪ ،‬واكتشاف المحتوى تلقائيًا‪ .‬أنت محدود فقط بخيالك ‪ ،‬والوقت المتاح ‪ ،‬واألهمية التي توليها الكتشاف المحتوى المخفي داخل التطبيق الذي تستهدفه‪.‬‬
‫استخدام المعلومات العامة قد يكون هناك محتوى ووظائف داخل التطبيق غير مرتبطة حاليًا بمحتواه الرئيسي ‪ ،‬ولكن تم ربطها في الماضي‪ .‬في هذه الحالة ‪ ،‬من‬
‫المرجح أن المستودعات التاريخية المختلفة ستظل تحتوي على إشارات إلى المحتوى المخفي‪ .‬هناك نوعان رئيسيان من الموارد المتاحة للجمهور المفيدة هنا‪■ :‬‬
‫محركات البحث مثل ‪ Google‬و ‪ Yahoo‬و ‪ .MSN‬هذه تحتفظ بفهرس دقيق لكل المحتوى الذي تمتلكه عناكبها القوية ‪ 72‬الفصل ‪ ■ 4‬رسم خرائط التطبيق‬
‫‪ 70779c04.qxd: WileyRed 9/14/07 3:12 PM Page 72‬المكتشفة ‪ ،‬وكذلك نس ًخ ا مخبأة من الكثير من هذا المحتوى ‪ ،‬والتي تستمر حتى بعد إزالة‬
‫المحتوى األصلي‪ ■ .‬أرشيفات الويب مثل آلة ‪ WayBack‬الموجودة على ‪ .web.archive.org‬تحتفظ هذه األرشيفات بسجل تاريخي لعدد كبير جدًا من مواقع‬
‫الويب ‪ ،‬وفي كثير من الحاالت تسمح للمستخدمين بتصفح لقطة مكررة بالكامل لموقع معين كما كانت موجودة في تواريخ مختلفة تعود إلى عدة سنوات‪ .‬باإلضافة‬
‫ض ا أن تحتوي هذه الموارد على مراجع لمحتوى مرتبط بمواقع جهات خارجية ‪ ،‬ولكن ليس من داخل‬ ‫إلى المحتوى الذي تم ربطه في الماضي ‪ ،‬من المحتمل أي ً‬
‫التطبيق المستهدف نفسه‪ .‬على سبيل المثال ‪ ،‬تحتوي بعض التطبيقات على وظائف مقيدة لالستخدام من قبل شركائها في العمل‪ .‬قد يكشف هؤالء الشركاء عن وجود‬
‫الوظيفة بطرق ال يفعلها التطبيق نفسه‪ .‬خطوات االختراق ■ استخدم العديد من محركات البحث وأرشيفات الويب المختلفة (المدرجة سابقًا) الكتشاف المحتوى الذي‬
‫تمت فهرسته أو تخزينه للتطبيق الذي تهاجمه‪ ■ .‬عند االستعالم عن محرك بحث ‪ ،‬يمكنك استخدام العديد من التقنيات المتقدمة لزيادة فعالية بحثك إلى أقصى حد‪.‬‬
‫تنطبق االقتراحات التالية على ‪ - Google‬يمكنك العثور على االستعالمات المقابلة في محركات أخرى عن طريق تحديد خيار البحث المتقدم الخاص بهم‪site: ■ :‬‬
‫‪ - www.wahh-target.com‬سيؤدي ذلك إلى إرجاع كل مورد داخل الموقع المستهدف الذي يشير ‪ Google‬إليه‪ ■ .‬الموقع‪ :‬تسجيل الدخول ‪www.wahh-‬‬
‫‪ - target.com‬سيؤدي ذلك إلى عرض جميع الصفحات التي تحتوي على تسجيل الدخول للتعبير‪ .‬في تطبيق كبير ومعقد للغاية ‪ ،‬يمكن استخدام هذه التقنية‬
‫الستعادة الموارد المثيرة لالهتمام بسرعة ‪ ،‬مثل خرائط الموقع ووظائف إعادة تعيين كلمة المرور والقوائم اإلدارية وما شابه ذلك‪ ■ .‬الرابط‪www.wahh- :‬‬
‫‪ - target.com‬سيؤدي ذلك إلى عرض جميع الصفحات الموجودة على مواقع الويب والتطبيقات األخرى التي تحتوي على رابط إلى الهدف‪ .‬قد يتضمن هذا روابط‬
‫إلى محتوى قديم ‪ ،‬أو وظيفة مخصصة لالستخدام من قبل أطراف ثالثة فقط ‪ ،‬مثل روابط الشركاء‪ ■ .‬ذات صلة‪ - www.wahh-target.com :‬يؤدي ذلك إلى‬
‫عرض صفحات "مشابهة" للهدف ‪ ،‬وبالتالي ستتضمن الكثير من المواد غير ذات الصلة‪ .‬ومع ذلك ‪ ،‬قد يتضمن أيضًا مناقشة‪ 0‬حول الهدف على مواقع أخرى ‪ ،‬والتي‬
‫ضا في مجموعات وأخبار ‪ ،‬والتي قد تحتوي‬ ‫قد تكون ذات فائدة‪ ■ .‬بالنسبة لكل عملية بحث ‪ ،‬قم بتنفيذها ليس فقط في قسم الويب االفتراضي في ‪ ، Google‬ولكن أي ً‬
‫على نتائج مختلفة‪( .‬واصلت)‬
‫خطوات االختراق (تابع) ■ استعرض للوصول إلى الصفحة األخيرة من نتائج البحث الستعالم معين ‪ ،‬وحدد تكرار البحث مع تضمين النتائج المحذوفة‪ .‬بشكل‬
‫كاف مع الصفحات األخرى المضمنة في النتائج‪ .‬قد‬ ‫ٍ‬ ‫افتراضي ‪ ،‬يحاول ‪ Google‬تصفية النتائج المكررة عن طريق إزالة الصفحات التي يعتقد أنها متشابهة بشكل‬
‫يؤدي تجاوز هذا السلوك إلى الكشف عن صفحات مختلفة بمهارة تهمك عند مهاجمة التطبيق‪ ■ .‬عرض النسخة المخبأة من صفحات مثيرة لالهتمام ‪ ،‬بما في ذلك أي‬
‫محتوى لم يعد موجو ًد ا في التطبيق الفعلي‪ .‬في بعض الحاالت ‪ ،‬تحتوي ذاكرة التخزين المؤقت لمحرك البحث على موارد ال يمكن الوصول إليها مباشرة في التطبيق‬
‫بدون مصادقة أو دفع‪ ■ .‬قم بإجراء نفس االستعالمات‪ 0‬حول أسماء النطاقات‪ 0‬األخرى التي تنتمي إلى نفس المؤسسة ‪ ،‬والتي قد تحتوي على معلومات مفيدة حول‬
‫التطبيق الذي تستهدفه‪ ■ .‬إذا كان بحثك يحدد المحتوى والوظائف القديمة التي لم تعد مرتبطة بداخل التطبيق الرئيسي ‪ ،‬فقد يظل موجودًا وقابل لالستخدام‪ .‬قد تحتوي‬
‫الوظيفة القديمة على ثغرات غير موجودة في مكان آخر داخل التطبيق‪ ■ .‬حتى في حالة إزالة المحتوى القديم من التطبيق المباشر ‪ ،‬فقد تحتوي تفاصيل حول‬
‫المحتوى الذي تم الحصول عليه من ذاكرة التخزين المؤقت لمحرك البحث أو أرشيف الويب على إشارات أو أدلة حول وظائف أخرى ال تزال موجودة داخل‬
‫التطبيق المباشر ‪ ،‬والتي يمكن استخدامها في مهاجمته‪ .‬مصدر عام آخر للمعلومات المفيدة حول التطبيق المستهدف هو أي منشورات قام بها المطورون وغيرهم في‬
‫منتديات اإلنترنت‪ .‬هناك العديد من هذه المنتديات التي يسأل فيها مصممو البرامج والمبرمجون ويجيبون عن األسئلة التقنية‪ .‬غالبًا ما تحتوي العناصر التي يتم نشرها‬
‫على هذه المنتديات على معلومات حول تطبيق ذو فائدة مباشرة للمهاجم ‪ ،‬بما في ذلك التقنيات المستخدمة ‪ ،‬والوظيفة التي تم تنفيذها ‪ ،‬والمشكالت التي تمت‬
‫مواجهتها أثناء التطوير ‪ ،‬وأخطاء األمان المعروفة ‪ ،‬والتكوين وملفات السجل المقدمة للمساعدة في استكشاف األخطاء وإصالحها ‪ ،‬وحتى مقتطفات من التعليمات‬
‫البرمجية المصدر‪ .‬خطوات ‪ ■ HACK‬قم بتجميع قائمة تحتوي على كل اسم وعنوان بريد إلكتروني يمكنك اكتشافه‪ 0‬فيما يتعلق بالتطبيق المستهدف وتطويره‪ .‬يجب‬
‫أن يشمل ذلك أي مطورين معروفين ‪ ،‬واألسماء‪ 0‬الموجودة في كود مصدر ‪ ، HTML‬واألسماء‪ 0‬الموجودة في قسم معلومات االتصال بموقع الشركة الرئيسي على‬
‫اإلنترنت ‪ ،‬وأية أسماء تم الكشف عنها داخل التطبيق نفسه ‪ ،‬مثل الموظفين اإلداريين‪ ■ .‬باستخدام تقنيات البحث الموضحة سابقًا ‪ ،‬ابحث عن كل اسم تم تحديده ‪،‬‬
‫للعثور على أي أسئلة وأجوبة نشروها في منتديات اإلنترنت‪ .‬راجع أي معلومات تم العثور عليها للحصول على أدلة حول الوظائف أو الثغرات األمنية داخل التطبيق‬
‫المستهدف‪.‬‬
‫قد تكون االستفادة من ثغرات خادم الويب موجودة في طبقة خادم الويب التي تمكنك من اكتشاف المحتوى والوظائف غير المرتبطة داخل تطبيق الويب نفسه‪.‬‬
‫على سبيل المثال ‪ ،‬كان هناك العديد من األخطاء في برنامج خادم الويب التي تسمح للمهاجم بسرد محتويات األدلة ‪ ،‬أو الحصول على المصدر األولي للصفحات‬
‫الديناميكية القابلة للتنفيذ للخادم‪ .‬انظر الفصل ‪ 17‬للحصول على بعض األمثلة على نقاط الضعف هذه ‪ ،‬والطرق التي يمكنك من خاللها التعرف عليها‪ .‬إذا كان هذا‬
‫الخطأ موجودًا ‪ ،‬فقد تتمكن من استغالله للحصول مباشرة على قائمة‪ 0‬بجميع الصفحات والموارد األخرى داخل التطبيق‪ .‬يتم شحن العديد من خوادم الويب بمحتوى‬
‫افتراضي قد يساعدك في مهاجمتها ‪ -‬على سبيل المثال ‪ ،‬نماذج البرامج النصية والتشخيصية التي قد تحتوي على نقاط ضعف معروفة ‪ ،‬أو تحتوي على وظائف‬
‫يمكن االستفادة منها لبعض األغراض الخبيثة‪ .‬عالوة على ذلك ‪ ،‬تتضمن العديد من تطبيقات الويب مكونات الطرف الثالث الشائعة التي تستخدمها لوظائف قياسية‬
‫مختلفة ‪ -‬على سبيل المثال ‪ ،‬النصوص البرمجية لتنفيذ سلة التسوق أو واجهة لخوادم البريد اإللكتروني‪ Nikto .‬هي أداة سهلة االستخدام تصدر طلبات لمجموعة‬
‫كبيرة من محتوى خادم الويب االفتراضي ومكونات تطبيقات الطرف الثالث وأسماء الدليل الشائعة‪ .‬على الرغم من أن ‪ Nikto‬لن تختبر بدقة أي وظيفة مخفية حسب‬
‫الطلب ‪ ،‬إال أنه قد يكون مفي ًد ا في كثير من األحيان في اكتشاف الموارد األخرى غير المرتبطة داخل التطبيق والتي قد تكون ذات فائدة في صياغة هجوم‪:‬‬
‫هناك عدة خيارات مفيدة متاحة عند تشغيل ‪ ■ :Nikto‬إذا كنت تعتقد أن الخادم يستخدم موقعًا غير قياسي لمحتوى مثير لالهتمام يتحقق من ‪( Nikto‬على سبيل‬
‫المثال ‪ cgi / cgi-bin /‬بدالً من ‪ ، )cgi-bin /‬يمكنك تحديد هذا الموقع البديل باستخدام الخيار –‪ ./ root / cgi‬بالنسبة للحالة المحددة ألدلة ‪ ، CGI‬يمكن أيضًا‬
‫تحديدها باستخدام الخيار –الخبراء‪ ■ .‬إذا كان الموقع يستخدم صفحة مخصصة "لم يتم العثور على الملف" وال تعرض رمز حالة ‪ ، HTTP 404‬فيمكنك تحديد‬
‫سلسلة معينة تحدد هذه الصفحة باستخدام الخيار ‪ ■ .404-‬انتبه إلى أن ‪ Nikto‬ال يقوم بأي عملية تحقق ذكية للمشكالت‪ 0‬المحتملة ‪ ،‬وبالتالي فهو عرضة لإلبالغ عن‬
‫النتائج اإليجابية الخاطئة‪ .‬تحقق دائ ًما من أي نتائج تم إرجاعها بواسطة ‪ Nikto‬يدويًا‪ .‬صفحات التطبيق مقابل المسارات الوظيفية تم دفع تقنيات التعداد الموصوفة‬
‫حتى اآلن بشكل ضمني من خالل صورة واحدة محددة لكيفية تصور محتوى تطبيق الويب وفهرسته‪ .‬هذه الصورة موروثة من أيام ما قبل التطبيق لشبكة الويب‬
‫العالمية ‪ ،‬حيث تعمل خوادم الويب كمستودعات للمعلومات الثابتة ‪ ،‬ويتم استردادها باستخدام عناوين ‪ URL‬التي كانت أسماء ملفات بشكل فعال‪ .‬لنشر بعض محتوى‬
‫الويب ‪ ،‬قام المؤلف ببساطة بإنشاء مجموعة من ملفات ‪ HTML‬ونسخها إلى الدليل ذي الصلة على خادم الويب‪ .‬عندما يتبع المستخدمون االرتباطات التشعبية ‪،‬‬
‫تنقلوا حول مجموعة الملفات التي أنشأها المؤلف ‪ ،‬وطلبوا كل ملف عبر اسمه داخل شجرة الدليل الموجودة على الخادم‪ .‬على الرغم من أن تطور تطبيقات الويب قد‬
‫غير جذريًا تجربة التفاعل مع الويب ‪ ،‬فإن الصورة الموصوفة للتو ال تزال قابلة للتطبيق على غالبية محتوى تطبيق الويب ووظائفه‪ .‬يتم الوصول إلى الوظائف‬
‫الفردية عادةً عبر عنوان ‪ URL‬فريد ‪ ،‬والذي عادة ما يكون اسم البرنامج النصي من جانب الخادم الذي ينفذ الوظيفة‪ .‬ال تخبر معلمات الطلب (الموجودة في سلسلة‬
‫استعالم عنوان ‪ URL‬أو نص طلب ‪ ) POST‬التطبيق بالوظيفة التي يتعين عليها تنفيذها ‪ -‬فهي تخبره بالمعلومات‪ 0‬التي يجب استخدامها عند تنفيذ ذلك‪ .‬في هذا‬
‫السياق ‪ ،‬يمكن أن تكون منهجية إنشاء خريطة مستندة إلى عنوان ‪ URL‬فعالة في فهرسة وظائف التطبيق‪ .‬ومع ذلك ‪ ،‬في بعض التطبيقات ‪ ،‬تكون الصورة التي تستند‬
‫إلى "صفحات" التطبيق غير مناسبة‪ .‬في حين أنه قد يكون من الممكن منطقيًا إزالة أي هيكل للتطبيق في هذا الشكل من التمثيل ‪ ،‬إال أن هناك العديد من الحاالت التي‬
‫فيها ‪ 76‬فصل ‪ ■ 4‬تعيين التطبيق ‪ 70779c04.qxd: WileyRed 9/14/07 3:12 PM‬صفحة ‪ 76‬صورة مختلفة ‪ ،‬استنادًا إلى المسارات الوظيفية ‪ ،‬هو أكثر‬
‫فائدة لفهرسة محتوياته ووظائفه‪ .‬خذ بعين االعتبار تطبيق يتم الوصول إليه باستخدام طلبات النموذج التالي فقط‪:‬‬

‫هنا ‪ ،‬يتم إجراء كل طلب على عنوان ‪ 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‬فهم الوظائف األساسية المنفذة داخل التطبيق وآليات األمان الرئيسية المستخدمة‪ ■ .‬تحديد جميع‬
‫ميزات وظائف التطبيق وسلوكه التي غالبًا ما ترتبط بالثغرات الشائعة‪ ■ .‬صياغة خطة هجوم تحدد أولويات الوظيفة األكثر إثارة لالهتمام وأخطر نقاط الضعف‬
‫المحتملة المرتبطة بها‪ .‬ملخص الفصل رسم خرائط التطبيق هو شرط أساسي لمهاجمته‪ .‬على الرغم من أنه قد يكون من المغري التعمق مباشرةً والبدء في البحث‬
‫عن األخطاء الفعلية ‪ ،‬إال أن تخصيص بعض الوقت لفهم سليم لوظائف التطبيق وتقنياته وسطح الهجوم سيؤتي ثماره‪ .‬كما هو الحال مع جميع عمليات اختراق‬
‫تطبيقات الويب تقريبًا ‪ ،‬فإن النهج األكثر فاعلية هو استخدام التقنيات اليدوية المكملة عند االقتضاء عن طريق األتمتة المحكومة‪ .‬ال توجد أداة مؤتمتة بالكامل يمكنها‬
‫إجراء تخطيط شامل للتطبيق بطريقة آمنة‪ .‬للقيام بذلك ‪ ،‬تحتاج إلى استخدام يديك واالستفادة من تجربتك الخاصة‪ .‬تتضمن المنهجية األساسية التي حددناها ما يلي‪■ :‬‬
‫التصفح اليدوي والتدقيق الموجه للمستخدم ‪ ،‬لتعداد المحتوى والوظائف المرئية للتطبيق‬

You might also like