شش ماه پیش توسعه دهندگان وردپرس اعلام کردند که یک آسیب پذیری در وردپرس بوجود آمده است. این واقعه پس از این بود که تعداد زیادی از سایت هایی که بر روی سیستم مدیریت محتوای وردپرس نصب شده بودند مورد آماج حمله سایبری هکر ها قرار گرفتند. گفته می شود ۵۰۰۰۰ سایت در چند شبانه روز هک شدند.

 

آسیب پذیری پلاگین وردپرس

هک وب سایت وردپرس دست بردآسیب پذیری از سوی یکی از پلاگین های وردپرس بود به نام MailPoet Newsletters. وردپرس یکی از محبوب ترین CMS های موجود است، با بیش از ۷۵ میلیون سایت که آنرا در خود دارند (آمار فوریه ۲۰۱۴).

این پلاگین، سایت هایی که آنرا نصب کرده بودند آسیب پذیر می ساخت و در ورژن ۲٫۶٫۷ برطرف شد، ولی به شرط اینکه سایت ها آنرا بروز رسانی می کردند.

آسیب پذیری بدین صورت بود که هکر ها می توانستند فایل های دلخواه PHP خود را بر روی سرور آپلود کرده و کنترل سایت را بدست بگیرند. در ابتدا تعدادی سایت تخریب شدند و هکر ها اصلاحاتی در کد های خود دادند و سایت های بعدی که هک می شدند آسیبی نمی دیدند و کسی متوجه حضور آنها نمی شد. کدی که در اکثر سایت ها اینجکت شده بود، یک راه مخفی برای ورود هکر ها باز می کرد (backdoor). آنها یک کاربر ادمین بنام ۱۰۰۱۰۰۱ ایجاد می کردند بطوریکه فقط خودشان رمز ورودشان را داشتند.

همچنین تعدادی از سایت هایی که این پلاگین را نداشتند و یا حتی وردپرس نداشتند نیز هک شدند که به آن cross-contamination می گویند. یعنی همۀ سایت هایی که تحت نام یک اکانت هاست شده اند بخاطر آسیب پذیری یک سایت هک می شوند. البته در برخی شرکت های هاستینگ یک سایت دسترسی به سایت های مجاور در اکانت های دیگر را ندارد، ولی خوب در سرور هایی که بخوبی تنظیم نشده بودند، این اتفاق افتاد و همۀ سایت های موجود در هاست با اکانت های دیگر نیز هک شدند.

تجربه ما

چندی پیش، تعدادی از سایت های دوستان ما نیز هک شد. این در حالی است که پلاگین MailPoet در این سایت ها نصب نشده بود. وقتی ما بررسی کردیم، مشاهده کردیم که یک یوزر ادمین بنام ۱۰۰۱۰۰۱ در کنار دیگر کاربران در جدول wp-users دیتابیس ایجاد شده است. اولین کاری که کردیم، پاک کردن این کاربر بود.

سپس یک فایل مشکوک پیدا کردیم بنام license.php این فایل تحت هیچ شرایطی متعلق به وردپرس نبوده است، پس آنرا پاک کردیم.

همچنین دیدیم که همۀ پلاگین ها محو شدند با خطای “bad header”. وقتی بررسی کردیم، مشاهده کردیم که یک کد مضر در بالای همۀ صفحات PHP اضافه شده است.

کد شبیه این بود:

این کد در همۀ صفحات پی اچ پی در بالای کد اصلی اضافه شده بود (prepend). و پارامتر های آن در هر صفحه تغییر می کرد یعنی یکسان نبود.

خوب، کاری که ما کردیم، این بود که با استفاده از رگولار اکسپرشن و تابع بازگشتی یک برنامه نوشتیم که همۀ حالت ها را تحت پوشش قرار میداد و لیستی از همۀ فایل های PHP در زیر فولدر ها تهیه کرده و همه را پاک سازی می کرد. آنرا اجرا کردیم و چیزی حدود ۳۰ هزار فایل پی اچ پی را در کمتر از ۵ دقیقه پاک سازی کرد. این کد را در اختیار شما قرار می دهیم که اگر مشکل مشابهی داشتید آنرا اجرا کنید، ولی مراقب باشید!

توجه: این کد همه منظوره نیست و ممکن است به فایل های شما آسیب بزند. پیش از اینکه از آن استفاده کنید، آنرا در یک فولدر کوچک تست کرده و از عملکرد آن مطمئن شوید، و اگر OK بود، آنرا به روت فایل های خود اعمال کنید. ولی باید از چند و چون عملکرد این اسکریپت آشنا باشید و اگر لازم است در آن تغییراتی بدهید. نئو مارکت مسوولیتی را در قبال این اسکریپت قبول نمی کند. پیش از استفاده، از فایل های تان نسخه پشتیبان تهیه کنید!

کد زیر را در فایلی بنام cleanser.php ذخیره کرده و طبق دستورالعمل فوق ابتدا در یک فولدر کوچک تست کرده و سپس به www هاست خود اعمال کنید تا صفحات PHP شما از این ویروس پاک شود:

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

 

چکار کنیم که وردپرس هک نشود

در زیر راهکار هایی داده می شود که کمک می کند امنیت سایت شما در آینده در برابر چنین حملاتی حفظ شود:

  • فایل های بک آپ بر روی هاست نگه ندارید.
  • همیشه از آخرین نسخه وردپرس و پلاگین ها استفاده کنید.
  • اطلاعات ورود سایت خود را در فایل های متنی بر روی دسکتاپ ذخیره نکنید.
  • به کسی که اعتماد ندارد مشخصات ورود سایت خود را ندهید.
  • تولبار های مختلف و ناشناخته بر روی سیستم عامل خود نصب نکنید.
  • آنتی ویروس بروز داشته باشید.
  • تعداد زیادی سایت را بر روی یک اکانت هاست نکنید.
  • به همۀ دیتابیس ها یک یوزر اختصاص ندهید.
  • تم ها و پلاگین های “نال” شده استفاده نکنید.
  • و…

 

هک شدن سایت های وردپرس
۲ رای، میانگین: ۵ از ۵