Web Security
Web Security
هي منظمة غير ربحية تركز على تحسين أمان البرمجيات( . )Software Securityتقدم المنظمة إرشادات وأدوات ومشاريع
مفتوحة المصدر تساعد المطورين والمتخصصين في األمن على اكتشاف الثغرات وتأمين التطبيقات.
أحد المشاريع OWASP TOP 10وهي قائمة تضم أكثر 10ثغرات شيوًعا في تطبيقات الويب ،مثل SQL injectionو Cross-Site
) .Scripting (XSSوبالتالى يجب مراقبتها ومعرفة كيفية التصدى لها وتفاديها.
OWASP ZAP (Open Web Application Security Project Zed Attack Proxy). It's a widely-used open-source tool for
finding vulnerabilities in web applications during development and testing phases.
xssثغره لو موجوده فى ال web applicationبتسمح اللهاكر انو يكون ليه كنترول عاالبليكيشن بشكل كامل يعنى حسب
الحاله ممكن الثغره تسمح بتحمه فى المستخدمين اللى بيدخلو االبليكيشن (ازاى انا كيوزر هنضر)
انا هاكر استغليت ثغره عالويب ابليكيشن مكنتنى من زرع كود ضار ومجرد ما يزور اليوزر الموقع دا هيتصاب بيه البراوزر
الخاص بيه وبكدا اقدر اخد منه معلومات دا انا ممكن ادخل عالموقع باعتبارى هو ومبقتش محتاج اليوزر والباسوورد وتخيل بقا
ان االكونت اللى اتصاب يكون adminالموقع وانا عرفت كدا اتحكم فيه ايه اللى هيحصل ؟
السبب فى ظهورها :اى حاجه بتاخد inputمن اليوزر بيكون معمولها input validationفلو متمش دا نتيجة خطأ معين بيسبب
الثغره دى ممكن انفذ اكواد واوامر معينه واخرج بيانات يعنى ممكن اقدر اوصل السماء المستخدمين وباسورداتهم
والمفروض عملية التحقق دى بتتم من جهة السيرفر (بيعمل sanitizeتطهير للمدخالت)
ثغرة XSS: Vulnerabilityموجوده فى الويب ابليكيشن نتيجة ان مبتعملش validateعال user inputبتسمح للهاكر انو
ي inject malicious java script codeفى صفحات الويب اللى بيزورها المستخدم وبالتالى اصابته عند تنفيذ الكو )غالبا ال
) Stored
النتيجة :ممكن الثغره تسمح بتحكمه بالكامل فى المستخدمين .سرقة معلومات حساسه ومهمه مثل ال
. cookiesتغيير فى المحتوى لو ادمن
ال Malicious Codeبيتزرع بين < > Script Tagغالبا بتكون ملفات . exe.كل لما الصفحه بتتفتح االكواد دى بتتنفذ
يعنى كهاكر دخلت كود خبيث فى مكان معين نتيجه للثغره واتقبل فأصبح موجود ضمن أكواد البيدج وبكدا اللى هيزور
ازاى اكتشف الثغرة :
Testكل user inputواشوف نتيجته فى البيدج ايه وأبشط شكل < )>Script> alert (“XSS”) </Scriptجرب على موقع )hack.me
Types of XSS Vulnerability عشان استغل الثغرة دى محتاجه أعرف أنواعها :
:Reflected XSSان ال payloadبيتنفذ مباشرة فى الويب سايت عن طريق ال URLالجاى من البراوزر دون تخزينها
على السيرفر وبتترد النتيجه للمتصفح
يتم استغالل هذه الثغرة غالًبا عبر روابط خبيثة يتم إرسالها للمستخدمين ،وعند النقر على الرابط يتم تنفيذ الكود
الضار في المتصفح.وجود http-only attributeفى ال cookieاللى فى المتصفح بتمنع ايضا من سرقتها
النها بتمنع تنفيذ اى كود اخر غير هذه اللغه
(يعنى لقيت inputزرعت فيه كود خبيث ظهر مباشرة فى ال urlاللى المفروض لما بيدخله اليوزر بيروح للويبسايت ال
vulnerableفكدا هو مدخلش الموقع بس هو نفذ الكود كمان اللى ادتهوله فاصبح البراوزر الخاص بيه مصاب وتبعيات بقا
حسب اللى هيعمله الكود دا :كود مثال لو اتنفذ هيخلينى اسرق باسووردات (
بس طبعا مش بسهوله ان اى حد يضغط على لينك يكون مصاب الن المتصفحات متطوره حاليا فيها فلتره للمحتوى :سياسة
ال .Content security Policy
:Stored XSS, Persistentال malicious codeبيتخزن فى الداتا بيز لالبليكيشن وكل مره اليوزر بيزور البيدج بتتنفذ
االكواد بشكل تلقائى.
اى موقع فيه دايما comment,Forum,user profileبيبقى افضل لتنفيذ النوع دا
اى Victimزار الموقع المصاب ال cookieبتاعته هتتبعت عالبيدج الخاصه بال attacker
:ازاى امنع الثغرة
التحقق من صحة المدخالت () input validation
تفعيل سياسات أمان المحتوى ( )Content Security Policy - CSPلتقليل قدرة المهاجم على تشغيل أكواد JavaScript
غير موثوقة.
Use a framework :تأتي معظم أطر العمل مصحوبة بتدابير وقائية ضد هجمات .XSS
Keep your framework up-to-date
تستخدم لتخزين وتبادل البيانات .تم تطويرها لتكون وسيلة معيارية لتنظيم البيانات بطريقة يمكن قراءتها وفهمها
بواسطة كل من البشر واآلالت.
نقل البيانات :يساعد في نقل البيانات بين األنظمة المختلفة ،خاصة عندما ال تكون األنظمة متوافقة مع بعضها
البعض.
تخزين البيانات :يمكن استخدام XMLلتخزين البيانات بطريقة منظمة وواضحة.
تنسيق البيانات :XMLيجعل البيانات قابلة للفهم سواء من قبل البشر أو الحواسيب ،حيث يمكن ألي جهاز أو
تطبيق فهم البيانات بسهولة بغض النظر عن لغة البرمجة أو النظام الذي يستخدمه.
هدفها تنظيم البيانات بشكل هيكلي حتى يتمكن أي نظام من فهمها .وال تهتم بكيفية عرض البيانات
يمكن تخصيص عالمات ( )tagsتناسب البيانات التي ترغبين في تبادلها.
هدفها األساسي هو عرض البيانات في المتصفح ،وليس لتبادل البيانات بين األنظمة
تحتوي على عالمات ( )tagsجاهزة ،مثل < >pللفقرة >h1< ،للعنوان ،وهكذا ،وُتستخدم لعرض النصوص
والصور بشكل مرئي للمستخدم.
للتوضيح :لنفترض أننا نريد الدخول إلى موقع لحجز فندق
عندما اإلنتهاء من الحجز ،الموقع يظهر صفحة HTMLتعرض معلومات الحجز بشكل جميل ومريح للقراءة. .1
لكن خلف الكواليس ،يتم إرسال بيانات الحجز من الموقع إلى نظام الفندق باستخدام ،XMLحيث تكون .2
البيانات منظمة بشكل يسمح للفندق بتخزينها في قاعدة البيانات الخاصة بهم.
مثال يتم إرسال هذا الملف عبر HTTPإلى النظام الخارجي (موقع الفندق) ،حيث يقوم النظام بقراءة البيانات
وفهمها ،وتنفيذ الحجز واستخدام ال HTMLللعرض على المستخدم.
باستخدام مثال حجز الفندق :ملف XMLآمن إذا كان التطبيق يعالج البيانات بشكل صحيح .ولكن هنا يأتي دور
المهاجم حيث يقوم بتعديل ملف XMLالذي يرسله إلى التطبيق ليحتوي على كيان خارجي ()External Entity
والذى يكون عبارة عن أمر يطلب من التطبيق القيام بشيء غير متوقع ،مثل فتح ملف يحتوي على معلومات حساسة من
النظام كما فى المثال :
عند معالجة التطبيق لهذا الملف ،XMLيقوم التطبيق (بدون قصد) بفتح ملف passwdوإرساله إلى المهاجم ألنه لم
يتحقق من مصدر األمر.
مثال :تخيل أنِك تعمل على مشروع كبير يحتوي على العديد من ملفا ت XML .بدًال من تكرار نفس المعلومات في كل
ملف ،يمكنك إنشاء Entityيشير إلى ملف معين يحتوي على معلومات مشتركة وتضمينه داخل ملف أخر عند الحاجه الى
المعلومات بدل التكرار (فكرة اإلستدعاء)
مثال آخر :تخيل أن لديِك تطبيًقا تجارًيا يدير المخازن .يمكن أن يحتوي ملف XMLالذي يمثل الطلبات على Entity
خارجي يشير إلى ملف يحتوي على معلومات المنتجات المشتركة في الطلبات ،مما يسهل عليك إعادة استخدامها دون
الحاجة إلى نسخ البيانات في كل طلب.
في هذا المثال ،يتم استدعاء البيانات الخاصة بالمنتجات من مصدر خارجي (مثل موقع على اإلنترنت أو ملف
محلي).لكن المشكلة تبدأ عندما يتمكن المهاجم من استغالل هذه الخاصية لطلب معلومات حساسة من
النظام أو تنفيذ أوامر غير آمنة.
هذا النوع من الهجمات ال يعطي المهاجم نتائج مباشرة في استجابة التطبيق,لكن يستخدم المهاجم كياًنا خارجًيا إلرسال
البيانات المسروقة إلى خادم بعيد.
فى هذا النوع إذا فشل التطبيق في معالجة الملف بسبب أن الكيان الخارجي " "xxeيحاول الوصول إلى ملف حساس،
فقد تظهر رسالة خطأ تحتوي على جزء من محتويات الملف ،مما يسمح للمهاجم باستغالل هذه المعلومات.
هنا بعض األمثلة على القواعد ( )rulesالتي يمكن استخدامها في SIEM solutionsمثل Splunkأو QRadarلمساعدتك
على اكتشاف استغالل ثغرة .XXE
هذه القاعدة تبحث عن الكلمات الرئيسية التي تدل على وجود كيان خارجي في الطلبات الواردة إلى السيرفر.
يمكن استخدامها للبحث في السجالت التي تحتوي على طلبات HTTPأو SOAP
ع
ندما تظهر لك تنبيه ( )Alertعلى QRadarنتيجة لقواعد مثل التي ذكرناها سابًقا تشير إلى احتمالية استغالل ثغرة
،XXEهناك خطوات منظمة يجب عليك اتباعها كـ SOC Analystإلجراء تحقيق ( )Investigationوتنفيذ Incident
) Response (IRبشكل صحيح .إليك الخطوات التي يجب اتباعها:
تأكيد التهديد :قم بمراجعة تفاصيل التنبيه لمعرفة المزيد عن طبيعة النشاط المشبوه .هل يتضمن التنبيه طلبات
XMLتحتوي على كيانات خارجية؟
مراجعة السجالت ( :)Logsافحص السجالت المرتبطة بالتنبيه مثل طلبات HTTPأو SOAPالمتضمنة بيانات ،XML
وتأّكد إذا كان هناك محاوالت للوصول إلى كيانات خارجية أو ملفات حساسة.
التحقق من المستخدم/الجهاز المتأثر :تحديد الجهاز أو عنوان الـ IPالمتأثر وراجع سجالته لمعرفة ما إذا كان
هناك أنشطة مشبوهة أخرى صادرة من نفس المصدر.
تحديد مصدر الطلب ( :)Sourceافحص مصدر الطلب (مثل عنوان IPأو المستخدم) للتحقق ما إذا كان معروًفا أو
مرتبًطا بأنشطة غير طبيعية.
تحليل النشاط :هل كان هناك أنشطة غير طبيعية قبل أو بعد التنبيه؟ على سبيل المثال ،اتصاالت خارجية غير
مصرح بها ،أو محاوالت لتحميل ملفات حساسة مثل etc/passwd/أو .etc/shadow/
تتبع سلوكيات أخرى :تأكد مما إذا كان هناك محاوالت الستخدام بروتوكوالت مثل ،//:file://, ftpالتي قد
تشير إلى محاولة الوصول إلى موارد داخلية أو خارجية.
تحليل البيانات المتأثرة :حدد ما إذا كانت أي بيانات حساسة قد تم الوصول إليها أو استخراجها من النظام.
تحديد مستوى الخطر :هل تم الوصول إلى ملفات أو بيانات حساسة؟ إذا كان األمر كذلك ،قم بتصنيف الحادث
بناًء على مستوى الخطر ومدى تأثيره.
عزل النظام المتأثر :إذا تم التأكد من أن الجهاز أو التطبيق قد تأثر ،قم بعزله من الشبكة لمنع أي ضرر إضافي.
إغالق الثغرة ( :)Mitigationقم بتحديث أو إصالح أي ثغرات موجودة في التعامل مع XMLفي التطبيقات المتأثرة
(مثل تعطيل الكيانات الخارجية في .)XML parsers
تنفيذ سياسات الحماية اإلضافية :إذا لم تكن موجودة بالفعل ،تأكد من تفعيل HSTSعلى الخوادم لحماية
االتصاالت من ،SSL Strippingواستخدم تقنيات إضافية لتقييد استغالل XXEمثل تحديث مكتبات XMLإلى نسخ آمنة.
.5التوثيق (:)Documentation
إعداد تقرير الحادث :قم بتوثيق كل خطوة قمت بها خالل التحقيق ،بما في ذلك التنبيه األصلي ،تحليل السجالت،
وتفاصيل االستجابة