ما هي أداة sqlmap؟ — شرح عملي مع مثال آمن داخل مختبر (DVWA)

Professor Technology

ملاحظة مهمة جدًا (قانونية وأخلاقية): ما أقدّمه هنا لشرح أداة sqlmap ومثال عملي مخصّص للعمل فقط داخل بيئة اختبار مرخّصة مثل DVWA / OWASP Juice Shop / مختبرات محلية.
لا تقم أبداً بتشغيل هذه الأوامر أو إجراء فحوص ضد مواقع أو خوادم لا تملك تصريحًا صريحًا لاختبارها. الاستخدام غير المصرّح به غير قانوني ويعرّضك للمسؤولية الجنائية.


مقدمة سريعة

sqlmap هي أداة مفتوحة المصدر متقدمة على سطر الأوامر مخصّصة لاكتشاف واستغلال ثغرات SQL Injection في تطبيقات الويب. تستعملها فرق الاختبار الأمني (Pentesters) وباحثو الأمن لأتمتة عمليات الكشف والتثبت واسترجاع معلومات من قواعد البيانات.

الميزات الرئيسية:

  • اكتشاف أوتوماتيكي لأنماط حقن SQL (True/Blind/Time-based/Boolean-based...).

  • دعم قواعد بيانات متعددة (MySQL, PostgreSQL, MSSQL, Oracle, SQLite...).

  • استخراج أسماء قواعد البيانات، الجداول، الأعمدة، وحتى تصدير بيانات (ضمن نطاق مرخّص).

  • خيارات ضبط متقدمة للتحكم في السلوك (مستوى الضراوة، استخدام بروكسي،اجرائية الخ).


متى تُستخدم sqlmap؟

  • كجزء من اختبار اختراق مرخّص لقواعد البيانات.

  • لاختبار فعالية تدابير الحماية (تصفية المدخلات، استعلامات مُعَدَّة، WAF).

  • في بيئات تدريبية لتعليم أنماط الحقن وطرق الوقاية.


نظرة على منهجية العمل العامة (من غير تفاصيل هجوم خارج المختبر)

  1. جمع المعلومات (Reconnaissance): اكتشاف نقاط إدخال يمكن للمستخدم تعديلها (GET/POST، رؤوس HTTP، كوكيز، حقول بحث).

  2. التحقق اليدوي البسيط: محاولة تغيير قيمة باراميتر لمعرفة استجابة التطبيق (اختبارات سلامة).

  3. تشغيل sqlmap (ضمن بيئة مرخّصة) للتحقق التلقائي وتحديد مستوى الاستغلال الممكن.

  4. تحليل النتائج وإعداد تقرير يوضح مستوى التعرض وخطوات التخفيف.


الإعداد المطلوب للمثال العملي (بيئة آمنة)

  • جهازك المحلي أو VM يحتوي على:

    • DVWA (Damn Vulnerable Web App) أو OWASP Juice Shop مثبتان داخل بيئة إفتراضية/عزل.

    • sqlmap مثبت على جهاز الاختبار (Linux / Kali / WSL).

    • لديك صلاحيات الوصول للـ VM/الخادم حيث تعمل DVWA.

مثالنا سيستخدم DVWA على http://127.0.0.1/dvwa/ كمثال مختبري.


مثال عملي (مفهومي وموجّه لبيئة DVWA)

1) تشغيل مسح أولي (Nmap أو فحص صفحات)

يُفضّل أن تحدد أولًا صفحة أو رابط يحتمل أن يحتوي باراميتر GET/POST قابل للحقن، مثل:

http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit

(في DVWA هناك صفحة تعليمية sqli مخصّصة لتجارب SQLi).

2) استخدام sqlmap لاختبار الباراميتر (أمر نموذجي داخل المختبر)

في الطرفية على جهازك المثبّت عليه sqlmap:

sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=XXXX; security=low" --batch --level=2 --risk=1 --dbs

شرح مُبسَّط للخيارات:

  • -u : URL الهدف مع الباراميتر القابل للاختبار.

  • --cookie : تمرير الكوكيز إذا كانت الجلسة مطلوبة (كما في DVWA بعد تسجيل الدخول).

  • --batch : تشغيل تلقائي دون طلب تأكيد (مناسب للمختبر).

  • --level و --risk : تحكمان شدة الاختبارات والأساليب المستخدمة.

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

ملاحظة: في بيئة إنتاج أو عند وجود WAF قد تحتاج لتعديل الخيارات أو استخدام بروكسي (Burp) لمراقبة الطلبات.

3) إذا أكدت sqlmap وجود ثغرة — رؤى (مخرجات)

  • ستعرض الأداة ما إذا كانت الثغرة مؤكدة أو محتملة.

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

  • من المهم توثيق النتائج: لقطة شاشة، نص المخرجات، وصف كيفية إعادة إنتاج المشكلة، درجة الخطورة، والتوصيات.


ماذا تفعل بالنتائج؟ (إجراءات مرنة وآمنة)

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

  • خطوات التخفيف المقترحة (مباشرة للمطورين/المدراء):

    • استخدام استعلامات مُعَدَّة (Prepared Statements / Parameterized Queries).

    • التحقّق من المدخلات وقوائم بيضاء (Input Validation).

    • تقييد صلاحيات حساب قاعدة البيانات (least privilege).

    • نشر WAF وتطبيق سياسات CSP إن لزم.

    • إجراء تحديثات دورية واختبارات آلية.


أمثلة لأوامر إضافية مفيدة في سياق مختبري

هذه الأمثلة مخصّصة للاستخدام في بيئة مرخّصة فقط:

  • تحديد نوع الحقن بسرعة (اختبار تناوبي):

sqlmap -u "http://127.0.0.1/...id=1" --cookie="..." --technique=BEUST --batch
  • استخراج جداول قاعدة بيانات محددة:

sqlmap -u "http://127.0.0.1/...id=1" --cookie="..." -D dvwa --tables
  • استخراج أعمدة من جدول محدد:

sqlmap -u "http://127.0.0.1/...id=1" --cookie="..." -D dvwa -T users --columns
  • استخراج محتوى عمود (مثل أسماء المستخدمين):

sqlmap -u "http://127.0.0.1/...id=1" --cookie="..." -D dvwa -T users -C user,password --dump

تذكير قانوني: لا تنفذ هذه الأوامر على أنظمة خارجية دون تصريح.


كيف تقيّم أثر الثغرة (Risk Assessment)؟

عند التقرير، صنّف الثغرة بحسب:

  • إمكانية الاستغلال عن بُعد (Remote exploitability).

  • البيانات الممكن الوصول إليها (حساسة/غير حساسة).

  • أثر العمل (التلاعب، سرقة بيانات، انتحال هوية).
    ضع توصيات سريعة (hotfix) وخطة طويلة الأمد (تحسين الكود، سياسات الصلاحيات، فحوص دورية).


خاتمة ونصائح عملية

  • sqlmap أداة قوية ومفيدة لفرق الأمن، لكنها سلاح ذو حدين — يجب استخدامها بمسؤولية.

  • أفضل بيئة للتعلّم: DVWA، OWASP Juice Shop، منصات CTF ومختبرات محلية.

  • كثّف العمل على الوقاية (prepared statements, input validation, least privilege).

  • دوّن تقريرًا مفصلاً وشارك النتائج مع فريق التطوير لإصلاح الخلل قبل أي نشر عام.

<

إرسال تعليق