کمک، سایتم هک شده! چطوری باید مشکل سایت وردپرس خودم را حل کنم

هک شدن یکی از ترسناک ترین تجربیاتی است که به عنوان یک مدیر سایت با آن برخورد خواهید کرد. شوربختانه، حتی اگر امنیت سایت خود را تقویت کرده باشید، هر روز حدود ۳۰,۰۰۰ سایت هک می شود پس بعید نیست قربانی بعدی سایت شما باشد. از همین رو مهم است که بدانید در صورتی که آن روز بیاید چه کاری باید انجام بدهید.

خوشبختانه این امکان وجود دارد که بدایند سایت شما دقیقا چگونه هک شده است که این کار به سادگی با پیدا کردن ردپاها در فایل log مربوط به سایت قابل انجام است. به محض اینکه دقیقا مشخص شد که چگونه هکر به سایت شما نفوذ کرده است، شما می توانید حفره امنیتی مذکور را پر کرده تا از بروز مجدد این مشکل جلوگیری کنید.

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

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

چطوری سایت های خوب هک می شوند

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

این موارد راه های اصلی هکرها است که می توانند به سایت شما وارد شوند:

حملات Brute force – این یعنی حدس زدن جزئیات ورود به حساب کاربری شما. اگر از نام های کاربری پیش فرض “admin” یا “administrator” و رمزهای عبور ضعیف استفاده می کنید، در حقیقت نیمی از آنچه هکر به آن نیاز داشته است را داده اید.

آسیب پذیری های نرم افزاری – وقتی هکرها حفره امنیتی را در هسته وردپرس، افزونه ها، قالب ها یا اسکریپت های مربوط به آن پیدا می کنند، می توانند از طریق آن و تزریق اسکریپت مورد نظر خود وارد سایت شما شوند.

بک دور اکسپلویت – فایلی (بک دور) است که در میان فایل های سایت شما قرار گرفته است. این فایل شامل یک اسکریپت است که به هکر اجازه می دهد تا به دفعات وارد سایت شما شده آن هم به گونه ای که ناشناس باقی بماند.

malware و ویرویس ها – اگر رایانه شما آلوده به ویروس یا malware است، هکرها می توانند از آن برای دسترسی به سایت شما استفاده کنند.

سرور ناامن – سروری که سایت شما نیز در آن میزبانی می شود باید ایمن باشد. اگر این سرور ایمن نباشد، هکرها می توانند از حفره های امنیتی سرور شما استفاده کرده و به سایت شما نفوذ کنند.

دسترسی های نادرست برای فایل ها – شما می توانید دسترسی فایل های خود را تنظیم کنید، این یعنی می توانید تنظیم کنید که چه کسی می توانید آنها را خوانده، نوشته یا بازنویسی و آن اسکریپت ها را اجرا کند. اگر دسترسی فایل ها ضعیف باشد، هکر می توانید به راحتی فایل های شما را ویرایش کرده و اسکریپت مورد نظر خود مثلا یک بک دور را به سایت شما تزریق کرده و سایت شما را هک کند.

فیشینگ – هکرها می توانند سایت هایی را مشابه سایت اصلی یک شرکت یا کمپانی ایجاد کرده به گونه ای که از بسیاری جهات شبیه به سایت مذکور باشد.

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

حملات XSS – یک آسیب پذیری XSS کدی است که به شیوه ای معلوم نوشته شده که به هکر اجازه می دهد تا کدهای جاوااسکریپتی را که اطلاعات کاربر را ذخیره می کنند نوشته و اجرا کند. این کار با ارسال لینکی به کاربر انجام شده و از این طریق تمام اطلاعات کاربر به هنگام رفتن به لینک مذکور دزیده می شود. برای مثال، آنها می توانند جزئیات ورود به حساب کاربری شما را دزدیده و از آن برای ورود به حساب کاربری مدیر استفاده کنند.

 

مشکل اینجا است که لیست بالا کامل نبوده و راه ها و روش های بسیار زیادی وجود دارد تا هکرها از آنها استفاده کنند، از همین رو غیرممکن است که شما بتوانید حدس بزنید که سایتتان چگونه هک شده و شما چگونه می توانید مشکل آنرا برطرف کنید.

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

تنها راهی که می توانید از ایمن بودن سایت خود بعد از هک شدن اطمینان پیدا کنید این است که ابتدا از اینکه چگونه هک شده اید آگاهی پیدا کنید. به محض اینکه این را بدانید، شما می توانید مشکل را حل کرده و به این چرخه باطل پایان دهید.

 

شروع کار با لاگ (log) های سایت شما

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

بسته به جایی که هاست خود را تهیه کرده اید، پیدا کردن این لاگ ها برای هر کسی متفاوت است از همین رو بهتر است از ارائه دهنده هاست خود این موضوع را جویا شوید.

در cPanel، شما میتوانید بعد از ورود هاست خود به بخش Metrics مراجعه کنید. برای مشاهده میتوانید روی Errors کلیک کنید یا میتوانید با مراجعه به Raw Access بدون ظاهر گرافیکی، لاگ های ثبت شده را بررسی کنید.

برای دریافت یک نسخه از لاگ های ثبت شده بر روی Raw Access کلیک کرده و یکی از سایت های خود را از لیست موجود در صفحه مذکور انتخاب کرده و نسخه ای از لاگ های ثبت شده را دریافت کنید.

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

به خاطر داشته باشید که cPanel داده های مربوط به ۲۴ ساعت اخیر را ذخیره می کند اما شما میتوانید قابلیت آرشیو ماهانه یا بیشتر را فعال کنید تا بتوانید داده ها را برای مدت زمان بیشتری ذخیره کنید. معمولا ۳۰۰ لاگ اخیر در بخش مربوطه ثبت می شود.

برای فعال کردن حالت آرشیو، تیک گزینه Archive log files to your home directory after the system processes statistics. The system currently processes logs every 24 hours را زده و آن را ذخیره کنید. اگر میخواهید آرشیو ماه قبل مربوط به لاگ ها در هر ماه پاک شود، گزینه دوم را نیز تیک زده و ذخیره کنید. با اینکار حجمی که از فضای هاست شما اشغال می شود کاهش می یابد.

ذکر این نکته نیز مهم است که شاید لاگ های ثبت شده کافی نبوده و بازه زمانی مذکور را پوشش ندهند. از همین رو به محض اینکه سایت هک می شود، شما میبایست لاگ های خود را بررسی و تجزیه و تحلیل بکنید چرا که امکان حذف آنها وجود دارد. از همین رو بهتر است آنها را قبل از پاک شدن ذخیره کنید.

شناخت لاگ های ثبت شده

خطاها و لاگ های ثبت شده اغلب انبوهی از متون نامفهوم هستند اما به محض اینکه از چگونگی نمایش اطلاعات آگاهی پیدا کنید، درک خطاها و لاگ های مذکور چندان سخت نخواهد بود.

وقتی که به لاگ های ثبت شده نگاه می کنید، باید ساختار آنها را بشناسید:

  • تاریخ و زمان
  • نوع خطا
  • آیپی کاربر
  • توضیحات خطا
  • آدرس فایل یا برگه ای که درگیر بوده است
  • آدرسی که کاربر به آن مراجعه کرده است

با اینکه این حالت بخش زیادی از انواع لاگ ها را پوشش می دهد، اما خطا یا لاگ ثبت شده شما ممکن است متفاوت باشد از همین رو بهتر است مستندات مربوط به هاست خود را از شرکت ارائه دهنده دریافت کنید. برای بخش Access logs نیز به صورت ذیل است:

  • آیپی کاربر
  • تاریخ و زمان
  • شیوه و نسخه HTTP مورد استفاده
  • کد دریافتی HTTP
  • بایت های دریافتی
  • نرم افزار ارجاع دهده (مرورگر یا سیستم عامل کاربر)
  • کاربر یا سیستمی که به سایت شما دسترسی پیدا کرده است

داده هایی که ارزش پیدا کردن را دارند

وقتی که انبوهی از داده های موجود در یک لاگ را بررسی می کنید، اگر ندانید که به دنبال چه چیزی هستید، در نگاه اول همه آن داده ها به نظر چرت و پرت و بدرد نخور به نظر میرسند.

اگر متوجه شدید که کسی برای دسترسی به فایل هایی که یک کاربر عادی به آنها نیاز ندارد، تلاش کرده میبایست آیپی کاربر مذکور را یادداشت کنید. هکرها معمولا در تلاش برای دسترسی و دریافت فایل های سایت شما نظیر htaccess، install.php، wp-config.php و موارد مشابه هستند.

برای مثال نمونه زیر:

[Fri May 06 23:14:24.856758 2016] [core:error] [pid 27290] (13)Permission denied: [client 12.345.68.90:33106] AH00132: file permissions deny server access: /path/to/your-site/.htaccess

در خطای بالا، درخواست کاربر برای دسترسی به فایلی که دسترسی آن را نداشته، رد شده است. اگر آیپی را نمیشناسید و میدانید که آیپی خودتان نیست، قطعا باید این هشدار را جدی گرفته و ایپی مربوطه را یادداشت کنید.

اگر نمیدانید آیپی خودتان چیست، کافی است از گوگل کمک گرفته و عبارت “what is my IP address” را گوگل کنید.

وقتی که خطاهای مشابه خطای مذکور را دیدید، بهتر است در Access logs به دنبال خطاهای مشابه منتهی را کد HTTP 200 باشید چرا که این کد به معنی تایید شدن درخواست کاربر برای دسترسی به فایل بوده است.

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


۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:03 -0700] "GET /wp-admin/network/ HTTP/1.1" 302 - "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:04 -0700] "GET /wp-login.php?redirect_to=http%3A%2F%2Fyour-site.com%2Fwp-admin%2Fnetwork%2F&reauth=1 HTTP/1.1" 200 2564 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:06 -0700] "GET /wp-admin/load-styles.php?c=1&dir=ltr&load%5B%5D=dashicons,buttons,forms,l10n,login&ver=29ef489256bcba8815b5864843de10bb HTTP/1.1" 200 38435 "http://your-site.com/wp-login.php?redirect_to=http%3A%2F%2Fwpwringer.com%2Fwp-admin%2Fnetwork%2F&reauth=1" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:07 -0700] "GET /wp-admin/images/wordpress-logo.svg?ver=20131107 HTTP/1.1" 200 1521 "http://your-site.com/wp-admin/load-styles.php?c=1&dir=ltr&load%5B%5D=dashicons,buttons,forms,l10n,login&ver=29ef489256bcba8815b5864843de10bb" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:09 -0700] "GET /favicon.ico HTTP/1.1" 200 - "http://your-site.com/wp-login.php?redirect_to=http%3A%2F%2Fwpwringer.com%2Fwp-admin%2Fnetwork%2F&reauth=1" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:16 -0700] "GET /wp-includes/js/thickbox/loadingAnimation.gif HTTP/1.1" 200 15238 "http://your-site.com/wp-admin/network/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:16 -0700] "GET /wp-admin/admin-ajax.php?action=dashboard-widgets&widget=dashboard_primary&pagenow=dashboard-network HTTP/1.1" 200 1744 "http://your-site.com/wp-admin/network/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:14 -0700] "GET /wp-admin/load-styles.php?c=1&dir=ltr&load%5B%5D=dashicons,admin-bar,wp-pointer,common,forms,admin-menu,dashboard,list-tables,edit,revisions,media,themes,about,nav-menus,widgets&load%5B%5D=,site-icon,l10n,buttons,wp-auth-check&ver=29ef489256bcba8815b5864843de10bb HTTP/1.1" 200 90768 "http://your-site.com/wp-admin/network/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:15 -0700] "GET /wp-admin/load-scripts.php?c=1&load%5B%5D=hoverIntent,common,admin-bar,jquery-ui-widget,jquery-ui-position,wp-pointer,wp-ajax-response,jquery-color,wp-lists,quicktags,jqu&load%5B%5D=ery-query,admin-comments,jquery-ui-core,jquery-ui-mouse,jquery-ui-sortable,postbox,dashboard,thickbox,plugin-install,svg-painter&load%5B%5D=,heartbeat,wp-auth-check&ver=29ef489256bcba8815b5864843de10bb HTTP/1.1" 200 51768 "http://your-site.com/wp-admin/network/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:30 -0700] "GET /wp-admin/network/plugin-editor.php HTTP/1.1" 200 38208 "http://your-site.com/wp-admin/network/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
۱۲٫۳۴۵٫۶۷۸٫۹۱۰ - - [۱۵/May/2016:15:15:32 -0700] "GET /wp-admin/load-scripts.php?c=1&load%5B%5D=hoverIntent,common,admin-bar,jquery-ui-widget,jquery-ui-position,wp-pointer,svg-painter,heartbeat,wp-auth-check&ver=29ef489256bcba8815b5864843de10bb HTTP/1.1" 200 17875 "http://your-site.com/wp-admin/network/plugin-editor.php" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"

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

نمونه ساده کد بالا نشان می دهد که بازدید کننده ای که آدرس سایت را به همراه عبارت /wp-admin/network وارد کرده است. این درخواست موفقیت آمیز بوده است و وی به برگه ورود به سایت منتقل شده است.

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

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

اگر در لاگ سایت خود با تکرار درخواست های مربوط به برگه فراموشی رمز عبور مواجه شدید، هکر را پیدا کرده و وی با استفاده از brute force attack وارد سایت شما شده اند.

انبوهی از تلاش های صورت گرفته برای یک ورود موفقیت آمیز به سایت را میتوانید از طریق کد خطای HTTP که معمولا جز خانواده کد ۴۰۰ است پیدا کنید.برخی از این کد خطاهای رایج عبارتند از:

  • ۴۰۰ : نشان دهنده این است که کاربر درخواست نامعتبر را ارسال کرده است
  • ۴۰۱ : ناشی از مشاهده برگه ای است که نیازمند سطح دسترسی خاصی بوده و به علت فقدان دسترسی یا نامعتبر بودن آن با خطا مواجه شده است
  • ۴۰۳ : مشابه خطای ۴۰۱، با این تفاوت که شاید درخواست کاربر معتبر باشد اما سرور تصمیم گرفته امکان دسترسی را فراهم نکند
  • ۴۲۹ : اگر افزونه ای برای شمارش امتیازات نصب کرده باشید، کاربران معمولی مجاز هستند تا برای دفعات مشخصی شرکت کنند. این خطا معمولا برای کاربران عادی اتفاق نمی افتد بلکه نشان دهنده این است که هکری در حال استفاده از یک بات است.

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

سخت ترین بخش ماجرا اینجاست که شما باید انبوهی از لاگ های ثبت شده کاربران معمولی و مدیران سایت را بررسی کنید تا بتوانید آن چیزی را که باید، پیدا کنید.

 

اتوماسیون اشکال یابی

افزونه های زیادی وجود دارد که سایت شما را رصد کرده و به محض اینکه هکری برای ورود به سایت شما تلاش کنند به شما هشدار می دهند. افزونه هایی نظیر Wordfence و iThemes Security نمونه هایی از چنین افزونه هایی هستند. این افزونه ها، امکانات زیادی را به کاربران ارائه می دهند تا بتوانند از ورود هکرها جلوگیری کنند اما ممکن است برای کاربران تازه وارد گیج کننده باشد.

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

اگر هم به دنبال یادگیری چگونگی کار با این افزونه ها هستید، میتوانید آموزش کار با افزونه Wordfence را مطالعه کنید.

 

حفظ امنیت سایت

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

 

منبع: Help, I’ve Been Hacked! How to Troubleshoot and Fix a WordPress Site

مطالب مرتبط با این نوشته

آموزش رفع خطای Failed To Load Resource در وردپرس

آموزش رفع خطای Failed To Load Resource در وردپرس

تا به حال با خطای “Failed To Load Resource” در ابزار inspect elements مرورگر خود مواجه شده اید؟ مشکلی که برای بسیاری از کاربران وردپرس وجود دارد این است که چه فایلی به خوبی بارگذاری…

ارسال دیدگاه

آدرس ایمیل شما منتشر نخواهد شد. فیلد های ضروری با * مشخص شده است.

سیستم آپدیت خودکار محصولات نوین وردپرس راه اندازی شد…
در این باره بیشتر بخوانید!