ما هي عمليات استغلال الويب الشائعة التي يجب أن أعرف عنها؟[مغلق]

StackOverflow https://stackoverflow.com/questions/23102

  •  09-06-2019
  •  | 
  •  

سؤال

مازلت أحافظ على البيئة عندما يتعلق الأمر ببرمجة الويب، فقد أمضيت معظم وقتي في تطبيقات العملاء.لذلك أشعر بالفضول بشأن الثغرات الشائعة التي يجب أن أخافها/اختبرها في موقعي.

هل كانت مفيدة؟

المحلول

OWASP يحتفظ بقائمة من أعلى 10 هجمات الويب التي يجب مراقبتها، بالإضافة إلى الكثير من المعلومات الأمنية المفيدة الأخرى لتطوير الويب.

نصائح أخرى

أنا نشر قائمة OWASP Top 2007 المختصرة هنا حتى لا يضطر الأشخاص إلى البحث عن رابط آخر وفي حالة انقطاع المصدر.

البرمجة النصية عبر المواقع (XSS)

  • تحدث عيوب XSS عندما يأخذ التطبيق البيانات المقدمة من المستخدم ويرسلها إلى متصفح الويب دون التحقق من صحة هذا المحتوى أو تشفيره أولاً.يسمح XSS للمهاجمين بتنفيذ البرنامج النصي في متصفح الضحية والذي يمكنه اختطاف جلسات المستخدم وتشويه مواقع الويب وربما إدخال الفيروسات المتنقلة وما إلى ذلك.

عيوب الحقن

  • تعد عيوب الحقن، وخاصة حقن SQL، شائعة في تطبيقات الويب.يحدث الحقن عندما يتم إرسال البيانات التي يقدمها المستخدم إلى مترجم كجزء من أمر أو استعلام.تخدع البيانات المعادية للمهاجم المترجم لتنفيذ أوامر غير مقصودة أو تغيير البيانات.

تنفيذ الملفات الضارة

  • تسمح التعليمات البرمجية المعرضة لتضمين الملفات عن بعد (RFI) للمهاجمين بتضمين تعليمات برمجية وبيانات معادية، مما يؤدي إلى هجمات مدمرة، مثل اختراق الخادم بالكامل.تؤثر هجمات تنفيذ الملفات الضارة على PHP وXML وأي إطار عمل يقبل أسماء الملفات أو الملفات من المستخدمين.

مرجع كائن مباشر غير آمن

  • يحدث مرجع الكائن المباشر عندما يكشف المطور عن مرجع إلى كائن تنفيذ داخلي، مثل ملف أو دليل أو سجل قاعدة بيانات أو مفتاح، كعنوان URL أو معلمة نموذج.يمكن للمهاجمين التلاعب بهذه المراجع للوصول إلى كائنات أخرى دون إذن.

تزوير طلب عبر المواقع (CSRF)

  • يجبر هجوم CSRF متصفح الضحية الذي قام بتسجيل الدخول على إرسال طلب تمت المصادقة عليه مسبقًا إلى تطبيق ويب ضعيف، مما يجبر متصفح الضحية على تنفيذ إجراء عدائي لصالح المهاجم.يمكن أن يكون CSRF بنفس قوة تطبيق الويب الذي يهاجمه.

تسرب المعلومات والتعامل مع الأخطاء بشكل غير لائق

  • يمكن للتطبيقات أن تتسرب عن غير قصد معلومات حول تكوينها أو عملها الداخلي أو تنتهك الخصوصية من خلال مجموعة متنوعة من مشكلات التطبيق.يستخدم المهاجمون نقطة الضعف هذه لسرقة البيانات الحساسة أو تنفيذ هجمات أكثر خطورة.

المصادقة المعطلة وإدارة الجلسة

  • غالبًا ما لا تكون بيانات اعتماد الحساب والرموز المميزة للجلسة محمية بشكل صحيح.يقوم المهاجمون باختراق كلمات المرور أو المفاتيح أو رموز المصادقة المميزة لانتحال هويات المستخدمين الآخرين.

تخزين التشفير غير الآمن

  • نادرًا ما تستخدم تطبيقات الويب وظائف التشفير بشكل صحيح لحماية البيانات وبيانات الاعتماد.يستخدم المهاجمون بيانات ضعيفة الحماية لسرقة الهوية وجرائم أخرى، مثل الاحتيال على بطاقات الائتمان.

الاتصالات غير الآمنة

  • كثيرًا ما تفشل التطبيقات في تشفير حركة مرور الشبكة عندما يكون ذلك ضروريًا لحماية الاتصالات الحساسة.

الفشل في تقييد الوصول إلى URL

  • في كثير من الأحيان، يحمي التطبيق فقط الوظائف الحساسة عن طريق منع عرض الروابط أو عناوين URL للمستخدمين غير المصرح لهم.يمكن للمهاجمين استخدام نقطة الضعف هذه للوصول إلى عمليات غير مصرح بها وتنفيذها عن طريق الوصول إلى عناوين URL تلك مباشرةً.

مشروع أمان تطبيقات الويب المفتوحة

-آدم

وهذه الثلاثة هي الأكثر أهمية:

سيقول الجميع "حقن SQL"، لأنها الثغرة الأكثر رعبًا وأسهل ما يمكنك فهمه.ستأتي البرمجة النصية عبر المواقع (XSS) في المرتبة الثانية، لأنها سهلة الفهم أيضًا."سوء التحقق من صحة الإدخال" لا يمثل ثغرة أمنية، ولكنه بالأحرى تقييم لأفضل الممارسات الأمنية.

دعونا نجرب هذا من منظور مختلف.فيما يلي بعض الميزات التي من المحتمل أن تزعجك عند تنفيذها في تطبيق ويب:

  • SQL الديناميكي (على سبيل المثال، منشئو استعلام واجهة المستخدم).الآن، ربما تعلم أن الطريقة الوحيدة الآمنة والموثوقة لاستخدام SQL في تطبيق ويب هي استخدام الاستعلامات ذات المعلمات، حيث تقوم بشكل صريح بربط كل معلمة في الاستعلام بمتغير.الأماكن التي أرى فيها تطبيقات الويب تنتهك هذه القاعدة بشكل متكرر هي عندما لا يكون الإدخال الضار معلمة واضحة (مثل الاسم)، بل هو سمة استعلام.من الأمثلة الواضحة على ذلك أدوات إنشاء استعلام "Smart Playlist" الشبيهة بـ iTunes والتي تراها على مواقع البحث، حيث يتم تمرير أشياء مثل عوامل تشغيل جملة المكان مباشرة إلى الواجهة الخلفية.من الأمور الرائعة الأخرى التي يجب عليك قلبها هي فرز أعمدة الجدول، حيث سترى أشياء مثل DESC مكشوفة في معلمات HTTP.

  • تحميل الملف.يؤدي تحميل الملفات إلى إرباك الأشخاص لأن أسماء مسارات الملفات تبدو بشكل مريب مثل أسماء مسارات عناوين URL، ولأن خوادم الويب تسهل تنفيذ جزء "التنزيل" فقط من خلال توجيه عناوين URL إلى الأدلة الموجودة في نظام الملفات.7 من أصل 10 معالجات تحميل قمنا باختبارها تسمح للمهاجمين بالوصول إلى الملفات العشوائية الموجودة على الخادم، لأن مطوري التطبيق افترضوا أنه تم تطبيق نفس الأذونات على استدعاء نظام الملفات "open()" كما هو مطبق على الاستعلامات.

  • تخزين كلمة المرور.إذا كان بإمكان تطبيقك أن يرسل لي كلمة المرور الأولية عندما أفقدها، فستفشل.هناك إجابة واحدة آمنة وموثوقة لتخزين كلمات المرور، وهي bcrypt؛إذا كنت تستخدم PHP، فمن المحتمل أنك تريد PHPpass.

  • توليد أرقام عشوائية.هجوم كلاسيكي على تطبيقات الويب:إعادة تعيين كلمة مرور مستخدم آخر، ونظرًا لأن التطبيق يستخدم وظيفة "rand()" الخاصة بالنظام، وهي ليست قوية للتشفير، فإن كلمة المرور يمكن التنبؤ بها.ينطبق هذا أيضًا في أي مكان تقوم فيه بالتشفير.وهو، بالمناسبة، لا ينبغي عليك القيام به:إذا كنت تعتمد على العملات المشفرة في أي مكان، فمن المحتمل جدًا أن تكون معرضًا للخطر.

  • الإخراج الديناميكي.يضع الناس الكثير من الثقة في التحقق من صحة المدخلات.إن فرصك في تنقية مدخلات المستخدم من جميع الأحرف الأولية المحتملة، خاصة في العالم الحقيقي، حيث تعد الأحرف الأولية أجزاء ضرورية من إدخال المستخدم، منخفضة.الطريقة الأفضل بكثير هي أن يكون لديك نظام متسق لتصفية مخرجات قاعدة البيانات وتحويلها إلى كيانات HTML، مثل quot وgt وlt.ستقوم ريلز بذلك نيابةً عنك تلقائيًا.

  • بريد إلكتروني.تطبق الكثير من التطبيقات نوعًا من إمكانات البريد الصادر التي تمكن المهاجم من إنشاء حساب مجهول، أو عدم استخدام أي حساب على الإطلاق، لإرسال بريد إلكتروني يتحكم فيه المهاجم إلى عناوين بريد إلكتروني عشوائية.

بالإضافة إلى هذه الميزات، فإن الخطأ رقم 1 الذي من المحتمل أن ترتكبه في تطبيقك هو الكشف عن معرف صف قاعدة البيانات في مكان ما، بحيث يتمكن المستخدم X من رؤية بيانات المستخدم Y ببساطة عن طريق تغيير الرقم من "5" إلى "6".

bool UserCredentialsOK(User user)
{

    if (user.Name == "modesty")
        return false;
    else
        // perform other checks
}   

هجمات حقن SQL.من السهل تجنبها ولكنها شائعة جدًا.

أبدًا أبدًا (هل ذكرت "أبدًا"؟) ثق بمعلومات المستخدم التي تم تمريرها إليك من عناصر النموذج.إذا لم يتم فحص بياناتك قبل تمريرها إلى الطبقات المنطقية الأخرى لتطبيقك، فمن الأفضل أن تعطي مفاتيح موقعك لشخص غريب في الشارع.

أنت لا تذكر النظام الأساسي الذي تستخدمه، ولكن إذا كنت تستخدم ASP.NET، فابدأ مع سكوت جوثري الجيد ومقاله "نصيحة / خدعة:الحماية من هجمات حقن SQL".

بعد ذلك، يتعين عليك التفكير في نوع البيانات التي ستسمح للمستخدمين بإرسالها إلى قاعدة بياناتك وخارجها في النهاية.إذا سمحت بإدراج HTML ثم تقديمه لاحقًا، فأنت مفتوح على مصراعيه لهجمات البرمجة عبر المواقع (المعروفة باسم XSS).

هذان هما ما يتبادر إلى ذهني، لكن جيف أتوود الخاص بنا كان لديه مقال جيد فيه رعب الترميز مع مراجعة الكتاب"19 خطايا مميتة لأمن البرمجيات".

لقد ذكر معظم الأشخاص هنا SQL حقن وXSS، وهو نوع من صحيح، ولكن لا تنخدع - أهم الأشياء التي يجب أن تقلق بشأنها كمطور ويب هي INPUT VALIDATION، وهو المكان الذي ينبع منه XSS وSQL حقن.

على سبيل المثال، إذا كان لديك حقل نموذج لا يقبل سوى الأعداد الصحيحة، فتأكد من أنك تنفذ شيئًا ما على جانب العميل والخادم لتطهير البيانات.

تحقق وتأكد مرة أخرى من أي بيانات إدخال خاصة إذا كانت ستنتهي في استعلام SQL.أقترح إنشاء وظيفة escaper ولفها حول أي شيء يدخل في الاستعلام.على سبيل المثال:

$query = "SELECT field1, field2 FROM table1 WHERE field1 = '" . myescapefunc($userinput) . "'";

وبالمثل، إذا كنت ستعرض أي معلومات يدخلها المستخدم على صفحة ويب، فتأكد من إزالة أي علامات <script> أو أي شيء آخر قد يؤدي إلى تنفيذ Javascript (مثل onLoad= onMouseOver= إلخ.السمات على العلامات).

يعد هذا أيضًا عرضًا تقديميًا قصيرًا حول الأمان بواسطة أحد مطوري WordPress الأساسيين.

الأمان في ووردبريس

ويغطي جميع مشاكل الأمان الأساسية في تطبيقات الويب.

الأكثر شيوعًا هي على الأرجح هجمات حقن قاعدة البيانات وهجمات البرمجة النصية عبر المواقع؛ويرجع ذلك أساسًا إلى أن هذه هي الأسهل في الإنجاز (وهذا على الأرجح لأن هذه هي الأشياء التي يكون المبرمجون أكثر كسلاً بشأنها).

يمكنك أن ترى حتى على هذا الموقع أن الأشياء الأكثر ضررًا التي ستعتني بها تتضمن إدخال التعليمات البرمجية في تطبيقك، لذا فإن XSS (البرمجة النصية للمواقع المتقاطعة) وحقن SQL (اقتراحات @Patrick) هي أكبر مخاوفك.في الأساس، ستحتاج إلى التأكد من أنه إذا كان تطبيقك يسمح للمستخدم بإدخال أي كود على الإطلاق، فسيتم تنظيمه واختباره للتأكد من أن الأشياء التي أنت متأكد من أنك تريد السماح بها فقط (رابط html، صورة، وما إلى ذلك) ) يتم تمريرها، ولا يتم تنفيذ أي شيء آخر.

حقن SQL.عبر موقع البرمجة.

سيؤدي استخدام الإجراءات المخزنة و/أو الاستعلامات ذات المعلمات إلى قطع شوط طويل في حمايتك من حقن SQL.أيضا القيام لا اطلب من تطبيق الويب الخاص بك الوصول إلى قاعدة البيانات مثل sa أو dbo - قم بإعداد حساب مستخدم قياسي وقم بتعيين الأذونات.

كما هو الحال بالنسبة لـ XSS (البرمجة النصية عبر المواقع)، يحتوي ASP.NET على بعض وسائل الحماية المضمنة.أفضل شيء هو تصفية المدخلات باستخدام عناصر التحكم في التحقق من الصحة والتعبير العادي.

أنا لست خبيرًا، ولكن مما تعلمته حتى الآن فإن القاعدة الذهبية هي عدم الثقة في أي بيانات مستخدم (GET، POST، COOKIE).أنواع الهجمات الشائعة وكيفية إنقاذ نفسك:

  1. هجوم حقن SQL:استخدم الاستعلامات المعدة
  2. عبر موقع البرمجة:لا ترسل أي بيانات مستخدم إلى المتصفح دون التصفية/الهروب أولاً.ويتضمن ذلك أيضًا بيانات المستخدم المخزنة في قاعدة البيانات، والتي جاءت في الأصل من المستخدمين.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top