SQLmap: الخطوات الأساسية لتعلم SQLmap للمبتدئين

دليل SQLmap الشامل!

تعلم SQLmap للمبتدئين 2025 – دليل عملي شامل بالأمثلة

SQLmap أداة قوية متخصصة في اكتشاف واستغلال ثغرات SQL Injection داخل تطبيقات الويب. للمبتدئين قد تبدو خياراتها وأعلامها معقّدة، لكن بناء فَهْمٍ منهجي لآلية عملها يجعل استخدامها سهلًا وفعالًا. في هذا الدليل سننتقل من الأساسيات إلى أمثلة عملية: كيف تُجرى فحوصات أولية، كيف تُستخرج قواعد البيانات والجداول والأعمدة، وما هي أساليب الاستغلال المتقدمة التي يدعمها SQLmap. الهدف: تمكينك من إجراء اختبارات مسموح بها بأدوات احترافية وفهم النتائج بشكل عملي.


ما هي أداة SQLmap؟

ما هي SQLmap؟

SQLmap برنامج مفتوح المصدر يُستخدم في اختبارات الاختراق لاكتشاف ثغرات الحقن في قواعد البيانات واستغلالها آليًا. عند تشغيله على رابط مستهدف، يجرب حملات (payloads) SQL مختلفة على المعاملات والحقول ليحدد ما إذا كان التطبيق يعيد استجابات تشير إلى ثغرة. بعد الاكتشاف، يقدم SQLmap إمكانات استغلال واسعة: تعداد قواعد البيانات، استخراج الجداول والأعمدة، نسخ البيانات (--dump)، وحتى تنفيذ أوامر نظامية وفتح قوقعات تفاعلية في حالات معينة.


ما هو حقن SQL (SQL Injection)؟

ما هو حقن SQL (SQL Injection)؟

حقن SQL هو ضعف شائع ينشأ عندما يمرّر التطبيق مدخلات المستخدم مباشرة إلى استعلامات قاعدة البيانات دون تطهير أو تقييد. نتيجة لذلك، يمكن للمهاجم إدخال استعلامات ضارّة عبر نماذج مثل حقول تسجيل الدخول أو شريط البحث، مما يجعل الخادم ينفّذ أوامر غير مقصودة. آثار ذلك خطيرة: تسريب بيانات حساسة (كلمات مرور، أرقام بطاقات، بيانات طبية)، تعديل أو حذف بيانات، أو حتى السيطرة الجزئية/الكاملة على خوادم التطبيق.

السبب التقني الشائع: اعتماد التطبيق على سلاسل مُكوَّنة ديناميكيًا في الاستعلامات بدل استخدام الاستعلامات المُعلّمة (prepared statements) أو المعاملات المصفّاة (parameterized queries). وقلة التحقق أو فقدان إدارة الصلاحيات في قاعدة البيانات يزيدان من خطورة النتيجة.


لمحة سريعة عن المخاطر عند وجود ثغرة SQLi

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

الوقاية الأساسية: التحقق من المدخلات، استخدام استعلامات مُعلّمة، تقييد صلاحيات الحسابات التي تتصل بقاعدة البيانات، وتحديث مكونات التطبيق.


بدء العمل مع SQLmap على Kali Linux

التمهيد العملي يبدأ بفهم بناء الجملة والأعلام الأساسية. سنتناول الآن كيفية استخدام قائمة المساعدة وبعض أوامر الاستخدام الأساسي.

فتح قائمة المساعدة

تشغيل:

sqlmap --help

يُظهر جميع الخيارات المتاحة: أعلام لتحديد الهدف (--url أو -u)، لتعريف المعاملات المستهدفة (-p)، لاختبار بيانات POST (--data)، ولخيارات متقدمة مثل تشغيل عبر Tor (--tor) أو التصدير (-o). قراءة هذه القائمة ضرورية لفهم كيفية تركيب أوامرك حسب سيناريو الاختبار.

بدء العمل مع SQLmap على Kali Linux

النقاط العملية المهمة في قائمة المساعدة:

  • --url أو -u لتحديد رابط الهدف.
  • -p لتحديد المعامل/الباراميتر المراد اختباره.
  • --data لاختبار حقن عبر طلبات POST.
  • --wizard واجهة تفاعلية للمبتدئين.
  • --tor لتمرير الطلبات عبر شبكة Tor إذا أردت مستوى إخفاء بالاختبار (مع فهم تبعاته).

الاستخدام الأساسي (Basic Usage)

النمط العام لأمر SQLmap:

sqlmap -u <url> -p <parameter> <flags>

مثال عملي مبسّط:

sqlmap -u "https://example.com/login.php" -p username

هذا يجعل SQLmap يجرّب استجابات مختلفة على معامل username ليتحقق من وجود سلوك غير متوقّع يشير إلى ثغرة.

خيارات مفيدة ومختصرة:

  • -o: تصدير النتائج إلى ملف (output).
  • --tor: توجيه الاختبارات عبر Tor.
  • --wizard: واجهة إرشادية تيسّر الخيارات للمبتدئين.

ملاحظات أمان وتشغيل:

  • SQLmap سيجري طلبات متكررة ومعدّلة قد تُلقي شُبَهًا عند جدران الحماية أو أنظمة كشف التسلل — استخدمه ضمن نطاق إذن.
  • تحميل أو فتح ملفات ناتجة عن استهداف الخادم قد ينطوي على مخاطر؛ لا تفتح ملفات مشبوهة على جهازك الرئيسي دون فحص عزل (sandbox).
أمر SQLmap

اكتشاف الثغرات عمليًا مع SQLmap

اكتشاف ثغرات SQL Injection عبر SQLmap عادةً ما يتبع سلسلة من الخطوات المنهجية: اختبار ابتدائي، تعداد معلومات قاعدة البيانات، استكشاف الجداول والأعمدة، ثم استخراج البيانات أو تنفيذ هجمات متقدمة عند الحاجة. هنا نشرح هذه الخطوات عمليًا.

تكتيكات متقدمة — سكربتات Tamper

أحيانًا تعمل جدران الحماية لتصفية أنماط الحمولة (payloads) المعروفة؛ لتجاوزها يوفر SQLmap خيار --tamper الذي يطبّق سكربتات تُعدّل شكل الحمولات لتضليل المرشّحات. أمثلة شائعة لسكربتات Tamper:

  • space2comment — يحول الفراغات إلى تعليقات SQL لتفادي الفلاتر البسيطة.
  • charencode — يقوم بترميز الحروف لتغيير تمظهر الحمولة.
  • randomcase — يغير حالة الأحرف لتفادي قواعد التوقيع.

استخدام السكربتات قد يزيد فرص كشف الثغرة، لكن يجلب معه أيضًا تعقيدات (تأثير على السرعة، قابلية الكشف من أنظمة متقدمة). جرب سكربت واحدًا أو مجموعة مرّكبة حسب الحاجة:

sqlmap -u "<URL>" -p <param> --tamper=space2comment,charencode

التعرّف على قاعدة البيانات (Fingerprinting) خطوة بخطوة

التعداد (fingerprinting) يساعدك على تحديد نوع نظام إدارة قواعد البيانات (DBMS)، إصدارها، وأسماء قواعد البيانات المتاحة — وهذا يوجّه أدوات الاستغلال اللاحقة.

مثال عملي مبدئي (الهدف: VulnWeb)

  1. حدد رابط الهدف:
    مثال:
    http://testphp.vulnweb.com/listproducts.php?cat=1
    (يمكن التحقق من صفحة VulnWeb ثم الانتقال إلى تصفح الفئات للوصول إلى الرابط المشار إليه).
مثال عملي مبدئي (الهدف: VulnWeb)

ابدأ تعداد قواعد البيانات باستخدام العلم --dbs:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs

يأمر هذا SQLmap بمحاولة استخراج أسماء قواعد البيانات المتاحة في التطبيق. قبل التشغيل، قد تجري اختبارًا يدويًا بسيطًا (مثل استبدال 1 بقيمة غير متوقعة) لترصد استجابة غير طبيعية تشير لوجود ثغرة.

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

استكشاف محتوى قاعدة البيانات واستخراج البيانات

بعد أن يجلب SQLmap أسماء قواعد البيانات (مثلاً acuart وinformation_schema) يمكن الانتقال إلى استكشاف القوائم والجداول واستخراجها.

  1. عرض جداول قاعدة بيانات محددة:
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables

يستخرج هذا الأمر قائمة الجداول ضمن قاعدة acuart.

  1. استخراج محتوى جدول معين:
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T artists --dump

يُظهر هذا محتويات جدول artists كاملاً.

استخراج محتوى جدول معين SQLmap
  1. استخراج أعمدة محددة:
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T artists -C aname --dump

يُرجع هذا محتوى عمود aname من جدول artists (مثلاً أسماء أو ألقاب المبدعين).

sqlmap table extraction

ملاحظات عملية:

  • استخدم -C لتحديد أعمدة بعينها حين تكون المهام محددة ولا تريد تفريغ جدول كامل.
  • --dump يجلب البيانات ويطبَعها على الشاشة، ويمكنك إرفاق -o أو إعادة توجيه المخرجات لحفظها إلى ملف.

مؤشرات وأساليب لتحسين الاستخراج

  • جرّب مستويات --level و--risk لزيادة عمق وفورة الاختبارات (قيمة أعلى → اختبارات أكثر عدوانية، لكنها قد تُحدث ضوضاء).
  • عند التعامل مع تطبيقات تظهر حماية، استعن بـ--tamper كما سبق لتمويه الحمولة.
  • إن كان الموقع يتطلب تسجيل دخول، استخدم خيارات المصادقة (--cookie، --auth-cred، --data) لتمرير جلسة مصرح بها قبل الفحص.

الهجمات المتقدمة — توسيع إطار الاختبار

كشف المستخدمين — --users

لعرض المستخدمين المسجّلين ضمن قاعدة البيانات:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --users

سيحاول SQLmap استخراج سجلات المستخدمين (أسماء، أدوار، صلاحيات) إن توفرت. هذه المعلومات مهمة لفهم نطاق التأثير المحتمل للهجوم.

SQLmap استخراج

العثور على هاشات كلمات المرور — --passwords

لاستخراج هاشات كلمات المرور:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --passwords

إذا تم العثور على هاشات، قد يقترح SQLmap خطوات لكسرها (محاولات قواميس dictionary أو هجمات brute-force) — وهي إجراءات تُجرى في بيئات اختبار مرخّصة فقط.

العثور على هاشات كلمات المرور — --passwords

تنفيذ أوامر نظامية — --os-cmd

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

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --os-cmd="uname -a"

هذا الأمر يطلب من الخادم تنفيذ uname -a إن كانت ظروف الثغرة تسمح بذلك — مخرجات الأمر تُعيد معلومات عن نواة النظام.

فتح شل تفاعلي — --os-shell

أحد أقصى إمكانات SQLmap: فتح قوقعة تفاعلية (--os-shell) تمنح تحكماً مباشرًا بالجهاز في حال توافرت الشروط.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --os-shell

نجاح هذه العملية يعتمد على: نوع الثغرة، صلاحيات العملية التي تشغل قاعدة البيانات، ونظام التشغيل المستهدف. في اختبارات آمنة وعبر بيئات محلية (مثل تجربة على جهازك) يمكن للباحث رؤية قوقعة تفاعلية تعمل، بينما أهداف عامة مثل VulnWeb قد لا تسمح بذلك.


ملاحظات تجريبية على المثال العملي

  • في بعض الحالات التجريبية ستحتاج لتشغيل بيئة محلية قابلة للاستغلال لعرض نتائج مثل --os-cmd أو --os-shell، لأن مواقع التدريب العامة غالبًا ما تكون مقيدة لأسباب أمنية.
  • Fingerprinting الدقيق يُسهِم في اختيار الحمولة المناسبة واستراتيجيات التفريغ؛ مثلاً معرفة نوع DBMS (MySQL/PostgreSQL/MSSQL) يحدد الأوامر والطرق الأكثر نجاحًا.

نصائح متقدمة لاستخراج البيانات وحفظ الأدلة

  • استعمل -o أو إعادة توجيه المخرجات لحفظ نسخ من النتائج للمرجعية أو التقارير.
  • دوّن أو خذ لقطات شاشة للخطوات الحاسمة أثناء الاختبار (مثال: نتائج --dbs, --tables, --dump).
  • استخدم جلسات محفوظة (--save / --resume) للتعاون مع الفريق ومتابعة المسح دون تكرار.
  • قلّل الضوضاء أثناء الفحص بتعديل --level و--risk لتقليل احتمالية كشفك بغير داعٍ.
  • عند العمل على استعادة/تقوية أنظمة: حلّل البقع الأمنية، حدّد حسابات ذات صلاحيات مبالغ فيها، وطبّق سياسات كلمات مرور أقوى ومصادقة متعددة العوامل.

اعتبارات أخلاقية وقانونية متقدمة

  • لا تُشغّل SQLmap على أنظمة دون إذن خطي واضح. الاختبار غير المصرّح يُعدُّ اختراقًا جنائيًا في معظم البلدان.
  • احتفظ بنطاق الاختبار (scope) مكتوبًا وبتوقيع جهة الاختبار قبل البدء.
  • وثّق كل إجراء: أوامر تشغيل، أوقات، مخرجات، وأدلة للحفاظ على شفافيتك ووقايتك القانونية.
  • عند اكتشاف ثغرة تؤثر على بيانات حساسة، اتبع سياسة الكشف المنضبطة (coordinated disclosure) مع الجهة المالكة أو فريق الاستجابة للحوادث.

الخاتمة — ماذا تعلمت وما التالي؟

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

Scroll to Top