في كثير من الحالات، عندما يستخدم المتسللون حقن الأداة، يجدون أن الأداة لا يمكنها فك تشفير أسماء الجداول وأسماء الحقول، وذلك لأن جميع الأدوات لها قاموس خاص بها، والذي يتضمن أسماء الجداول وأسماء الحقول إذا كان المسؤول هو اسم الجدول و إذا تم تغيير اسم الحقل بحيث لا يكون موجودًا في هذا القاموس، فلن تتمكن الأداة التي نستخدمها من تخمين اسم الحقل واسم الجدول. في المقالة التالية، سنبدأ من تحليل الحقن اليدوي لبناء خط دفاع ضد حقن SQL.
سيقوم الدخيل ببناء شرط حكم بسيط لتحديد ما إذا كانت الصفحة بها ثغرة أمنية أم لا. الخطوات العامة هي كما يلي:
الصفحة التي سيتم اكتشافها هنا هي http://127.0.0.1/111/view.asp?id=198
1. الدخيل إذا كنت تريد حقن موقع يدويًا، فيجب عليك إعداد المتصفح للتأكد من إمكانية إرجاع رسائل الخطأ أثناء الحقن اليدوي. الخطوات هي كما يلي:
انقر بزر الماوس الأيمن على المتصفح وحدد "خصائص"، ثم حدد "". متقدم" في مربع الحوار المنبثق. علامة التبويب. كما هو موضح أدناه:
الشكل 1
ثم قم بإزالة الخطاف الموجود أمام "إظهار رسائل خطأ HTTP المألوفة" ثم انقر أخيرًا على الزر "تطبيق".
2. يرسل الدخيل عنوان URL التالي إلى المتصفح:
http://127.0.0.1/111/view.asp?id=198 و1=1.
إذا كانت هناك ثغرة أمنية في حقن SQL، فيمكن الاستعلام عن قاعدة البيانات 1= 1 هوية. سيتم إرجاع هذه الصفحة العادية إلى http://127.0.0.1/111/view.asp?id=198 . في هذا الوقت، سيحكم الدخيل على هذا الموقع ومن المتوقع أن يتم حقنه. إذا تم إرجاع بعض رسائل الخطأ، فقد يغادر بعض المتسللين البدائيين الموقع.
3. يرسل الدخيل أيضًا عنوان URL التالي إلى المتصفح:
http://127.0.0.1/111/view.asp?id=198 و1=2
1=2 عبارة عن عدم مساواة في الهوية إذا كان الموقع يدعم استعلام قاعدة البيانات، فمن المحتمل أن يعرض المعلومات كما هو موضح في الشكل أدناه:
الشكل 2
بشكل عام، إذا ظهر الدخيل كما هو موضح في الشكل أعلاه، فمن المؤكد بشكل أساسي أن هذا الموقع يمكنه تنفيذ هجمات حقن SQL.
ومع ذلك، في كثير من الحالات، يمكن للمتسلل أن يحدد بسرعة ما إذا كان الموقع المستهدف به ثغرة أمنية في حقن SQL بمجرد استخدام علامة اقتباس واحدة، وإرسال عنوان URL التالي إلى المتصفح:
http://127.0.0.1/111/view.asp? id=198'if يشير إرجاع المعلومات التالية إلى أن هناك أكثر من نصف احتمال وجود ثغرة أمنية في الحقن:
خطأ موفر Microsoft OLE DB لبرامج تشغيل ODBC '80040e14'
[Microsoft] [برنامج تشغيل ODBC Microsoft Access] خطأ في بناء جملة السلسلة موجود في تعبير الاستعلام "المعرف =1". /list.asp، السطر 50
4. في هذا الوقت، يبدأ الدخيل في إنشاء عبارة استعلام SQL خاصة للاستعلام عن اسم جدول قاعدة بيانات الموقع، ويرسل العبارة التالية إلى عنوان URL:
http://127.0.0.1/ 111/view.asp?id= 198 وexists(select * from admin)
يستعلم هذا البيان عن قاعدة البيانات لمعرفة ما إذا كان جدول الإدارة موجودًا، فسيتم إرجاع صفحة عادية إذا كان الجدول غير موجود، فهذا خطأ سيتم إرجاع الصفحة. بشكل عام، سيختبر المتسللون أولاً أسماء الجداول شائعة الاستخدام، وهي أيضًا أسماء الجداول وأسماء الحقول الموجودة في قاموس كلمات المرور لأدوات الحقن العامة. إذا لم يكن اسم الجدول من بين أسماء الجداول شائعة الاستخدام، فسيستخدم الدخيل الهندسة الاجتماعية لتخمين اسم الجدول. وفي هذه الحالة، يكون لدى الدخيل فرصة منخفضة لتخمين اسم الجدول.
5. بعد الحصول على اسم الجدول، يبدأ الدخيل في إنشاء عبارة استعلام للاستعلام عن اسم حقل قاعدة البيانات، وإرسال العبارة التالية إلى عنوان URL:
http://127.0.0.1/111/view.asp?id=198 و موجود (حدد مستخدمًا من المشرف)
هذا البيان هو الاستعلام عن جدول المسؤول في قاعدة البيانات ما إذا كان حقل المستخدم موجودًا، إذا كان موجودًا، فسيتم إرجاع صفحة عادية. إذا لم يكن موجودًا، فسيتم إرجاع صفحة خطأ.
7. بعد ذلك، يبدأ الدخيل في تحديد قيمة معرف الحقل، ويقوم بإنشاء العبارة التالية للاستعلام عن قيمة المعرف: http://127.0.0.1/111/view.asp?id=198 وموجود (اختر معرف من المشرف حيث id=1 )
يقوم بإرجاع الصفحة الصحيحة إذا كانت صحيحة، ويعيد صفحة الخطأ إذا كانت غير صحيحة.
6. بعد تخمين اسم الجدول واسم الحقل، بدأ الدخيل في إنشاء بيان استعلام لتخمين طول حساب المسؤول، وأرسل البيان التالي إلى عنوان URL:
http://127.0.0.1/111/view.asp?id =198 وموجود(حدد معرف من المشرف حيث len(user)<6 وid=1)
هذا البيان هو للاستعلام عن نطاق طول اسم المستخدم في حقل المستخدم، وهو ما يعني أن الطول أقل من 6. إذا كان صحيح سيعود إلى الصفحة العادية، وإذا كان خطأ يعود إلى صفحة الخطأ.
قم بتضييق النطاق، ثم قم بإنشاء العبارة التالية لتحديد الطول المحدد لاسم المستخدم:
http://127.0.0.1/111/view.asp?id=198 andexist(select id from admin Where len(user)= 5 وid=1)
صحيح في حالة حدوث خطأ، سيتم إرجاع الصفحة العادية. في حالة حدوث الخطأ، سيتم إرجاع صفحة الخطأ.
8. بعد ذلك، يدخل الدخيل الخطوة الأخيرة لإنشاء بيان للاستعلام عن اسم مستخدم المسؤول، ويرسل البيان التالي إلى عنوان URL: http://127.0.0.1/111/view.asp?id=198 andexist( حدد العد (*) من المشرف حيث left(user,1)='a')
هذا البيان هو لتخمين اسم المستخدم من الجانب الأيسر من اسم المستخدم إلى a إذا كانت خاطئة، فسوف تعود إلى صفحة الخطأ. خمن في الموضع الثاني، العبارة المعدلة هي (user,2)='ad'، وهكذا.
وبعد أن يحصل الدخيل على اسم المستخدم وكلمة المرور، تكون عملية الحقن على وشك الانتهاء.
أما بالنسبة لطريقة الوقاية، فهي بسيطة جدًا من العملية المذكورة أعلاه، يمكننا أن نرى أنه إذا لم يكن اسم الجدول واسم الحقل من بين أسماء الجداول وأسماء الحقول شائعة الاستخدام، فسيستخدم الدخيل الهندسة الاجتماعية للتخمين يعد اسم الجدول واسم الحقل الذي تم تعديله بواسطة المسؤول معقدين بدرجة كافية، وسيقوم الدخيل بالغزو. إذا كان المهاجم لا يزال غير قادر على تحقيق الهدف، فهناك طريقة دفاع بسيطة أخرى تتمثل في تنزيل بعض التصحيحات المضادة للحقن من الإنترنت وتطبيقها الطريقة هي تعديل ملفات الموقع وإضافة بيانات التصفية لتصفية البيانات المقدمة من المتسللين لمنع الحقن، نعم لن أشرح لك مبدأها هنا.