- بواسطة x32x01 ||
ثغرة SQL Injection من أخطر الثغرات الموجودة في تطبيقات الويب، وبتسمح للمهاجم إنه يتلاعب باستعلامات قاعدة البيانات ويطلع بيانات مش من حقه 👀
في البوست ده هشرحلك الفكرة بشكل عملي وبسيط من غير تعقيد، علشان تفهم إزاي الثغرة بتحصل وإزاي يتم استغلالها.
لما تضغط على قسم الهدايا، بيظهرلك الرابط ده:
في الحالة دي الموقع بيبعت استعلام SQL لقاعدة البيانات علشان يجيب المنتجات المطلوبة.
وده معناه 👇
وده يسمح للمهاجم إنه يغير شكل الاستعلام بسهولة.
مثال على رابط خبيث:
الشرطة المزدوجة
يعني أي حاجة بعدها مش هتتنفذ ❌
النتيجة؟
✔️ شرط
✔️ الموقع يعرض كل المنتجات حتى اللي مش منشورة
الاستعلام هيبقى:
بما إن 1=1 دايمًا صح ✅
فكده قاعدة البيانات هترجع كل المنتجات بدون أي فلترة 😱
لازم تجربة ومحاولة، سواء يدوي أو باستخدام الأدوات.
من أشهر الحاجات اللي بتتجرب:
في البوست ده هشرحلك الفكرة بشكل عملي وبسيط من غير تعقيد، علشان تفهم إزاي الثغرة بتحصل وإزاي يتم استغلالها.
مثال عملي لاكتشاف ثغرة SQL Injection 🧪
خلينا نفترض إن في موقع تسوق إلكتروني بيعرض منتجات مختلفة 🛒لما تضغط على قسم الهدايا، بيظهرلك الرابط ده:
Code:
https://website.com/products?category=Gifts استعلام SQL اللي بيشتغل في الخلفية ⚙️
الاستعلام غالبًا بيكون بالشكل ده: Code:
SELECT * FROM products
WHERE category = 'Gifts' AND released = 1 - جلب كل البيانات (*)
- من جدول المنتجات
- اللي فئتها هدايا
- واللي حالتها منشورة (released = 1)
released = 1 بتستخدم علشان تخفي المنتجات اللي لسه ما نزلتش (قيمتها 0).فين المشكلة الأمنية؟ 🚨
المشكلة هنا إن التطبيق مش عامل أي حماية ضد هجمات SQL Injection 😐وده يسمح للمهاجم إنه يغير شكل الاستعلام بسهولة.
مثال على رابط خبيث:
Code:
https://website.com/products?category=Gifts'-- إزاي الاستعلام اتغير؟ 😈
الاستعلام بعد التلاعب بيبقى كده: Code:
SELECT * FROM products
WHERE category = 'Gifts'--' AND released = 1 -- معناها تعليق في SQLيعني أي حاجة بعدها مش هتتنفذ ❌
النتيجة؟
✔️ شرط
released = 1 اتشال✔️ الموقع يعرض كل المنتجات حتى اللي مش منشورة
استغلال أخطر باستخدام OR 1=1 💣
المهاجم ممكن يروح لمرحلة أخطر ويستخدم: Code:
https://website.com/products?category=Gifts'+OR+1=1-- Code:
SELECT * FROM products
WHERE category = 'Gifts' OR 1=1--' AND released = 1 فكده قاعدة البيانات هترجع كل المنتجات بدون أي فلترة 😱
خطورة ثغرة SQL Injection 🔐
اللي حصل ده مثال بسيط جدًا، لكن في الواقع الثغرة دي ممكن تؤدي إلى:- عرض بيانات مستخدمين 👤
- تسريب إيميلات وباسوردات 📧
- الوصول لملفات حساسة 📂
- أحيانًا التحكم الكامل في قاعدة البيانات 💀
أدوات أوتوماتيك لاستغلال SQL Injection 🤖
بدل ما تشتغل يدوي طول الوقت، في أدوات بتسهّل عليك الشغل جدًا، أهمها:- 🔥 SQLMap
http://sqlmap.org - ⚔️ jSQL Injection (Kali Linux)
https://tools.kali.org/vulnerability-analysis/jsql
- فحص تلقائي للثغرات
- استخراج بيانات
- تسريع عملية الاختبار
إزاي تكتشف الثغرة بنفسك؟ 🕵️♂️
مفيش طريقة سحرية ✋لازم تجربة ومحاولة، سواء يدوي أو باستخدام الأدوات.
من أشهر الحاجات اللي بتتجرب:
'(Quote)--OR 1=1UNION SELECT
- هل الموقع كسر؟
- ترى بيانات غريبة؟
- رسائل خطأ غير متوقعة؟
التعديل الأخير: