RFU

این باگ زمانی ایجاد می­شود که نظارت دقیقی روی فایل­های آپلود شده صورت نگیرد. در چنین مواقعی هکر می­تواند فایل­های مخرب خود را uploadکند.باگ RFU مخفف remote file upload است و به علت کانفیگ ضعیف سرور و عدم نظارت دقیق روی فایل­های آپلود شده هنگام اپلود فایل در سرور رخ می­دهد. که باعث می شود که نفوذگر بتواند فایل های آلوده خود را در سرور اپلود کند.روش مختلفی برای جلوگیری از این آسیب و دورزدن این محدودیت­ها وجود دارد که در ادامه به آن اشاره می­کنیم.CLIENT-SIDE FILTERS VALIDATIONاعتبارسنجی سمت کلاینت نوعی اعتبارسنجی است که قبل از ارسال ورودی ها به سرور صورت می گیرد. و این ویژگی توسط مرورگر وب و با استفاده از تکنولوژی­هایJavaScript یا HTML5 اتفاق می افتد. برنامه نویسان از این نوع اعتبارسنجی برای ارائه تجربه بهتر کاربر با پاسخ سریع در سطح مرورگر استفاده می کنند.CLIENT-SIDE FILTERS BYPASSبرای بایپس کردن این مشکل به راحتی می­توان با خاموش کردن JavaScript در مرورگر یا دستکاری درخواست های HTTP (با استفاده از ابزارهایی مانند Burp suite) پس از خارج شدن درخواست از مرورگر و قبل از ارسال به سرور، عبور کرد.جاوا اسکریپت درخواست ما را فقط قبل از ارسال واقعی به سرور پردازش می کند که آیا فایل ما دارای پسوندهای یک فایل تصویر (jpg ، jpeg ، bmp ، gif ، png) است یا خیر. پس از capture کردن درخواست و دستکاری در آن، می توانیم پسوند فایل خود را تغییر دهیم.ما می­توانیم پسوند فایل مخرب خود را با یکی از روش­­های زیر تغییر می­دهیم:shell.php.jpg // shell.php;jpgسپس با استفاده از ابزار burp suite درخواست خود را capture کرده و اسم فایل را به صورت زیر تغییر می­دهیم:shell.phpFILE NAME VALIDATIONاعتبارسنجی نام فایل زمانی است که سرور فایلی را که بارگذاری می شود با بررسی پسوند آن تأیید کند، این اعتبار سنجی با روش های متفاوتی اتفاق می افتد، اما دو مورد از محبوب ترین روش ها، عبارتند از:1. Blacklisting File Extensions2. Whitelisting File ExtensionsFILE NAME BYPASSاعتبارسنجی نام فایل زمانی رخ می­دهد که سرور فایلی را که بارگذاری می شود با بررسی برنامه extension آن تأیید کند ، این تأیید بر اساس دو روش Blacklisting File Extensions و Whitelisting File Extensions صورت می گیرد.روش Blacklisting File Extensions روشی است که سرور یک سری پسوند خاص را رد می کند، در حالی که Whitelisting File Extensions دقیقاً برعکس است، یعنی سرور فقط به چند پسوند خاص اجازه بارگذاری را می­دهد، مانند jpg ، jpeg ، gif.برخی از روشهای اعتبارسنجی نام فایل را می توان با بارگذاری یک پسوند غیر محبوب دیگر ، یا با استفاده از برخی از ترفندها هنگام بارگذاری فایل، برای دور زدن این نوع اعتبار سنجی استفاده کرد.Blacklisting Bypass:به عنوان مثال با بارگذاری extension های غیر محبوب php می توان لیست سیاه را دور زد.مانند: pht ، phpt ، phtml ، php3 ، php4 ، php5 ، php6Whitelisting Bypass:با استفاده از برخی ترفندها، می توان لیست سفید را نیز دور زد، مانند افزودن null byte injection مانند (shell.php%00.gif). یا با استفاده از double extensions مانند (shell.jpg.php).برخی دیگر از بایپس ها را نیز می توان با تغییر حروف بزرگ و کوچک extension ها اعمال کرد مانند: PHp ، Php ، PHP انجام داد.CONTENT-TYPE VALIDATIONروش content-type validation زمانی است که سرور محتوای فایل را با بررسی نوع MIME فایل، که در درخواست http گنجانده شده است، اعتبار سنجی می کند. به عنوان مثال، فایل­های تصویری را با بررسی اینکه content-type از نوع image است، تأیید می کنند.CONTENT-TYPE BYPASSبرای بایپس کردن این نوع اعتبار سنجی کافیست پس از ارسال درخواست، درخواست خود را capture کرده و فیلد content-type را به یکی از حالت­های زیر تغییر دهیم:“image/png”, “image/jpeg”, and “image/gif”CONTENT-LENGTH VALIDATIONروش Content-Length validation زمانی است که سرور طول محتوای فایل بارگذاری شده را بررسی می کند و برای بارگذاری فایل محدودیت اندازه قرار می­دهد، هرچند که این نوع اعتبار سنجی چندان محبوب نیست.CONTENT-LENGTH BYPASSاین نوع اعتبارسنجی با بارگذاری یک کد مخرب بسیار کوتاه در فایل بارگذاری شده، بسته به حداکثر محدودیت اندازه در وب سرور، قابل بایپس شدن است.