باگ rfu و راه های جلوگیری از این باگ

این باگ باگ اسونی هست ولی اصلا گول این سادگیو نخورید حتی تو مسابقه فتح پرچم ک یک مسابقه برای هکرهای کل دنیاست هم از این روش بسار استفاده میشه RFU مخفف remote file upload است و همانطور که از نام ان مشخص است هنگام اپلود فایل در سرور این اسیب پذیری به وجود می اید که باعث می شود نفوذگر فایل های خود را در سرور اپلود کنید و به اهداف خود برسد به صورت کلی این اسیب پذیری بسیار خطر ناک است و موجب می شود هکر از وب سایت دسترسی کاملبگیرد اما حالت های دیگری هم وجود دارد که خطر اسیب پذیری کم می شود که با ان ها اشنا خواهید شد.اگر یک اپلودر سایت به باگ RFU اسیب پذیر باشد میتوانید فایل خود را اپلود کنید برای مثال اگر سایت مورد نظر شما از php پشتیبانی می کند میتوانید یک شل اسکریپت با زبان php در ان اپلود کنید که در این صورت دسترسی کامل خواهید گرفتامازمانی دیگر ممکن است فایل هایی مانند txt , html , js که فقط سمت کلاینت اجرا میشوند فقط بتوانید اپلود کنید که در این صورت هیچ دسترسی نخواهید داشت و فقط میتوانید یک صفحه دیفیس برای ثبت سایت ایجاد کنید یا نهایتا اطلاعات کاربرانی که به ان صفحه می ایند را با روش های فیشینگ استخراج کنید.مثال این آسیب پذیری در افزونه های وردپرسیآسیب پذیری TimThumb که تعداد بسیار زیادی از پلاگین ها و مضامین را تحت تأثیر قرار داده است.یک آسیب پذیری آپلود فایل از راه دور است. در مورد TimThumb کتابخانه تصویر راهی را در اختیار توسعه دهندگان قرار داد تا بتوانند URL تصویر را در رشته پرس و جو مشخص کنند تا TimThumb.php سپس آن تصویر را از وب واکشی کند.می توان URL تصویر را دستکاری کرد تا مهاجم بتواند یک فایل PHP را که در وب سایت خود مهاجمان میزبانی شده است مشخص کند. سپس TimThumb آن فایل PHP را واکشی می کند و آن را در وب سایت قربانی در دایرکتوری قابل دسترسی از وب ذخیره می کند. پس از آن مهاجم به سادگی به آن فایل PHP در مرورگر خود دسترسی پیدا می کند و می تواند آن را اجرا کند.خب برنامه نویس ها معمولا چند نوع فیلتر رو قرار میدن که میشه اونا رو بای پس کرد که با هم برسیشون میکنیم :1 => لیست سفیددر اینجا آپلودر میاد پسوند فایل رو چک میکنه و اگر توی لیست سفید بود اجازه اپلود میده. (البته بعضی وقتا هم میاد چک میکنه که اگر توی لیست سیاه نبود اجازه بده (: )خب برای بای پس این روش اگر لیست سفید بود میشه فایل رو با پسوندfile.php;pngاپلود کنیم و با ابزار burp suite درخاست رو ادیت کنیم .اگر هم لیست سیاه بود میشه مثلا برای فایل های php از (PHP3 و PHPs و PHTML) استفاده کرد چون اینا مشابه پسوند php هستش .2 => چک کردن type فایلاینجا آپلودر مقدار هایی مثل content-type رو چک میکنه که مثلا برای فایل های تصویری image/jpeg هستش که شما باز هم با استفاده از ابزار قدرتمند brup suite میتونید درخواست رو قبل از ارسال شدن تغییر بدید و مقدار content-type رو به image/jpeg تغغیر دهید و شل رو آپلود کنید3 => چک کردن حجم فایلخب تو این حالت آپلودر میاد حجم فایل رو چک میکنه که مثلا اگر بالای 1 مگ بود آپلود نشه این کار رو با این تکه م میده( $uploaded_size < 10000 )که اینجا میشه از مینی شل ها استفاده کرد (شل هایی با محدودیت و حجم خیل یکم )و البته توجه داشته باشید که برنامه نویس عزیز میتونه این حالت یا فیلتر ها رو با هم به کار ببره ولی باز میشه بای پس کرد.------------------------------------------------------------------------------------------------------------------------------------------------------دورکی مناسب برای پیدا کردن سایت هایی با این باگinurl:”editor/filemanager/connectors/php/userfiles/” inurl:frame=product_detail ------------------------------------------------------------------------------------------------------------------------------------------------ بعد از ادرس ساید دستور زسر راوارد کنید ب بعد از ادرس سایت تا صفحه اپلود برای شما نمایان شود fckeditor/editor/filemanager/connectors/uploadtest.html خب حالا دیفیس خودتون رو باپسوند .html آپلود کنید.----------------------------------------------------------------------------------------------------------------------------------------------------ایمنی و راههای جلوگیری از باگ RFUجلوگیری از این نوع آسیب پذیری مشابه جلوگیری از آسیب پذیری بارگذاری فایل محلی است :پوشه پرونده های بارگذاری شده را محدود کنیداز افزونه های غیرضروری استفاده نکنیدمحدودیت ها را با کدگذاری اعمال کنیدلطفاً از دیوار آتش برای جلوگیری از بارگیری استفاده کنید و از باگ RFU استفاده کنیدمکان بارگذاری را از فهرست اصلی جدا کنیدبرای بارگیری پرونده ها از یک سرور جداگانه استفاده کنید---------------------------------------------------------------------------------------------------------------------------------------------------