این آسیب پذیری زمانی اتفاق می افتد که وبسایت آپلود مستقیم را از بازدیدکنندگان قبول نکند و آپلود توسط یک URLدیگر اتفاق میافتد و اگر مهاجم به آن URLدسترسی پیدا کند ممکن است با آپلود فایل های مخرب مانند شلاسکریپت ها و... دسترسی خود را گسترش دهد. فایل آپلود شده می تواند آسیب های قابل توجهی به سرور سایت بزند که آپلود فایل برای مهاجم اولین قدم دسترسی به سایت است. دسترسی های مهاجم به سایت به او کمک هایی مثل )ایجاد تغییرات در دیتابیس، دامپ کردن دیتابیس و...( میکند که اینها خطرات جدیای برای وبسایت هستند. ولی این آسیب پذیری موارد خاصی مثل محدودیت آپلود فایل را دارد که در ادامه به روش های بایپس آن می پردازیم . . .
روش های بایپس
• موارد مختلفی برای وب سرورهای مختلف وجود دارد؛ برای مثال برای وب سرور 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نوشت که در خروجی کاراکتر های پس از نال کاراکتر در نظر گرفته نمی شوند. نکته : برای رسیدن به نتیجه ابتدا باید تمامی پسوند های مجاز را بدست آورده و سپس با روش های فوق آنها را تست کنیم
در این اعتبارسنجی آپلودر فقط یک نوع خاص از فایل ها را برای آپلود قبول میکند
که به این شکل مشخص میشود :
برای مثال درصورتی که آپلودر فقط فایل های تصویری jpgرا پذیرد در هدر ریکوئست "jpeg / image : Type-Content "را مشاهده می کنید.
• میتوان با تغییر این پارامتر در هدر با استفاده از ابزار هایی مثل Suite Burpاین محدودیت را دور زد و فایل مورد نظر را آپلود کرد.
گاهی اوقات برنامه های وب از برخی توابع برای بررسی انواع پرونده ها استفاده می کنند. به عنوان مثال ، هنگامی که یک برنامه یک فایل تصویر را تغییر اندازه می دهد ، ممکن است هنگام بارگذاری آن را مخرب تشخیص داده و بدون ذخیره آنه در سرور ، پیام خطایی را نشان دهد. درج کد در قسمت کامنت کد یا بخشهایی که هیچ تاثیری روی پرونده اصلی ندارند نیز می تواند منجر به بای پس شود. اگر برنامه با استفاده از الگوها یا امضاهای خاص کد مخربی را شناسایی کند ، کد های درج شده می توانند مبهم یا رمزگذاری شوند.
خب میریسیم به بخش اموزش 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 رو میزنیم و میبینم فایل به خوبی اپلود شده و میتونیم ازش استفاده کنیم.
اما ممکنه ما محدودیت داشته باشیم برای اپلود.
خب روش بایپس این محدودیت ها
php: .php5 , .pht , .phtml , .shtml , .inc
asp: .asp, .aspx
perl: .pl, .pm , .cgi , .lib
jsp: .jsp, .jspx , .jsv , .jsw
تغییر بدیم
و در اخر که شل رو به درستی اپلود کردیم کافیه به اون ادرس بریم و از اون استفاده کنیم
با همراهی دوست عزیزم WINHamiD