شناسایی آسیب‌پذیری در وب‌سایت­‌های مبتنی‌بر PHP
کد مطلب: 16086
تاریخ انتشار : چهارشنبه ۱۳ آذر ۱۳۹۸ ساعت ۱۴:۵۸
 
یک آسیب‌پذیری جدید در وب‌سایت‌های مبتنی‌بر PHP امکان هک شدن سایت‌های در حال اجرا بر روی سرورهای NGINX را می‌دهد.
شناسایی آسیب‌پذیری در وب‌سایت­‌های مبتنی‌بر PHP
 
 
Share/Save/Bookmark
‫یک آسیب‌پذیری جدید در وب‌سایت‌های مبتنی‌بر PHP امکان هک شدن سایت‌های در حال اجرا بر روی سرورهای NGINX را می‌دهد.

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

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

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

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

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

به‌طور خلاصه، یک وب‌سایت آسیب‌پذیر خواهد‌بود اگر:
- وب‌سرور NGINXبه صورتی پیکربندی شده باشد که درخواست‌های صفحات PHPرا به پردازنده PHP-FPM ارسال کند.

- دستور "fastcgi_split_path_info" در این پیکربندی وجود داشته و شامل یک عبارت معمولی باشد که با نماد '^' شروع می‌شود و با نماد '$' خاتمه می‌یابد.

- متغیر PATH_INFOبا دستور fastcgi_paramتعریف شده است.

- دستوری شبیه به "try_files $uri =۴۰۴"و یا "-f $uri" برای مشخص کردن وجود یا عدم وجود یک فایل، وجد نداشته‌باشد.

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

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

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

برای مطالعه کامل، می‌توانید روی این قسمت کلیک کنید
مرجع : مرکز ماهر