حقن إس كيو إل

عودة للموسوعة

حقن إس كيوإل

محمد الحمود،
ساهم بشكل رئيسي في تحرير هذا الموضوع

اختراق إس كيوإل (SQL Injection) هوتعبير عن هجوم برمجي ضد التطبيقات التي تحتوي قواعد معطيات تتمثل بحقن رماز مصدري (code) في تطبيق ما ليتم تطبيقه في طبقة قاعدة المعطيات لهذا التطبيق وتعتبر هذه العملية من أخطر أنواع الهجمات ضد مواقع الإنترنت بشكل خاص .

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

الصيغ العامة لهجوم Sql Injection

  1. إدخال معطيات تتم ترجمتها إلى أكواد قابلة للتطبيق :

يتم هذا النوع عندما يقوم المهاجم بإدخال بيانات بطريقة يؤثر فيها على الرماز المصدري الأصلي الذي خطه المبرمج ليتم بالنهاية تطبيق تعليمات المبرمج بشكل يؤدي إلى نتائج يريدها المهاجم كما في المثال التالي : لنفرض أننا في مسقط ويطلب منا إدخال الاسم لكي يخبرنا هل تجاوز وسجلنا في هذا المسقط أم لا (في الحالات الواقعية قد يحدث المسقط يطلب منااالدخول إلى حساب بنكي أوأشياء حساسة أخرى) ولنفرض حتى الرماز المصدري الأصلي في المسقط كان بالشكل :

SqlDataSource_Login.SelectCommand = "Select * from Users Where username = '" + TextBox_UserName.Text + "';";


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

' or '1'='1

ليصبح شكل التعليمة النهائية هو :

SELECT * FROM Users WHERE username =  OR '1'='1';

إن ترجمة هذا التعليمة هوكالتالي : اجلب جميع البيانات الخاصة بمستخدم معين من قاعدة البيانات طالما كان اسم المستخدم فارغاً أوكان 1 = 1 . وبالتأكيد فالشرط الثاني محقق وقد يكون الهجوم قد تم بنجاح ويحصل المهاجم على الامتيازات التي يمنحها هذا المسقط للأعضاء فيه (كما قلنا من الممكن تكون معلومات حساسة جداً ).

وبالتأكيد فالخطر لا يتوقف عند هذا الحد حيث بإمكان المهاجم حتى يخط في مربع النص:

mohammad'; drop table Users--

هنا قام المهاجم بكتابة اسم عشوائي وقام بعدها بإغلاق التعليمة عن طريق رمز ; ثم خط تعليمة أخرى تطلب حذف تام الجدول الخاص بالمستخدمين! وبعدها خط رمز -- وهوالرمز الخاص بالتعليقات في sql ليتم تجاهل جميع ما خطه المبرمج.

لنعد إلى المثال الأول الأول ولنفرض حتى المسقط هومنتدى يطلب من العضوفيه اسم المستخدم وحدثة المرور للدخول إلى حساب العضوولتكن تعليمة sql الخاصة بتسجيل الدخول على الشكل التالي :

var sql = "select * from users where username = '" + username + "' 
and password = '" + password + "'";

الآن إذا اتى المهاجم وأدخل المعلومات التالية :

Username: admin'-- (باعتبار حتى admin هواسم مدير المسقط )

عندها سيتمكن المهاجم من الدخول إلى المسقط بحساب المدير.

في حال أدخل المهاجم المعلومات التالية :

Username: ' or 1=1-- 

عندها سيتمكن من الدخول بحساب أول عضوفي قاعدة المعطيات .

في حال أدخل المهاجم المعلومات التالية :

Username: '; drop table users-- 

عندها كما في المثال السابق سيمسح الجدول الخاص بكافة الأعضاء في المسقط .

الحصول على المعلومات عن طريق رسائل الأخطاء

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

لنفترض وجود قاعدة معطيات فيها جدول باسم Users مؤلفة من id من النوع int وusername وpassword من النوع nvarchar وتحوي بضعة مستخدمين . فإذا كان المهاجم يريد إدخال حساب خاص به عن طريق تعليمة insert فمن الصعب جداً حتىقد يكون محظوظاً في تخمين اسم الجدول وأسماء الأعمدة وأنواع المعطيات فيها لذلك سيلجأ إلى تقنية الاستفادة من رسائل الأخطاء التي ستعطيه معلومات كاملة عن قاعدة المعطيات كما يلي :

في البداية سيحتاج المهاجم إلى فهم اسم قاعدة البيانات لذلك سيدخل العبارة التالية في الحقل المخصص لإدخال اسم المستخدم :

Username: ' having 1=1--

مما سيتسبب بالخطأ التالي :

Column 'Users.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

هنا استطاع المهاجم الحصول على معلومتين هامتين ، الأولى هي اسم الجدول وهوUsers والثانية هي اسم أول عمود في الجدول وهوالعمود id . حسناً الآن يريد المهاجم فهم اسم العمود الثاني لذلك سيخط ما يلي :

Username: ' group by users.id having 1=1-- 

أي قام بكتابة اسم العمود id ليظهر له العمود الذي يليه عن طريق التسبب بالخطأ التالي :

Column 'Users.username' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

هنا ظهر اسم العمود الثاني وهوusername . وبنفس الطريقة سيستطيع فهم اسم العمود الثالث وأي أعمدة أخرى متبقية .

سيكون من المفيد بالنسبة إلى المهاجم حتى يصبح على فهم تامة بانواع المعطيات التي تخزن فيكل عمود لذلك سيلجأ إلى كتابة التعليمة التالية ليعهد نوع البيانات في العمود username :

Username: ' union select sum(username) from users--

مما سيظهر الخطا التالي :

Operand data type nvarchar is invalid for sum operator.

فيفهم المهاجم حتى نوع البيانات في العمود username هوnvarchar . وبهذه الطريقة نستطيع فهم نوع البيانات في أي عمود .

بقي على المهاجم حتى يعهد إذا ما كان الـ id يتزايد تلقائياً أم لا لذلك سيحاول إدخال مستخدم حديث مع تحديد الـ id :

'; insert into Users values( 666, 'fakeUser', 'fakePassword')--

فإذا كان العمود id يتزايد تلقائياً سينتج الخطأ التالي :

An explicit value for the identity column in table 'Users' can only be specified when a column list is used and IDENTITY_INSERT is ON.

أصبح بإمكان المهاجم الآن إدخال ما يريد إلى الجدول Users بعد حتى حصل على المعلومات اللازمة لذلك ويستطيع حتى يخط :

'; insert into Users values( 'fakeUser', 'fakePassword')--

وبعد هذه التعليمةقد يكون قد تولد سطر حديث في قاعدة المعطيات يحمل المعلومات الخاصة بالمهاجم التي من الممكنقد يكون قد أدخلها ليحصل على صلاحيات المدير أومن الممكن أدخل حساباً له في بنك أما مثلاً ..

انظر أيضا

  • Cross-site scripting
  • Metasploit Project, an open-source penetration testing tool that includes tests for SQL injections
  • w3af, an open-source web application security scanner

المصادر

وصلات خارجية

  • BUGTRAQ-VULNERABLE SITE TRACKER (injection vulnerability)
  • WASC Threat Classification - SQL Injection Entry, by the Web Application Security Consortium
  • Why SQL Injection Won't Go Away, by Stuart Thomas
  • SQL Injection Attacks by Example, by Steve Friedl
  • Five Ways To Stop Mass SQL Injection Attacks, By Ericka Chickowski, Dark Reading

تاريخ النشر: 2020-06-04 09:37:18
التصنيفات: إدارة البيانات, Injection exploits, إس كيو إل, مقالات بها أمثلة على شفرة إس كيو إل

مقالات أخرى من الموسوعة

سحابة الكلمات المفتاحية، مما يبحث عنه الزوار في كشاف:

آخر الأخبار حول العالم

إصابة ثلاثة لاعبين جدد في صفوف برشلونة بـ"كوفيد 19"

المصدر: الأول - المغرب التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:34:06
مستوى الصحة: 57% الأهمية: 66%

عام / أمانة الشرقية تُنهي مشاريع تصريف مياه الأمطار بضاحية الملك فهد بالدمام

المصدر: وكالة الأنباء السعودية - السعودية التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:38:11
مستوى الصحة: 52% الأهمية: 64%

روسيا: تونس تعتمد لقاح 'سبوتنيك لايت' ضد كورونا

المصدر: راديو موزاييك - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:34:21
مستوى الصحة: 49% الأهمية: 50%

الخزينة العامة تعلن عن إصدار سندات بمبلغ 600 مليون درهم

المصدر: الأول - المغرب التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:34:04
مستوى الصحة: 52% الأهمية: 50%

اجتماعي / غرفة جدة تستضيف فعاليات ملتقى التوظيف للجنة "تراحم"

المصدر: وكالة الأنباء السعودية - السعودية التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:38:17
مستوى الصحة: 59% الأهمية: 63%

نمصية:ضريبة 100 مليم على المشتريات لن تؤثر على القدرة الشرائية للمواطن

المصدر: راديو موزاييك - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:34:18
مستوى الصحة: 52% الأهمية: 56%

سياسي / سفير المملكة لدى السنغال يقدم أوراق اعتماده للرئيس السنغالي

المصدر: وكالة الأنباء السعودية - السعودية التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:38:14
مستوى الصحة: 49% الأهمية: 62%

إصابة ثلاثة لاعبين جدد في صفوف برشلونة بـ"كوفيد 19"

المصدر: الأول - المغرب التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:34:12
مستوى الصحة: 51% الأهمية: 67%

وزير الخارجية الإيطالي: تونس شريك استراتيجي

المصدر: راديو موزاييك - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:34:22
مستوى الصحة: 55% الأهمية: 62%

سوسة: حريق ضخم بمستودع النفايات الإيطالية

المصدر: راديو موزاييك - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:34:13
مستوى الصحة: 48% الأهمية: 61%

بلديات قابس في إضراب بسبب 'التجاوزات والهرسلة'

المصدر: راديو موزاييك - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:34:17
مستوى الصحة: 53% الأهمية: 64%

عام / غرفة القصيم تقيم ورشة عمل للتعريف بمنصة وبرنامج تعزيز الأمن الفكري

المصدر: وكالة الأنباء السعودية - السعودية التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:38:13
مستوى الصحة: 57% الأهمية: 68%

الخبير الفلكي عادل المرزوق: الأمطار المتفرقة مستمرة حتى ظهر الخميس

المصدر: كويت نيوز - الكويت التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:35:31
مستوى الصحة: 54% الأهمية: 68%

خريطة أماكن شقق جنة مصر للإسكان الفاخر 2022 "أبرزها أكتوبر وزايد"

المصدر: الرئيس نيوز - مصر التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:38:23
مستوى الصحة: 56% الأهمية: 59%

وزيرة المالية: نأمل صرف 350 مليون دولار من صندوق النقد في هذا التاريخ

المصدر: راديو موزاييك - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:34:15
مستوى الصحة: 59% الأهمية: 55%

‫المكي بخصوص اعتصام حملة مواطنون ضد الانقلاب: هؤلاء لفظهم التاريخ

المصدر: جوهرة أف أم - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:33:47
مستوى الصحة: 35% الأهمية: 46%

‫جربة: مؤشرات سياحية طيبة تزامنا مع احتفالات رأس السنة

المصدر: جوهرة أف أم - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:33:52
مستوى الصحة: 42% الأهمية: 39%

وزيرة المالية:قانون المالية لم يُعد في غرفة مغلقة.. وهؤلاء اطلعوا عليه

المصدر: راديو موزاييك - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:34:14
مستوى الصحة: 50% الأهمية: 51%

الخزينة العامة تعلن عن إصدار سندات بمبلغ 600 مليون درهم

المصدر: الأول - المغرب التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:33:58
مستوى الصحة: 58% الأهمية: 53%

الجزائر تتخذ إجراءات لاسترجاع ممتلكات رعاياها في المغرب

المصدر: راديو موزاييك - تونس التصنيف: مجتمع
تاريخ الخبر: 2021-12-29 14:34:19
مستوى الصحة: 49% الأهمية: 65%

اجتماعي / محافظ النماص يدشن مركز خدمات التربية الخاصة في المحافظة

المصدر: وكالة الأنباء السعودية - السعودية التصنيف: سياسة
تاريخ الخبر: 2021-12-29 14:38:18
مستوى الصحة: 59% الأهمية: 60%

تحميل تطبيق المنصة العربية