کشف و رفع حفره‌های امنیتی در وردپرس

دسته بندی :
درتاریخ : ۲۶ مرداد ۱۳۹۴

securwp

سلام دوستان . وقت بخیر 🙂

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

خب بریم سراغ مقاله 😉

شاید این سوال برای شما پیش آمده باشد که چه‌گونه می‌توان تشخیص داد وب‌سایتی هک شده‌است؟ نشانه‌های آن چیست؟ و یا در صورتی که وب سایتی هک شد چه اقداماتی باید برای پاک‌سازی آن انجام داد؟

معمولا هکرها با اهداف مختلفی اقدام به هک می‌نمایند، یکی از آن‌ها استفاده از وب‌سایت برای قرار دادن صفحات phishing و ارسال ایمیل انبوه است که ممکن است در نگاه اول فایل‌های مخرب آن شناسایی نشود.

برای پاکسازی وب سایت‌های وردپرس هک شده اقدامات زیر را می‌توان انجام داد:

۱. نصب یکی از افزونه‌های معتبر امنیتی وردپرس، مانند:

  • Wordfence:
    یک پلاگین رایگان وردپرس است که سمت کاربر اقدام به اسکن سورس کدهای وب‌سایت می‌کند، سپس فایل‌های اصلی CMS و پلاگین‌های آن‌را با سورس اصلی وب‌سایت وردپرس (در سمت سرور) مقایسه می‌کند، در صورت مغایر بودن کدها Wordfence به شما اطلاع رسانی می‌نماید.
  • Quttera:
    یک پلاگین رایگان وردپرس است که وب‌سایت را جهت وجود ویروس، Malware، تروجان، worm و دیگر فایل‌های مخرب که در قالب کدهای جاوا اسکریپت و یا کدهای مخفی eval فعالیت می‌کند، اسکن می‌کند.
  • sucuri-scanner:
    این پلاگین محصول شرکت امنیتی Sucuri است. Sucuri-Scanner یکی از بهترین پلاگین‌ها برای ایمن سازی وردپرس می‌باشد .البته ناگفته نماند که Sucuri از تمرکز بیشتری در شناسایی فایل های مخرب وردپرس، نسبت به شرکت‌های دیگر برخوردار است. با این اسکریپت علاوه بر این‌که می‌توانید اقدام به اسکن فایل‌های آلوده نمایید. دیگر امکان‌های مدیریت جهت امنیت وب سایت را نیز در اختیار خواهید داشت.
  • gotmls:
    پلاگینی برای شناسایی فایل‌های مخرب است و با استفاده از آن می‌توانید از شر حملات Brute Force تا حدودی ایمن بمانید.

۲. شناسایی نوع هک در وب‌سایت‌های وردپرسی و پاک‌سازی آن:

شناسایی نوع هک در انجام عملیات پاکسازی بسیار مفید است، حالت‌های مختلف هک شدن سایت‌های وردپرسی، اغلب یکی از موارد زیر است:

الف) هک شدن فایل‌های وردپرس (تغییر محتوا): در اکثر موارد ممکن است کدهای مخرب در header و یا footer وب‌سایت قرار گیرد که این فایل‌ها را با نام header.php و footer.php در شاخه قالب مورد استفاده وب سایت وجود داشته و عمدتا محتویات آن‌ها مبهم سازی شده است به این معنی که با باز کردن آن‌ها عبارات غیر معمول و نا مفهومی مشاهده خواهید کرد.

مبهم سازی فایل‌ها به روش‌های مختلف انجام می‌شود. به عنوان مثال به قطعه کد زیر دقت کنید:

درمثال فوق مبهم سازی با base64 انجام شده است، بعد از عبارت base64 یک عبارت تصادفی و طولانی از مقادیر مختلف وجود دارد؛ غالبا ابتدای فایل‌هایی که با base64 مبهم‌سازی می‌شوند، یکی از مقادیر زیر وجود دارد:

  • (eval(base64_decode
  • (eval(gzinflate(base64_decode
  • (eval(gzuncompress(base64_decode
  • (eval(gzinflate(str_rot13(base64_decode

در مبهم سازی به روش base64 حالت دیگری به نام مبهم سازی با base64 decode نیز وجود دارد که بر اساس الگوریتم برعکس کار می‌کند، گاهی در بررسی فایلهای مخرب این روش مبهم‌سازی مشاهده شده است. در زیر میتوانید یک نمونه از آن‌را مشاهده نمایید:

غالبا در فایل‌های وردپرسی فایل کد شده با base64 وجود ندارد مگر در برخی از themeها و pluginهای خاص. یکی از روش‌های شناسایی فایل‌های مخرب وجود چنین فایل‌هایی در فایل‌های اصلی وردپرس است؛ در صورت وجود، بدون شک فایل مخرب است و باید حذف شود.

باید کدهای echo مشکوک و تگ‌های include را بررسی نمود، مانند:

در قطعه کد مخرب فوق از دستور echo استفاده شده و محتویات متغیر wpl_header_desc به مرورگر ارسال می‌شود. مجموعه‌ای از لینک‌ها که به صورت recursive تولید می‌شوند را به راحتی می‌توان در یک فایل PHP تزریق کرد و محل متغیرها و محتویات آن‌ها رابه سختی می‌توان کشف کرد.

در قطعه کد مخرب فوق، وقتی کامپایلر PHP فایل را بررسی می‌کند آن فایل شامل محتویاتی که فایل folder1/folder2/config.txt در خروجی مرورگر ارسال کرده است خواهد بود. محتویات فایل احتمالا درست و یا ممکن است شامل یک بلاک spam باشد. تنها راه شناسایی آن، این است که فایل را پیدا و محتویات آن را بررسی نماییم.

کامپایلر PHP محتویات لود شده را از طریق دستور requird و include به عنوان کد PHP شناسایی می‌کند. بنابراین یک هکر می‌تواند یک فایل با پسوند .txt ،.png و … در هر extension قرار دهد. همچنین بر روی فایل‌های هسته اصلی سایت وردپرس مثل function.php و header.php با افزوده شدن برخی کدها مثل کدهای زیر تغییر ایجاد کند:

فایل‌های png شامل کدهای PHP هستند که به صورت pharma افزوده شده‌اند، پس از بررسی سایت توسط googlebotها این لینک‌ها gambling شناسایی می‌شوند، تکه کد زیر یک شل بسیار معروف است که تاکنون بسیار استفاده شده‌است:

در صورتی که کد فوق را دیکد کنید متغیرهای زیر را مشاهده خواهید کرد:

هکر می‌تواند شل مورد بحث را بیشتر مبهم کند:

در اغلب موارد این کدها در فایل‌های قدیمی وردپرس دیده می‌شوند که به دلیل به روز نشدن هسته وردپرس است.

اگر با توجه به توضیحات فوق، همچنان کد مخرب را پیدا نکرده‌اید، فایل‌های اصلی مثل functions.php ،wp-load.php ،wp-config.php و یا /wp-content/plugins/plugin.php را بررسی کنید.
پوشه wp-content/uploads معمولا محلی برای فایل‌ها و محتویات spam است. پسوند این فایل‌ها نیر اغلب php ،txt ،Jpg و log است.

در آخرین «فارما هک» کد مخرب در فایل wp-includes/init.php تزریق و اقدامات خرابکارانه خود را انجام داده‌است. پوشه wp-includes/ جهت شناسایی فایل‌های مشکوک بایستی بررسی شود اغلب نام معمول این فایل‌ها load.php است با کدهای PHP مبهم شده و یا includeهای مشکوک.

برخی هک‌ها از طریق backdoor که در برخی از فایل ها وجود دارد اتفاق می‌افتد. این backdoorها به هکر(ها) اجازه می‌دهد که کدهای مخرب خود را در سایت بارگذاری نمایند و حتی با تغییر پسوردها هم مشکل رفع نمی‌شود.

معمولا این spamها دو بخش دارند یک بخش شامل لینک‌های اسپم و بخش دیگر اسکریپت‌های مخرب هستند. در بخی از موارد هدف این اسکریپت‌ها مشخص است:

ولی در برخی دیگر این اسکریپت‌ها خیلی مبهم هستند مانند مورد زیر:

در هنگام پاک سازی خیلی مهم است که هر دو مورد یعنی لینک‌های اسپم و اسکریپت‌ها را حذف نمایید. در صورتی که این اسکریپت از سایت حذف نشود در بازدید سایت توسط google، سایت به عنوان Malware شناخته شده و در هنگام مشاهده warning نمایش داده خواهد شد.

در لینک زیر کدهای PHPای جهت شناسایی اسکریپ‌های اسپم وجود دارد.

Simple script to find base64_decode in your files

با استفاده از این اسکریپت‌ها به راحتی می‌توان کدهای مخرب را شناسایی کرد.

در آخر برخی اسکریپت‌ها و لینک‌ها به صورت مخفی در دیتابیس وردپرس قرار می‌گیرند، معمولا این کدها در جدول wp-option قرار دارند و می‌توایند از طریق phpMyAdmin دیتابیس را بررسی نمایید.

نکته: قبل از هر اقدامی بر روی دیتابیس حتما اقدام به backupگیری از آن نمایید.

ب) هک از طریق فایل Htaccess:
سایت وردپرس که بر روی وب سرور apache هاست شده است، حتما  دارای فایل .htaccess در root فولدرِ هاست می‌باشد. برخی اوقات هکرها به این فایل نفوذ کرده و با افزودن کدهای مخرب اقدام به خرابکاری می‌نمایند، احتمال اینکه این فایل در زیر فولدرهای دیگر نیز وجود داشته باشد هست.
قطعه کد مخرب ممکن است شبیه کد زیر باشد:

ج) هک از طریق فایل php.ini:

این نوع هک بسیار نادر است و به ندرت اتفاق می‌افتد. فایل php.ini فایل پیکربندی اصلی PHP است. در زیر دو پارامتر که گه‌گاه در هک‌ها استفاده می‌شود را آورده‌ایم:

۳. برطرف نمودن Google Warning:

پس از اینکه Google Indexer سایت را دارای محتوای مخرب شناسایی کند، سایت در هنگام باز کردن با پیغام Warning مواجه می‌شود. پس از شناسایی مشکل و رفع آن، گوگل در بازدیدهای بعدی از سایت به صورت خودکار warning را حذف می‌نماید، ولی این روند بسیار زمان‌بر خواهد بود. جهت تسریع در این روند از راهکارهای زیر استفاده نمایید:

  1. ارسال مجدد XML نقشه سایت درwebmaster Tools
  2. استفاده از ابزار googlebot در Webmaster Tools جهت fetch کردن مجدد سایت.

امیدواریم این مقاله در کشف حفره ها و Backdoor ها برای شما مفیدباشه.

موفق و پیروز باشید 😉

امیر علی کاسه گری

4.3 سالی هست که تو زمینه وب و طراحی وب فعالیت و مطالعه میکنم و امید وارم بتونم این راه رو ادامه بدم و هر روز به دانش خودم اضافه کنم و این دانش رو با همه علاقمندان به دنیای وب به اشتراک بزارم :)


HTML5/CSS3 jQuery PHP ps wordpress bootstrap

2 دیدگاه برای این مطلب ارسال شده است

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

* Copy This Password *

* Type Or Paste Password Here *