الأربعاء، 9 يوليو، 2014

دورة الامن المعلوماتي الدرس السابع اكتشاف ثغرات SQLi-الجزء الثاني



هل تبلورت الفكرة لديكم عن كيفية اكتشاف ثغرات حقن قواعد البيانات؟ اتمنى ذلك،فعندما سنصل إلى الجانب التطبيقي،ﻻ احب أن تسألوني عن البديهيات،فأعدوا العدة من الآن،و اطرحوا الأسئلة الآن و ليس عندما ندخل إلى الحرب...ليست حربا بمعنى الكلمة و لكن أمر اكتشاف الثغرات ليس سهلا كما يعتقد ذلك الكثيرون،فمن الممكن أن تعمل لساعات طويلة دون جدوى و يمكن أن تصل إلى مبتغاك بالصدفة،و هذا ما يجعل المهتمين بأمن المعلومات مهووسين بأمر اكتشاف الثغرات.

في الدرس السابق تعرفنا على طرق اكتشاف ثغرات الحقن و لكن لم نفصل فيها،لهذا فاليوم سنقوم بشرح كل النقاط التي رأيناها بالتفصيل الممل.هل تتذكرون هذا السطر:
 http://xxxxxxx.org/index.php?id=17+order+by+9121

ما معنى الأوامر التي أضفناها إلى رابط الموقع؟

لو افترضنا بأن الموقع مصاب بثغرة حقن قواعد البيانات،فالأمر order by هو أحد أوامر لغة SQL و سيقوم بترتيب النتائج التي طلبناها فقط بالإستناد إلى الخانة الأولى أي خانة الـ id،فأي جدول في قاعدة البيانات سيحوي خانة واحدة على الأقل و لكن عندما نطلب الترتيب حسب الخانة 9121 فاحتمال وجود هته الخانة(التسجيل) هو احتمال ضعيف،و بالتالي سنحصل نحن على خطأ من قاعدة البيانات.

للنتقل ﻷمر أخر و هو إضافة or+x=x+ بدل order+by+9121+...هذا يسمى أيضا تلاعبا بالأوامر المرسلة لقاعدة البيانات و لكن علينا أن نغير الرابط ليصبح كالتالي:
 http://xxxxxxx.org/index.php?id=-1+or+1=1
 لماذا وضعنا id=-1؟ نعلم تماما أنه من غير الممكن بتاتا بأن يكون الجدول في قاعدة البيانات ﻻ يحوي تسجيل فكيف إذن سيحوي -1 و بالتالي سنرغم قاعدة البيانات على أن تقوم بتنفيذ الأمر الذي أرسلناه إليها و هو or+1=1+ و بالتالي ستجلب لنا التسجيل اﻷول في قاعدة البيانات،ولو رأينا إلى أمر SQL المرسل إلى قاعدة البيانات لوجدناه كالتالي:
SELECT * FROM articles WHERE id='-1' or 1=1
 يمكنك أستخدام أي أمر شرطي حتى نقوم بتخطي الشرط الأول و تطبيق الشرط الذي نريد نحن تنفيذه على قاعدة البيانات.
لن أطيل الحديث،فعندما تتعقد الأمور الأفضل أن تكون الدروس قصيرة حتى يسهل الفهم 

0 التعليقات:

إرسال تعليق

لا تنسى ان تشارك samir soltani بتعليقك
او نشر الموظوع جزاك الله خيرا