فعلا بی نام
فعلا بی نام
خواندن ۳ دقیقه·۴ سال پیش

آموزش باگ RFU و جلوگیری از آن

سلام! باگ RFU یا Remote File Upload رو میخواهیم مورد بررسی قرار بدیم

این باگ زمانی رخ میده که برنامه نویس آپلودر رو درست کانفیگ نکرده باشه

این باگ به نفوذگر اجازه اعمال کد های مخرب و دسترسی به سرور رو میده که همین فرایند آپلود shell یک مشکل هست

اعتبارسنجی های سمت مشتری (Client-Side Filters Validation)

اعتبارسنجی سمت مشتری یک اعتبار سنجی هست که قبل از ورود ورودی ها انجام میشه و این تو مرورگر وب توسط html5,VBscript,Javascript اتفاق میوفته.

این اعتبارسنجی ها برای اینه که کاربر تجربه بهتری موقع کار با سایت داشته باشه

دور زدن فیلترهای سمت مشتری (Client-Side Filters Bypass)

  • با خاموش کردن JavaScrpit در مرورگر میتوانیم به راحتی از این اعتبارسنجی عبور کنیم
  • دستکاری درخواست های HTTP قبل از ارسال درخواست به سرور

محدود کردن نام فایل

خب برای اینکه بتوانیم درست از این اعتبار سنجی عبور کنیم باید مانند برنامه نویس فکر کنیم

مثلا من اگر برنامه نویس اون سایت بودم یک whitList یا BlackList مربوط به پسوند فایل ها درست میکردم که فقط فایل هایی که این پسوند را دارند اجازه آپلود داشته باشن مثل : png,jpg,jpeg,gif و......

از WhitList ها بیشتر استفاده میشه چون فقط به چند فایل اجازه آپلود میده اما تو BlackList ها باید بیایم چندین فایل رو محدود کنیم

دور زدن محدودیت نام فایل

  • بایپس BlackList : به عنوان مثال یک شل رو که به زبان php هست را میتونیم با تغییر پسوند این فایل قبل از ارسال درخواست تغییر بدیم مثل :pht, phpt, phtml, php3,php4,php5,php6

با استفاده از برنامه هایی مانند BurpSuite یا افزونه HTTP Header Live که امکان دستکاری درخواست رو به ما میدن

burpsuite
burpsuite


  • بایپس WhiteList : یکی از ترفند های دورزدن لیست سفید، Null byte Injection است. مثلا قبل از ارسال درخواست به سرور در آخر فایل بعد از پسوند فایل (php) از 00jpg% استفاده کنیم.(بجای jpg میتوانیم هر پسوندی که سرور مجاز کرده استفاده کنیم)
burpsuite
burpsuite

-کوچک و بزرگ کردن حروف فایل مثلا php >> PhP یا phP و ...

burpsuite
burpsuite

یا اینکه برای Content-name اسم فایل رو mygame.php;jpg قرار بدیم و بعد بیایم content-Type رو image/jpg قرار بدیم

اعتبار سنجی Content-Type

آپلودرها با بررسی شناسه فایل رو تایید میکنند مثل تصاویر که این هم قابل دور زدن است.

بایپس Content-Type

با تغییر Content-type از application/x-php به image/jpg میتونیم این محدودیت را دور بزنیم

burpsuite
burpsuite


اعتبار سنجی Content-Size

خب آپلودرها ممکنه مارو تو سایز فایل محدود کنن مثلا فقط به فایلی که کمتر از 1 مگابایت باشه اجازه آپلود بدن

بایپس Content-Size

برای بایپس هم یا باید از شل کم حجم تر استفاده کنیم یا اینکه اندازه فایل رو موقع اسنیف کردن با burpsuite یا HTTP header Live تغییر بدیم

خب حالا مثلا ما همه اینهارو بایپس کردیم ولی باز آپلود نمیشه، این بخاطر اینه که آنتی ویروس فایل رو میخونه و به ما اجازه آپلود نمیده.

برای بایپس هم باید امضای فایل رو تغییر بدیم:

شل رو با یک Hex Editor باز میکنم و در اولین بایت های اون عبارت زیر رو قرار میدیم :

ffd8 ffdb

و در آخرین بایت های اون هم عبارت زیر رو قرار میدیم:

ffd9


یک روش دیگه این هست که یک فایل htaccess.txt. رو بسازیم و داخل اون عبارت زیر رو قرار بدیم:

AddType application/x-httpd-php jpg

و بعد آپلود کنیم اینطوری اون سرور در دایرکتوری که فایل در اون آپلود شده فایل هایی که با پسوند jpg هستند رو با پسوند php اجرا میکنه و ما بعد آپلود این فایل، پسوند شل خودمون رو به jpg تغییر میدیم و شل رو آپلود و اجرا میکنیم


خب گاهی میبینیم وقتی شل رو آپلود میکنیم مسیر اون فایل رو پیدا نمیکنیم :

یکی از راه هاش اینه که اول یه فایل سالم رو آپلود کنیم و بعد میتونیم ببینیم که دایرکتوری که فایل در اون آپلود میشه کجاست و بعد شل رو آپلود میکنیم و حالا که آدرس اون دایرکتوری رو داریم، بعد اون دایرکتوری اسم شل خودمون رو میزاریم برای مثال:

http://target.com/image/upload/shell.php

و یا اینکه میایم تمام دایرکتوری های سایت رو با ابزارهای directory finder در میاریم و سپس اسم شل خودمون رو بعد هر دایرکتوری میزاریم.

بعد که شل رو آپلود و اجرا کردیم رمز شل رو وارد میکنیم و وقتی که وارد محیط شل شدیم درواقع به سرور دسترسی داریم و میتونیم اون رو دیفیس کنیم یا با نصب بکدورها دسترسی خودمون رو ارتقا بدیم!!!


امن کردن آپلودر در برابر این باگ

  • از یک فایروال خوب برای جلوگیری از این حملات استفاده کنیم
  • به همه کاربران اجازه آپلود فایل رو ندیم
  • برای آپلود محدودیت هایی بزاریم
  • سرور دانلود و آپلود رو از خود سایت اصلی جدا کنیم
  • و....

امیدوارم که خوب و قابل فهم توضیح داده باشم !

خدانگهدار!!!


rfuhackhackerباگ rfuآپلود
شاید از این پست‌ها خوشتان بیاید