مقال : شرح عام لثغرات Sql injection
في شروحات سابقه تناولنا إستغلال ثغرات Sql injection ولكن لم نتطرق إلا إكتشافها , إن شاء الله في هذا المقال سوف نشرح كيفية إكتشاف هذه الثغرات بطريقتين الأولى Black Box و الثانية White Box أي اننا سوف نتطرق لإكشتافها بإستخدام أدوات وبعض الامور التي يستخدمها الهاكر الحقيقي وأيضاً سوف نحاول إختراقها وإكتشاف الثغره من خلال الإطلاع على سورس كود السكربت.
في البداية لنأتي لتعريف ثغرات Sql injection :- وهي ثغرات تحدث في حال إدخال متغير ما على إستعلام (query) للغة قواعد البيانات mysql ومن ثم توجيه إستعلامات مخصصه لإستغلال مثل هذه الثغرات لنحصل على الهدف النهائي وهو إستخراج المعلومات من قاعدة البيانات بشكل كامل و غير شرعي , ويوجد للثغرة عدة لنذكر إثنين منها : –
- error based sql injection
- blind sql injection
في النوع الأول يكون إستغلال الثغرة ميسر ومن دون اي مشاكل وبسرعه تامه.
اما في النوع الثاني تكون المشاكل في تخمين إسم ونوع الجداول والصفوف مما يؤدي إلا تأخر العمليه (ولكنها تتم بالنهاية).
ومن الجدير بالذكر أيضاً أن هذه الثغرات تستهدف الكثير من اللغات البرمجية مثل php , java , asp , aspx.
حسناً .. لنبدء في طريقة White Box والتي سوف نقوم بشرح أكودا الثغرة المكتوبه بلغة Php بالإعتماد على لغة Mysql
نلاحظ في الصورة السابقه ولنشرح المكونات : –
- السكربت يعمل إدراج لملف config.php والذي يتصل بدورة بقواعد البيانات.
- السطر رقم 5 نلاحظ تعريف المتغير name بالقيمه المدخله من نوع POST والتي تتمثل بالحقل name.
- بالسطر رقم 7 نلاحظ عمل إستعلام (mysql query ) والذي يحاول إختيار جميع الحقول الموجوده في الجدول name ومطابقتها مع المتغير.
- بالسطر رقم 14 نشاهد عنوان ومعلومات النموذج (form) وهي قيمه POST كوسيلة لإرسال البيانات ومعالجتها بملف index.php.
لنأتي الأن لشرح تفاصيل الثغرة ومعرفة كيفية حدوثها , نشاهد أن المتغير لم يفلتر ولم يحدد ما هو من قبل المبرمج لذلك يسمع بإدخال جميع الأوامر والتعابير إلى الإستعلام مما يمكن حقن كود يؤدي لحدوث خطأ ينتج عنه ثغرة sql injection يؤدي إلى إستخراج جميع المعلومات الموجوده في خادم قواعد البيانات. هكذا نكون فسرنا الكود وإكتشفنا الثغرة الموجوده بالسكربت بكل سهوله من خلال قرأة المدخلات والتحقق من عدم فلترتها.
الأن لنأتي إلى إستكشاف الصفحه ومن ثم محاولة إستغلال الثغرة, لنلقي الأن نظرة على الفورم من خلال هذه الصورة :-
نلاحظ وجود فورم بسيط , لنحاول إدخال أي قيمه لنلاحظ ان الفورم لم يحرك ساكن ! ممتاز لنحاول الأن إدخال علامه (‘) single quote ومن ثم ملاحظه ما سوف يحدث من خلال هذه الصورة :-
ممتاز ! رأينا الأن أن هنالك خطأ حدث في قواعد البيانات وهذا ما أظهره الخطأ وبهذا نكون قد تأكدنا من وجود ثغرة Sql injection موجوده في السكربت.
لنأتي الأن لإستغلال الثغرة وإستخراج المعلومات من خلال برنامج Sqlmap ولنطبق ما في الصورة وسوف أشرحه بالتفصيل :-
لقد قمنا بتشغل البرنامج من خلال الأمر ./ sqlmap.py ومن ثم حددنا الهدف من خلال الأمر -u ومن ثم حددنا الخيار forms لإستكشاف جميع الحقول الموجوده في الصفحه وأخيراً الامر dbs لإستخراج قواعد البيانات في حال حدوث خطأ.
ملاحظه (سوف يكون هنالك بعض الخيارات التي تظهر بعد تنفيذ العملية والتي لا داعي لشرحها).
ممتاز الأن لنرى نتيجه تطبيق الأمر
رائع ! لقد لاحظنا أنه تم إستغلال الثغرة بنجاح وإستخراج جميع القواعد الموجوده في خادم قواعد البيانات, ويمكنك إستغلال الثغرة بشكل متقدم من خلال هذا الشرح السابق.
أتمنى أن يكون هذا الشرح مفيد للبعض رغم بساطته وإن شاء الله سوف يكون هنالك شروحات مستمره لجميع ثغرات تطبيقات الويب ايضا يمكنكم الاطلاع على الدورة الخاصة بأختبار تطبيقات الويب المقدمه من مركز تدريبات iSecur1ty
الله يعطيك العافيه
بارك الله فيك عزيزي و الله اشتقنا للموقع و لمواضيع الأخ عبد المهيمن ، أقول للناس التي تحب التجربة على سيرفر محلي تقول بإلغاء الماجيك كوتش لأنها تضيف سلاش أوتوماتيكي حتى تشتغل الثغرة
عدة اسئلة اتمنى احد يجاوب عليها
1-ما هي اللغة التي تنصحوني بها على البداية انا عمري 17 وهل عمري يساعد على ان اصبح هكر اخلاقي ؟
2_ما هي الغة او اللغات المستخدمة للكشف عن الثغرات ؟
3-اذا عرفت بعض لغات البرمجة هل من الممكن ان اعرف الاخطاء البرمجية واستغلالها ؟
حسب معرفتي
1- اللغات اللي مفروض انك تتعلمها كمطوّر ويب ومختبر اختراق هي: PHP
وعشان تكتب الثغرات او تحب تبرمج ادوات تساعد في الاختراق.. فاللغات كثيره منها: PHP-Ruby-Python-Perl
2- اذا كنت تريد تكتشف ثغره في سكربت مثلا منتديات VB .. فـ يجب ان تكون عارف لغة PHP وكيفية اصطياد الثغرات بأنواعها..
باختصار أي شيء تريد ان تكتشف ثغره فيه.. لازم تعرف بأي لغه تبرمج؟ وتكون فاهم اللغه المستخدمه فيه
3- أكيييييييييد نعم 🙂
طيب اللي مثلي مثلا ما يعرف يعني ايه سيكيوريتي وكل هالكلام ولكن اتا اتعلم ثغرة sql ومازلت اتعلم ولكن اواجه صعوووبة في فهم المصطلحات ولكن لو انا تعلمت لغة php راح تساعدني كثير في فهم المصطلحات ام لا
نعم , تعلم لغة php والتصميم على html وتعلم اساس ثغرة sql وانواعها اللي هي injection وتعلم اخطر 10 ثغرات OWSP TOP 10 ,,,كل ذي راح تفيدك انشاءالله ودعواتك لي بالتوفيق,,
بارك الله فيك .. موضوع مميز صراحة ..
اتمنى مزيد من الدروس حول الامن في PHP ..
ماشاء الله عليك ,
واصل أخي , وأشكرك جزيل الشككر ,
بارك الله فيك منور خوي الكريم علي المقال
شكرا لك شرح اكثر من رائع,,,,تسلم ايديك 🙂
بارك الله فيك وفي علمك.
السلام عليكم ورحمة الله وبركاته انا اخوكم وخادمكم احمد انا جديد على شرحاختراق المواقع وارجو من مدير الصفحه ان يظهر مقاطع تعليم وارجو منه ان يشرح من البدايه الى حد اختراق الموقع يعني(اخر خطوه ) ارجوك وانا اكون ممنون
Nicè sHarè Thank’s big rèspect
Merci <3
شكر لكم
هكذا هو الطرح الصحيح والمفيد للمادة العلمية ….شكرا لكم
أفظل أداه للحقن ولكني من الطراز التسعينات أفظل الحقن اليدوي مشكور حبيب القللب
كيف اتعلم لغة php
شكرا جزيلا اخي وجزاك الله خير
السلام عليكم.. مشكور عالشرح بس ما فهمت شي
انا بعرف شو هي الثغرة فهمانه فكرتها وانو كيف ممكن من خلال حقل الادخال او الرابط انو نغير او نحذف او نسرق معلومات من قاعده البيانات بس كيف الفحص انت مستخدم لينكس والكومند صح.. يعني هو لازم نحن نفحص بهالطريقة.. هل من الممكن فحص كود موقع من هوست محلي يعني كود نحن كاتبيه وكيف بدنا نحل المشكلة انا مو فهمانه بالظبط وين الثغره اللي ملايين المبرمجين ما كانو منتبهين الها.. انو من بعد شي كود نسكر الكود السابق ونكتب الكود اللي بدنا ياه وما تبقى يبقا وكأنه تعليق.. اذا ممكن حدا يساعدني
السلام عليكم ورحمة الله
اريد المساعدة ….ف كود بحث علي SQL injection فى الصفحة
استطعت اعمله فى الروابط وعاوزة اعمل البحث في ال get & post
ارجووووكم المساعدة
وين اجد الرد علي كلامي