شرح طريقة أكتشاف ثغرة SQL Injection مثال عملي لاكتشاف ثغرة SQL Injection لنفرض أن هناك موقع تسوق يعرض منتجات مختلفة وافرض أنك قمت بالضغط على معرض الهدايا وتم عرض هذا الرابط كود: https://website.com/products?category=Gifts في هذه الحاله يقوم التطبيق (الموقع الإلكتروني ) بعملية استعلام من قاعدة البيانان لاسترجاع النتائج التي قمت باختيارها . كود: SELECT * FROM products WHERE category = 'Gifts' AND released = 1 ال SQL guery يطلب من قاعدة البيانات: • all details (*) • from the products table • where the category is Gifts • and released is 1. تم إصدار القيد = 1 ويتم استخدامه لإخفاء المنتجات التي لم يتم إصدارها من قاعدةالبيانات. بالنسبة للمنتجات التي لم يتم طرحها ، يُفترض أنه تم إصدارها = 0. وفي هذا المثال التطبيق لا يحتوي على دفاعات ضد هجمات SQL Injection, ويمكن للمهاجم إنشاء هجوم كالآتي: كود: https://website.com/products?category=Gifts'-- تكون نتيحة الاستعلام: كود: SELECT * FROM products WHERE category = 'Gifts'--' AND released = 1 المهاجم استخدم الشرطة المزدوجة - - وهو مؤشر تعليق في SQL، ويعني أن باقي الاستعلام يتم تفسيره على أنه تعليق. و يؤدي هذا إلى إزالة ما تبقى من الاستعلام بشكل فعال. وهذا يعني أنه سوف يتم عرض جميع المنتجات ، بما في ذلك المنتجات التي لم يتم طرحها. وفي هذه الحاله يمكن للمهاجم أن يتسبب في عرض جميع المنتجات في أي فئة ، بما في ذلك الفئات التي لا يعرفون عنها: كود: https://website.com/products?category=Gifts'+OR+1=1-- النتيجة في كود sql للاستعلام تكون كود: SELECT * FROM products WHERE category = 'Gifts' OR 1=1--' AND released = 1 سيعيد الاستعلام المعدل في الرابط الخاص بالموقع جميع العناصر حيث تكون الفئة هدايا ، أو 1 تساوي 1. نظرًا لأن 1 = 1 تكون دائمًا صحيحة ، فسيعيد الاستعلام جميع العناصر. هكذا يتم استغلال المواقع المصابة بثغرة SQL Injection هذا المثال فقط للتوضيح ويمكن استخدامه لعرض ملفات حساسة او خاصة بالمستخدمين، ولا ننسى أن هناك أنواع كثيرة من هذه الثغرات وبعض الأحيان يكون المبرمج قد أصلح هذا الخطأ ببعض الأكواد وأحيانا يستطيع المهاجم تمرير هجومة بطريقة جديدة. Automation Tools for SQL Injection في المثال أعلاه ، استخدمنا تقنيات الهجوم اليدوي بناءً على معرفتنا الواسعة بـ SQL. هناك أدوات آلية يمكنها مساعدتك في تنفيذ الهجمات بكفاءة أكبر وفي أقصر وقت ممكن. وتشمل هذه الأدوات SQLMap http://sqlmap.org SQL Injection https://tools.kali.org/vulnerability-analysis/jsql لا يمكنك معرفة المواقع المصابة وعرض البيانات الا عن طريق المحاولة عدة مرات وبطرق مختلفة يدويا أو عن طريق الأدوات المساعدة. يمكنك استخدام ال quote او الشرطة المزدوجة -- أو Union selcet على نهاية الرابط المراد فصحة ومتابعة سلوك التطبيق غير المتوقع أو اي نتائج تظهر على الموقع. وبالطبع يوجد الكثير والكثير من الشرح والفيديوهات لهذا الثغرة هنا فقط فى منتديات أكتب كود