م. عبدالعزيز الشمري
م. عبدالعزيز الشمري

@IT2CAM

12 تغريدة 405 قراءة Apr 03, 2020
#ثريد
بسم الله الرحمن الرحيم
زي العادة نستمر بثريدات عن الثغرات وطرق استغلالها ?
بهذا الثريد بتكلم عن ثغرة
SQL injection ?
" حقن قواعد البيانات "
بتكلم في هذه الثريد عن واحد من أشد الأخطار فتكاً في تطبيقات الويب ، حيث يمكن لهذه النوعية من الهجمات أن تقوم بمسح قاعدة بيانات كاملة ، او سرقة محتوياتها ، او تغيير بيانات بقاعدة البيانات من دون ان يلاحظ احد.
ماهي ثغرة SQL injection ؟
هي ببساطة هجوم يتم فيه حقن كود SQL بتطبيق الويب حتى يتم استخراج البيانات من قاعدة البيانات التي يعتمد عليها الموقع ، والثغرة تعتمد على خطأ في عدم معاينة ما يتم إدخاله قبل ان يتم تمريره لقاعدة البيانات
تعتبر هذه الثغرة الأكثر خطورة حسب ترتيب OWASP.
سبب وجود ثغرة SQL Injection :
السبب يعود إلى عدم حماية البيانات أثناء التعامل مع القاعدة. إما عن غير قصد ، و غالبا عن جهل المبرمج. فلا غرابة أن نجد هذه الثغرة في الكثير و الكثير من المواقع. رغم أنها من أقدم الثغرات ، و طرق حمايتها لا يتطلب جهدا و خاصة أثناء إنجاز المشروع.
طرق الحماية :
الحماية في هذا المستوى تعتمد على المبرمج بشكل كامل.
وبما ان حقن قواعد البيانات يتم عن طريق مُدخلات المستخدم فيستطيع المبرمج التحكم في مُدخلات المستخدم والتحقق منها.
يجب على من يبني قواعد البيانات ان يكون يعرف انماط حقن البيانات ليستطيع ان يتفادى هذة الثغرة.
كيف اعرف هل الموقع مصاب بثغرة SQL injection او لا ؟
1- كل اللي عليك اضافة علامة الاقتباس ( ' ) بنهاية رابط موقع.
مثال:
'http://yoursite/article.php?id=25
2- اضافة علامة الاقتباس بأحد الحقول بالموقع.
اذا ظهر خطأ (error) او تنبية (warning)
فالموقع يحتوي على الثغرة
مثال بالصورة
تجربة عملية:
هذا موقع للتدريب على إختبار الاختراق:
testphp.vulnweb.com
1- ادخل الموقع وتأكد ان الموقع مصاب بثغرة SQL injection ( يكون بإضافة علامة الاقتباس بأخر الرابط ( ' ))
2- استغلال الثغرة يكون بتغيير اخر رقم بالرابط بقيمة تتوقع انها ليست مخزنة بقاعدة البيانات ( غالباً الارقام السالبة لاتكون مخزنة ).
• بعد تغيير القيمة الى قيمة سالبة مثلا ( 1- ).
ننتقل للخطوة الثالثة.
3- اضافة كلمة UNION لإرفاق استعلامك لقاعدة البيانات مع الاستعلام الأصلي وبكذا ممكن نحصل على قيم اعمدة من جداول اخرى بقاعده البيانات.
4- اضافة امر SQL بعد ذلك.
مثال تطبيقي على نفس الموقع:
هذا كود SQL تضيفة بعد الرابط وبعد تغيير اخر قيمه الى ( 1- ) :
UNION SELECT 1,pass,cc FROM users WHERE uname='test'
بيكون شكل الرابط بالاخير مثل الصورة:
اتمنى من اي شخص طبق الطريقة وطلع له نتيجة ، يشاركها معنا ?
واتمنى اني افدتكم علمياً وعملياً بطريقة مبسطة ♥️
@sjsw_90 ايه ولكن تقدر من جدول واحد سحب اليوزرنيم والباسوورد وبكذا تنتهي مهمة SQL injection

جاري تحميل الاقتراحات...