فا

‫ آسیب‌پذیری جدید PHP و امکان هک شدن سایت‌های درحال اجرا بر روی سرورهای Nginx!

#‫آسیب_پذیری جدید در وب سایت­های مبتنی بر PHPبر روی سرورهای NGINXکشف شده است.

اگر برای بهبود عملکرد و کارایی اینگونه وب­سایت­ها، قابلیت PHP-FPMرا فعال کرده‌اید، بدانید که در معرض آسیب‌پذیری جدیدی قرار دارید که در آن مهاجمان غیرمجاز می‌توانند از راه دور سرور وب‌سایت شما را هک کنند.

به این آسیب‌پذیری شناسه "CVE-2019-11043" اختصاص داده شده است و وب‌سایت‌هایی با پیکربندی خاصی از PHP-FPM(که ظاهراً غیرمعمول هم نیست) را تحت تأثیر قرار می‌دهد. قابلیت PHP-FPMپیاده‌سازی دیگری از PHP FastCGIاست که پردازش‌هایی پیشرفته و بسیار کارآمد را برای اسکریپت‌های نوشته شده در زبان برنامه‌نویسی PHPارائه می‌دهد.

علت اصلی این آسیب‌پذیری، مشکل حافظه underflow"env_path_info" در ماژول PHP-FPMاست و ترکیب آن با سایر نقص‌ها می‌تواند مهاجمان را قادر سازد تا از راه دور کد دلخواه خود را بر روی وب‌سرورهای آسیب‌پذیر اجرا کنند.

آسیب‌پذیری مذکور، توسط یک محقق امنیتی در Wallarmبه نام Andrew Danauدر زمان برگزاری یکی از مسابقات Capture The Flag(CTF)کشف شد و وی با همکاری دو تن از محققان دیگر به نام‌های Omar Ganievو Emil Lernerتوانستند آن را به صورت یک اکسپلویت اجرای کد از راه دور توسعه دهند.

کدام یک از وب‌سایت‌های مبتنی بر PHPدر برابر مهاجمان آسیب‌پذیرند؟

اگرچه اکسپلویت کد اثبات مفهومی (PoC) آسیب‌پذیری مورد بحث به صورت عمومی متتشر شده است اما به طور خاص برای هدف قرار دادن سرورهای آسیب‌پذیر در حال اجرای نسخه‌های PHP 7+طراحی شده است، با این وجود، نسخه‌های پیشین PHPنیز تحت تأثیر این آسیب‌پذیری قرار دارند.

به طور خلاصه، یک وب‌سایت آسیب‌پذیر خواهد بود اگر:

  • وب‌سرور NGINXبه صورتی پیکربندی شده باشد که درخواست‌های صفحات PHPرا به پردازنده PHP-FPMارسال کند.
  • دستور "fastcgi_split_path_info" در این پیکربندی وجود داشته و شامل یک عبارت معمولی باشد که با نماد '^' شروع می‌شود و با نماد '$' خاتمه می‌یابد.
  • متغیر PATH_INFOبا دستور fastcgi_paramتعریف شده است.
  • دستوری شبیه به "try_files $uri =404"و یا "-f $uri" برای مشخص کردن وجود یا عدم وجود یک فایل، وجد نداشته باشد.

پیکربندی آسیب‌پذیر NGINXو PHP-FPMمی‌تواند به صورت زیر باشد:

در این مثال، از دستور " fastcgi_split_path_info" برای تقسیم URLصفحات PHPوب به دو بخش استفاده می‌شود، بخش اول یک موتور PHP-FPMبرای فهمیدن نام اسکریپت و بخش دوم شامل اطلاعات مسیر آن است.

اکسپلویت اجرای کد از راه دور در PHP FPMچگونه عمل می‌کند؟

به گفته محققان، عبارتی که دستور " fastcgi_split_path_info" را تعریف می‌کند، با استفاده از کاراکتر خط جدید می‌تواند به گونه‌ای دستکاری شود که در نهایت تابع تقسیم کننده URLتمامی اطلاعات مسیر را خالی کند.

در مرحله بعد، از آنجا که یک اشاره‌گر محاسباتی در کد FPMوجود دارد که به اشتباه " env_path_info" را بدون تأیید وجود فایلی بر روی سرور، یک پیشوند مساوی با مسیر اسکریپت phpتلقی می‌کند، این مسئله می‌تواند توسط یک مهاجم برای بازنویسی داده‌ها در حافظه با درخواست URLهای خاص ساخته شده از وب‌سایت‌های مورد هدف اکسپلویت شود.

برای مطالعه کامل کلیک نمایید


نظرات

بدون نظر
شما برای نظر دادن باید وارد شوید

مشخصات خبر

 
تاریخ ایجاد: 12 آذر 1398

امتیاز

امتیاز شما
تعداد امتیازها: 0