معرفی آسیب‌پذیری proxyshell (CVE-2021-34473, CVE-2021-34523, CVE-2021-31207)

معرفی اکسپلویت

 

Proxy Shell یک اصطلاح کلی برای 3 آسیب‌پذیری سرور Exchange، با شناسه‌های:

CVE-2021-34473: Microsoft Exchange Server Remote Code Execution

CVE-2021-34523: Microsoft Exchange Server Elevation of Privilege

CVE-2021-31207: Microsoft Exchange Server Security Feature Bypass Vulnerability


پلتفرم آسیب‌پذیر: سرورهای Microsoft exchange

 

Exchange 2013 CU23 < 15.0.1497.15

Exchange 2016 CU19 < 15.1.2176.12, Exchange 2016 CU20 < 15.1.2242.5

Exchange 2019 CU8 < 15.2.792.13, Exchange 2019 CU9 < 15.2.858.9

شدت آسیب‌پذیری:

CVE-2021-34473: 9.8

CVE-2021-34523: 9.8

CVE-2021-31207: 7.2

مقدمه

آسیب‌پذیری‌های ذکر شده در سرویس Microsoft Client Access (CAS) قرار دارند که معمولا بر روی پورت 443 در IIS (سرور وب مایکروسافت) اجرا می‌شوند. CAS معمولاً در معرض اینترنت عمومی قرار می‌گیرد تا کاربران بتوانند از طریق تلفن همراه و مرورگرها به ایمیل خود دسترسی داشته باشند. این امر سبب سو استفاده گسترده مهاجمان از آسیب‌پذیری‌ها به منظور استقرار webshell برای اجرای کد از راه دور بر روی سیستم‌های در معرض خطر می‌شود. ProxyShell به زنجیره‌ای از آسیب‌پذیری‌های مطرح شده اشاره دارد که برای دست‌یابی به دسترسی از پیش تایید شده از راه دور (pre-authenticated RCE) استفاده می‌شود.

جزئیات آسیب‌پذیری

آسیب‌پذیری CVE-2021-34473 (the pre-auth path confusion)

اولین آسیب‌پذیری proxyshell، مشابه حمله SSRF در آسیب‌پذیری ProxyLogon است. (لینک آسیب‌پذیری  proxylogon )

این آسیب‌پذیری به مهاجم اجازه می‌دهد درخواست‌هایی با امضاهای جعلی به یک سرور آسیب‌پذیر ارسال کند که در سرور مذکور معتبر شناخته می‌شوند.

MS Exchange دارای قابلیتی به نام ورود صریح (Explicit Logon) است که به طور قانونی به کاربران اجازه می‌دهد تا با وارد کردن آدرس ایمیل یک کاربر در URL، ایمیل یا تقویم آن کاربر را در پنجره مرورگر جدید باز کنند. این ویژگی فقط برای ارائه دسترسی در جایی طراحی شده است که کاربر دسترسی کامل (Full Access) داشته باشد و ایمیل یا تقویم هدف نیز برای انتشار پیکربندی شده باشد. آسیب‌پذیری مذکور با سو استفاده از فرآیند نرمال سازی در ارسال رشته Autodiscover/Autodiscover.json در url، سبب می‌شود تا url دلخواهی که به سمت backend ارسال می‌شود دسترسی مشابه سیستم exchange داشته باشد؛ در واقع در این آسیب‌پذیری، Exchange بررسی‌های کافی را بر روی آدرس وارد شده انجام نمی‌دهد و از طریق فرآیند نرمال‌سازی آن، منجر به اعطای دسترسی به URLهای backend به عنوان NT AUTHORITY/SYSTEM می‌شود.

 

نمونه درخواست‌هایی که می‌تواند توسط مهاجم ارسال شود:

 

 

آسیب‌پذیری CVE-2021-34523 (Elevation of Privilege on Exchange PowerShell Backend)

ویژگی Exchange PowerShell Remoting که در Microsoft Exchange تعبیه گردیده، برای کمک به فعالیت‌های اداری از طریق خط فرمان (command line) طراحی شده است. اکسپلویت قبلی به مهاجم اجازه می‌داد که با arbitrary backend URLs به‌عنوان NT AUTHORITY/SYSTEM ارتباط برقرار کند، اما از آنجایی که مهاجم در سرور هدف ایمیل ندارد، نمی‌تواند مستقیماً با Backend PowerShell (/Powershell) با سطح دسترسی بالا ارتباط برقرار کند.

backend PowerShell هدر X-CommonAccessToken را در درخواست‌های دریافتی بررسی می‌کند. اگر هدر وجود نداشته باشد، از روش دیگری برای دریافت CommonAccessToken استفاده می‌شود. این روش پارامتر X-Rps-CAT را در درخواست دریافتی بررسی می‌کند و در صورت وجود، آن را به یک CommonAccessToken معتبر تبدیل می‌کند. با اطلاعات جمع آوری شده قبلی در مورد ایمیل هدف یا اطلاعات پیش فرض از ایمیل‌های داخلی، ارسال یک مقدار معتبر X-Rps-CAT لازم نیست.

درخواست زیر با استفاده از پارامتر X-Rps-CAT، امکان جعل هویت یک کاربر معتبر را فراهم می‌سازد:

POST /autodiscover/autodiscover.json?a=abcde@evil.com/powershell/?X-Rps-CAT=[Base64 encoded data]

آسیب‌پذیری CVE-2021-31207 (Post-auth Arbitrary-File-Write Leads to RCE)

درصورتی  که دو آسیب‌پذیری قبلی با موفقیت مورد سوء استفاده قرار گیرند، آسیب‌پذیری CVE-2021-31207 به مهاجم اجازه می‌دهد تا در فایل در سیستم مقصد بنویسد.

به عنوان نمونه در دستور زیر می‌توان از دستور New-MailBoxExportRequest برای export پی‌لود در سیستم هدف استفاده کرد:

وصله امنیتی

CVE-2021-31207:

CVE-2021-34473, CVE-2021-34523:

∗ توصیه امنیتی: در صورتی که سازمانی امکان وصله‌ فوری آسیب‌پذیری‌های مذکور را نداشت، لازم است ترافیک ورودی TCP/80 و TCP/443 به سرورهای Exchange از اینترنت مسدود گردد و یا برای پورت‌های مربوطه vpn داخلی تعریف شود.

لینک مرجع:[1]