x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
الثغرة رقم 1 في أنواع الثغرات حسب منظمة OWASP : ثغرة الـ SQL Injection .. هل موقعك محمي منها .. !!!
ماهي ثغرة Sql injection وكيف يمكن استغلالها وكيف يمكن الحماية من هذه الثغرة ؟
تحدث ثغرات الـ Injection أو ما يُعرف بثغرات الحقن عندما يتم إرسال بيانات لمستخدم غير موثوق به إلى تطبيق الويب كجزء من أمر أو استعلام، حيث يمكن للبيانات الخاصة بالمهاجم أن تخدع تطبيق الويب لتنفيذ أوامر غير مقصودة أو الوصول إلى بيانات غير مصرح بها؛ ويمكن أن تظهر هذه الثغرات في جميع أنواع الأماكن داخل تطبيق الويب التي تسمح للمستخدم بتوفير مدخلات ضارة.
ومن أكثر هجمات الحقن شيوعاً:
استعلامات لغة الاستعلام الهيكلية (SQL)
استعلامات بروتوكول الوصول الخفيف إلى الدليل (LDAP)
استعلامات لغة مسار XML) XPATH)
أوامر نظام التشغيل (OS)
ثغرة Sql Injection
تُعَّد SQL Injection من بين أكثر الثغرات تواجداً على مواقع الانترنت، وهو ببساطة هجوم يُحقَن فيه كود sql بتطبيق الويب حتى يتم استخراج البيانات من قاعدة البيانات التي يعتمد عليها الموقع، وتعتمد الثغرة على خطأ عدم معاينة ما يتم إدخاله قبل أن يتم تمريره لقاعدة البيانات.
يمكن للمهاجمين استخدام هذه الثغرة لتجاوز إجراءات أمان التطبيق، والوصول الى المعلومات الخاصة بالعميل والبيانات الشخصية والأسرار التجارية والملكية الفكرية مع إمكانية القيام بالتعديل والإضافة والحذف على قاعدة البيانات الخاصة بالتطبيق.
وتُعتبر هجمات حقن SQL من أقدم الثغرات الأمنية في تطبيقات الويب وأكثرها انتشاراً وخطورة؛ حيث تعتبر منظمة OWASP أن هذه الثغرة تُعتبَر التهديد الأول لأمان تطبيقات الويب، ومن أشهر هذه الهجمات تلك التي حصلت بعام 2019 عندما تم سرقة الملايين من البيانات الضريبية الخاصة بالمواطنين البلغاريين عن طريق هذه الثغرة.
معرفة هل موقعك مصاب وكيفية تفادي هذه الهجمات
إذا كنت تستعمل الطرق القديمة للإستعلام باستعمال Mysql أو Mysqli فهناك احتمال بأن يكون موقعك مصاب إن لم تحمِ جميع الاستعلامات الموجهة لقاعدة البيانات بطريقة صحيحة. أمّا إن كنت تستعمل MySQLi أو PDO مع تهيئة الإستعلام، غالباً موقعك محمي من هذه الثغرة .
لمعرفة المواقع المصابة، نستعمل مجرد علامة الإقتباس السحرية ( ' ) لإجراء إحدى الإختبارين:
إما إضافة علامة الإقتباس لعناوين الويب على هذا الشكل:
أو إضافتها لحقل من حقول الإدخال:
إذا حصلت على خطأ SQL شبيه بهذا، فالموقع مصاب
الطريقة الوحيدة المؤكدة لمنع هجمات injection SQL هي التحقق من صحة الإدخال والاستعلام على تطبيق الويب، و إزالة عناصر التعليمات البرمجية الضارة المحتملة مثل علامات الاقتباس الفردية؛ إضافة إلى إيقاف إمكانية رؤية أخطاء قاعدة البيانات على مواقع الويب حيث يمكن استخدام أخطاء قاعدة البيانات مع injection SQL للحصول على معلومات حول قاعدة البيانات
إضافة إلى استخدام Prepared statements (with Parameterized Queries).
ماهي ثغرة Sql injection وكيف يمكن استغلالها وكيف يمكن الحماية من هذه الثغرة ؟
تحدث ثغرات الـ Injection أو ما يُعرف بثغرات الحقن عندما يتم إرسال بيانات لمستخدم غير موثوق به إلى تطبيق الويب كجزء من أمر أو استعلام، حيث يمكن للبيانات الخاصة بالمهاجم أن تخدع تطبيق الويب لتنفيذ أوامر غير مقصودة أو الوصول إلى بيانات غير مصرح بها؛ ويمكن أن تظهر هذه الثغرات في جميع أنواع الأماكن داخل تطبيق الويب التي تسمح للمستخدم بتوفير مدخلات ضارة.
ومن أكثر هجمات الحقن شيوعاً:
استعلامات لغة الاستعلام الهيكلية (SQL)
استعلامات بروتوكول الوصول الخفيف إلى الدليل (LDAP)
استعلامات لغة مسار XML) XPATH)
أوامر نظام التشغيل (OS)
ثغرة Sql Injection
تُعَّد SQL Injection من بين أكثر الثغرات تواجداً على مواقع الانترنت، وهو ببساطة هجوم يُحقَن فيه كود sql بتطبيق الويب حتى يتم استخراج البيانات من قاعدة البيانات التي يعتمد عليها الموقع، وتعتمد الثغرة على خطأ عدم معاينة ما يتم إدخاله قبل أن يتم تمريره لقاعدة البيانات.
يمكن للمهاجمين استخدام هذه الثغرة لتجاوز إجراءات أمان التطبيق، والوصول الى المعلومات الخاصة بالعميل والبيانات الشخصية والأسرار التجارية والملكية الفكرية مع إمكانية القيام بالتعديل والإضافة والحذف على قاعدة البيانات الخاصة بالتطبيق.
وتُعتبر هجمات حقن SQL من أقدم الثغرات الأمنية في تطبيقات الويب وأكثرها انتشاراً وخطورة؛ حيث تعتبر منظمة OWASP أن هذه الثغرة تُعتبَر التهديد الأول لأمان تطبيقات الويب، ومن أشهر هذه الهجمات تلك التي حصلت بعام 2019 عندما تم سرقة الملايين من البيانات الضريبية الخاصة بالمواطنين البلغاريين عن طريق هذه الثغرة.
معرفة هل موقعك مصاب وكيفية تفادي هذه الهجمات
إذا كنت تستعمل الطرق القديمة للإستعلام باستعمال Mysql أو Mysqli فهناك احتمال بأن يكون موقعك مصاب إن لم تحمِ جميع الاستعلامات الموجهة لقاعدة البيانات بطريقة صحيحة. أمّا إن كنت تستعمل MySQLi أو PDO مع تهيئة الإستعلام، غالباً موقعك محمي من هذه الثغرة .
لمعرفة المواقع المصابة، نستعمل مجرد علامة الإقتباس السحرية ( ' ) لإجراء إحدى الإختبارين:
إما إضافة علامة الإقتباس لعناوين الويب على هذا الشكل:
Code:
http://example.kom/article.php?id=25'
إذا حصلت على خطأ SQL شبيه بهذا، فالموقع مصاب
Code:
Error SQL !
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
الطريقة الوحيدة المؤكدة لمنع هجمات injection SQL هي التحقق من صحة الإدخال والاستعلام على تطبيق الويب، و إزالة عناصر التعليمات البرمجية الضارة المحتملة مثل علامات الاقتباس الفردية؛ إضافة إلى إيقاف إمكانية رؤية أخطاء قاعدة البيانات على مواقع الويب حيث يمكن استخدام أخطاء قاعدة البيانات مع injection SQL للحصول على معلومات حول قاعدة البيانات
إضافة إلى استخدام Prepared statements (with Parameterized Queries).