هفته گذشته محققان امنیتی با 2 آسیب پذیری RCE در CWP مواجه شدند. این 2 آسیب پذیری که با شناسه های cve-2021-45466 و cve-2021-45467

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

محققان octagon network در مقاله ای، از این آسیب پذیری خطرناک خبر دادند.

آسیب پذیری با کد CVE-2021-45466 دسترسی نوشتن روی فایل و آسیب پذیری CVE-2021-45467 نیز از نوع file inclusion میباشد که با ترکیب این 2، میتوان دسترسی اجرای کد از راه دور (RCE) گرفت.

CWP چیست ؟

پنل وب کنترل (Control Web Panel) که به اختصار CWP گفته میشود، یک پنل مدیریت سرور، برای سرورهای لینوکسی با سیستم عامل CentOS میباشد.

نحوه کارکرد آسیب پذیری RCE در CWP

جالب است که برخی فایل هایی که بدون احرازهویت قابل دسترسی هستند فایلای /user/loader.php و /user/index.php میباشند. همین باعث بروز آسیب پذیری RCE در CWP میشود.

در فایل user/loader.php از روش زیر برای جلوگیری از حملات File Inclusion استفاده شده است:

<?php
if(!empty($_GET["api"])) {
…
if (!empty($_GET["scripts"])) {
$_GET["scripts"] = GETSecurity($_GET["scripts"]);
include "../../resources/admin/scripts/" . $_GET["scripts"] . ".php";
}
…

متد GETSecurity بصورت زیر تعریف شده است:

function GETSecurity($variable)
{
if (stristr($variable, ".." ) {
exit("hacking attempt");
}
}

اگر پارامتر scripts دارای .. (2 نقطه) باشد، برنامه پردازش را ادامه نداده و با نمایش دادن پیغام hacking attempt بسته میشود.

متد stristr در PHP همان strstr است با این تفاوت که به حروف کوچک و بزرگ حساس نیست (case-insensitive).

روش های دور زدن stristr

  1. فریب دادن CWP تا کارکترهای دیگر را به عنوان نقطه (.) تشخیص دهد.
  2. پیدا کردن کارکترهای منحصر به فرد که زبان C در حالت lower case به عنوان نقطه (.) پردازش میکند.
  3. فریب دادن CWP تا فکر کردن نقطه متوالی وجود ندارد (..).

CVE-2021-45467

بر اساس تحقیقات انجام شده، برخی متد ها در CWP (مانند include و require) /.%00./ را به عنوان /../ پردازش میکنند. بدین صورت زمانی که متد stristr بایت های نال (null-bytes) را نادیده میگیرد، همچنان اندازه آن را میشمارد بنابراین بررسی را دور میزند.

CVE-2021-45466

حالا باید یک آسیب پذیری پایه نوشتن در فایل (file-write) پیدا کنیم. پیدا کردن این آسیب پذیری کار ساده ای نیست ولی طبق تحقیقات انجام شده، میتوان در بخش API که به ما اجازه میدهد یک فایل txt اضافه کنیم، فایل خود را تزریق کنیم.

برای مثال:

https://CWP/api/?key=OCTAGON&api=add_server&DHCP=<?=phpinfo()?>&fileFinal=/

در این حالت، محتوا در یک فایل بنام authorized_keys در مسیر /resources/ نوشته میشود.

 

هنوز اکسپلویت آسیب پذیری RCE در CWP بصورت عمومی منتشر نشده و طبق گفته ی تیم octagon network، پس از آنکه این آسیب پذیری RCE در CWP در بیشتر سرورهای مهم آسیب پذیر رفع شد، اکسپلویت آن بصورت عمومی منتشر خواهد شد.