Remote‬‬ ‫‪File‬‬ ‫‪Upload‬‬

‫‪Remote‬‬ ‫‪File‬‬ ‫‪Upload‬‬ or‬ Unrestricted‬‬ ‫‪File‬‬ ‫‪Upload‬‬‫‫Rfu یا ‫‪Remote‬‬ ‫‪File‬‬ ‫‪Upload‬‬ سومین آسیب ‫پذیری‬ از 13 آسیب ‫پذیری‬ رایج طبق نمودار زیر است.‫این آسیب پذیری زمانی اتفاق می افتد که وبسایت آپلود مستقیم را از بازدیدکنندگان قبول نکند و آپلود توسط یک URLدیگر اتفاق میافتد و اگر مهاجم به آن URLدسترسی پیدا کند ممکن است با آپلود فایل های مخرب مانند شلاسکریپت ها و... دسترسی خود را گسترش دهد. فایل آپلود شده می تواند آسیب های قابل توجهی به سرور سایت بزند که آپلود فایل برای مهاجم اولین قدم دسترسی به سایت است. دسترسی های مهاجم به سایت به او کمک هایی مثل )ایجاد تغییرات در دیتابیس، دامپ کردن دیتابیس و...( میکند که اینها خطرات جدیای برای وبسایت هستند. ولی این آسیب پذیری موارد خاصی مثل محدودیت آپلود فایل را دارد که در ادامه به روش های بایپس آن می پردازیم . . .‬روش های بایپس 1 .لیست سیاه پسوند فایل ها • موارد مختلفی برای وب سرورهای مختلف وجود دارد؛ برای مثال برای وب سرور IIS میتوان به انتهای پسوند فایل مخرب "" اضافه کرد. ) اگر فایل مخرب "php.File "نام داشته باشد باید به این صورت آن را نوشت : "jpg;.php.File ) ”که خروجی و فایل آپلود شده به این شکل خواهد بود : "php.File ." • اگر سرور برای مثال فقط پسوند .phpرا محدود کرده باشد میتوانیم از پسوند های دیگر این نوع فایل استفاده کنیم. که پسوند های مشابه فایل های اجرایی را برایتان ذکر میکنم (“.php5”, “.pht”, “.phtml”, “.shtml”, “.asa”, “.cer”, “.asax” or “.swf”) • تغییر دادن پسوند فایل ها از حروف کوچک به حروف بزرگ هم میتواند محدودیت آپلود فایل را دور بزند )برای مثال تغییر "php.File "به " PHp3.File .)" • با نوشتن عبارت هایی مثل 0x00که اصطالحا به آن نال کاراکتر میگویند در انتهای پسوند فایل مخرب و در نهایت نوشتن یک پسوند مجاز نیز میتواند این محدودیت را بایپس کند؛ برای مثال php.Fileرا میتوان بصورت jpg.php0x00.Fileنوشت که در خروجی کاراکتر های پس از نال کاراکتر در نظر گرفته نمی شوند. نکته : برای رسیدن به نتیجه ابتدا باید تمامی پسوند های مجاز را بدست آورده و سپس با روش های فوق آنها را تست کنیم2 . تغییر content typeدر این اعتبارسنجی آپلودر فقط یک نوع خاص از فایل ها را برای آپلود قبول میکند که به این شکل مشخص میشود : برای مثال درصورتی که آپلودر فقط فایل های تصویری jpgرا پذیرد در هدر ریکوئست "jpeg / image : Type-Content "را مشاهده می کنید.• میتوان با تغییر این پارامتر در هدر با استفاده از ابزار هایی مثل Suite Burpاین محدودیت را دور زد و فایل مورد نظر را آپلود کرد.3 .شناسایی کننده نوع فایل ها گاهی اوقات برنامه های وب از برخی توابع برای بررسی انواع پرونده ها استفاده می کنند. به عنوان مثال ، هنگامی که یک برنامه یک فایل تصویر را تغییر اندازه می دهد ، ممکن است هنگام بارگذاری آن را مخرب تشخیص داده و بدون ذخیره آنه در سرور ، پیام خطایی را نشان دهد. درج کد در قسمت کامنت کد یا بخشهایی که هیچ تاثیری روی پرونده اصلی ندارند نیز می تواند منجر به بای پس شود. اگر برنامه با استفاده از الگوها یا امضاهای خاص کد مخربی را شناسایی کند ، کد های درج شده می توانند مبهم یا رمزگذاری شوند. ‫خب میریسیم به بخش اموزش bypass کردن و اپلود شل در سایت‌ برای اینکار ما باید درخواست هایی که به سمت سرور ارسال میشه رو هنگام اپلود فایل رو تغییر بدیم.ما برای تغییر درخواست ها میتونیم از Burp Suite یا افزونه Live Http Headersاستفاده کنیم. در اولین قدم‌ اگر بخواهیم فایلی در سایت اپلود کنیم که پسوندی همچون php ,html,js که خیلی هم خوبه و نیازمند تغییر نیست چون اغلب شل ها با پسوند php کار میکنن و ما می تونیم به راحتی شل خودمون رو اپلود کنیم،اما اگر پسوندی غیر از پسوند های بالا بود باید پسوند فایلمون رو به همون چیزی که سایت میخواد تغییر بدیم برای مثال اگه عکس بخواییم اپلود کنیم باید پسوند شل رو به پسوند های زیر تغییر بدیم (.jpg , .png , .bmp , .jpeg , ...)مثال:shell.php.png , shell.php;png ,shell.png , shell.php.....:.pngاما بعد از اینکه تغییر دادیم باید دوباره به حالت اول برگردونیم تا شل کار بکنه که برای تغییر دادن با ابزار burp suite که مثل پروکسی عمل میکنه و درخواست هایی که رد و بدل میشن رو اسنیف میکنه.بعد از اینکه فایل رو‌ تغییر دادیم و اونو انتخاب کردیم باید دکمه اپلود رو بزنیم و بعد وارد برنامه burp میشیم و به تب Proxy>Interceptمیریم و درخواستی که داره ارسال میشه رو میبینم و در قسمت filename اسم شل رو به حالت اول یعنی shell.php و‌همچنینتغییر میدیم مانند عکس زیر:و بعد forward رو میزنیم و میبینم فایل به خوبی اپلود شده و میتونیم ازش استفاده کنیم.اما ممکنه ما محدودیت داشته باشیم برای اپلود. 1. محدودیت اول این که ما نتونیم فایل php اپلود کنیم که و برنامه نویس سایت برای اون قسمت whit list نوشته باشه که مثلا فایل با پسوند (php,js,css) قبول نمیکنه مثل عکس زیر 2. محدودیت دوم اینه که ما نمی تونیم فایل بیشتر از 1m رو اپلود کنیم 3. محدودیت سوم اینه که content-type فقط به صورت image/png باشه مثل عکس زیرخب روش بایپس این محدودیت ها 1. ما میتونیم پسوند فایل رو بهphp: .php5 , .pht , .phtml , .shtml , .incasp: .asp, .aspxperl: .pl, .pm , .cgi , .libjsp: .jsp, .jspx , .jsv , .jswتغییر بدیم 2. در صورت وجود محدودیت سایز هنگام ارسال دیتا ما میایم و سایز رو زیاد میکنیم و دوباره ارسال میکنیم۳.در این حالت باز هم فایل رو بدونه تغییر content-type اپلود میکنیم تا شرطی که برنامه نویس گذاشته برقرار باشه و فایل اجرا بشهو در اخر که شل رو به درستی اپلود کردیم کافیه به اون ادرس بریم و از اون استفاده کنیمبا همراهی دوست عزیزم WINHamiD