اگر حداقل از یکی از افزونههای امنیتی وردپرس استفاده نمیکنید و سایت وردپرسی شما نیز هک شده است، این امر خیلی دور از ذهن نیست. چرا که این افزونهها جلوی حملات مخرب بد افزارها را میگیرند و هک شدن سایت وردپرسی معمولا زمانی رخ میدهد که شما کاملا بیتوجه و بی احتیاط هستید.
چندی پیش که روی یکی از سایتهای وردپرسی که هک شده بود، کار میکردیم، متوجه شدیم که یکی از اسکریپتهای سایت اقدام به ساخت آدرس های جعلی در وردپرس کرده که در نتیجه آن افراد به لینکهای خارجی منتقل میشدند. تمامی این لینکها مربوط به سایتهای دیگری بود و جالب است که این اسکریپت بیش از 2000 لینک مرتبط با آن سایتها را در سایت وردپرسی مذکور قرار داده بود که به آن هک شدن وردپرس با URL injection میگویند.
هک شدن وردپرس با URL injection
این فرآیند چگونه شکل میگیرد؟ مگر میشود با ورود آدرسهای خارجی هک اتفاق بیفتد؟ در این مقاله این موارد رو برای شما مشخص میکنیم. با ما همراه باشید.
URL injection دقیقا چیست؟
این بدین معنی است که هکر در سایت شما صفحاتی ساخته که معمولا شامل کلمات و لینکهای اسپم است. بعضی اوقات این صفحات جدید شامل کدهایی هستند که کارهای مخصوصی انجام میدهند. به عنوان مثال کاربران، سایت شما را به سایتهای دیگر منتقل میکنند یا به وب سرور شما صدمه میزنند و اینجاست که میگوییم هک شدن وردپرس با URL injection اتفاق افتاده است.
هکرها معمولا این تغییرات را از راههای زیر انجام میدهند:
- داشتن دسترسی به یکی از پوشههای موجود در سرور یا هاست؛ به عنوان مثال ممکن است به یکی از پوشههای هاست خود بصورت کاملا ناخواسته دسترسی کاربر را دادهاید.
- سوء استفاده از باگهای امنیتی وردپرس؛ البته منظور سایتهایی است که وردپرس را آپدیت نکردهاند و هنوز از نسخههای قدیمی وردپرس استفاده میکنند که دارای باگهای امنیتی است. زیرا وردپرس به خودی خود سیستم امنی است.
- هک کردن افزونههای third-party که در سایت خود نصب کردهاید؛ مثل افزونههای شمارش تعداد بازدید سایت.
چگونه متوجه وجود این اسپم شویم؟
با بررسی حساب Google Search Console خود متوجه شدیم تعداد صفحات ایندکس شده به طور قابل توجهی افزایش یافته است. این اولین نشانهای از ساخت آدرس های جعلی در وردپرس بود که نشان میداد جایی از کار ایراد دارد.
همچنین قسمت پیامهای Search Console را نیز بررسی کردیم اما چیزی مشاهده نشد و عجیب به نظر میرسید. در این حالت مثلا باید پیام “سایت شما ممکن است هک شده باشد” را دریافت میکردیم.
سپس با جستجو کردن صفحات ایندکس شده در گوگل با استفاده از عبارت site:yourwebsite.com متوجه شدیم، تعدادی صفحه با داشتن ساخت آدرس های جعلی در وردپرس اضافه شده است. تمامی لینکهای اسپم، دارای عبارتی از سایتهای خارجی بودند؛ به همین خاطر تمامی لینکهای با عبارت مذکور را در گوگل جستجو کردیم و نتیجه زیر حاصل شد(برای این کار کلمه مورد نظر را به همراه site:yoursite.com در گوگل جستجو کنید. به عنوان مثال site:yoursite.com :dating
بیش از 2000 نتیجه مربوط به همان لینکها پیدا کردیم که نشان میداد مشکل بزرگی وجود دارد.
چگونه مشکل ساخت آدرس های جعلی در وردپرس را حل کردیم؟
اولین کاری که انجام دادیم، حذف اسکریپت مخرب بود که این لینکها را ایجاد کرده بود. چندین افزونه هستند که اسپمها را شناسایی و حذف میکنند؛ افزونههای محبوبی مثل WP Spam Shield، WordFence و Sucuri.
ما از افزونه WordFence استفاده کردیم زیرا میدانیم عملکرد خوبی دارد.
پاک کردن اسکریپت مخرب از روی سرور
- ابتدا افزونه مذکور را نصب کنید. میتوانید راهنمای استفاده از افزونه Wordfence را در همیار وردپرس بخوانید.
- سایت خود را اسکن کنید و تغییرات فایلها را بررسی نمایید.
- راههای بیشتری وجود دارد برای اینکه بتوانید این کار را با استفاده از خود سرور انجام دهید. اما ترجیح بر این است که با کمک افزونه اینکار انجام شود.
- سایت را اسکن کردیم و نتیجه زیر بدست آمد. با استناد بر گفتههای پیام زیر و نظر توسعه دهنده سایت، به این نتیجه رسیدیم که این فایل متعلق به ما نیست و ما هم آن را حذف کردیم.
- با بررسی ساخت آدرس های جعلی در وردپرس، با استفاده از نتایج جستجوی گوگل، بررسی کردیم که آیا این URL ها هنوز هم به این سایتهای اسپم منتقل میشوند یا خیر. اگر صفحه 404 باز شود مشخص میشود که بد افزار از سرور پاک شده است و گوگل نیز دفعه بعدی که خزندههای خود را به سایت شما فرستاد، متوجه خواهد شد که این صفحه وجود ندارد و آن را ایندکس نخواهد کرد.
- ایمیل خود را در افزونه امنیتی وارد کردیم تا هرگونه مشکل و تغییری را در آینده به اطلاع ما برساند.
پاک کردن اسپم از ایندکس گوگل
میدانیم که اگر این لینکهای اسپم به صفحات 404 منتقل شوند، گوگل نیز باید متوجه عدم وجود این صفحات شود و آنها را از لیست صفحات ایندکس حذف کند. اما چون بیش از 2000 عدد از این لینکها وجود دارد و سایت هر روز ایندکس میشود، این فرایند ممکن است یک ماه به طول انجامد.
ما میخواستیم این فرایند را سرعت ببخشیم و هر چه سریعتر این لینکهای اسپم و صفحات 404 را از لیست نتایج جستجوی سایت خود برداریم. بدین منظور 2 راه وجود دارد:
راه اول (آهسته): ممکن است شما هم به فکر استفاده از ابزار Remove URLs در Google Search Console باشید اما نه تنها حذف این لینکها به اندازه ایندکس شدن آنها زمان بر است، بلکه گوگل آنها را به صورت موقتی پاک میکند (90 روز). و تا این زمان هک شدن وردپرس با URL injection ادامه دارد. اما راهحل بعدی بهتر به نظر می رسد.
راه دوم (سریع):
- همه ی URL های اسپم را از نتایج گوگل دانلود کنید.
- اگر نتیجههای اسپم زیادی دارید، میتوانید افزونه گوگل کروم به نام Infinite Scroll add-on را نصب کنید. این افزونه به شما اجازه میدهد تا با یک کلیک به صفحه آخر نتایج بروید تا بتوانید تمامی نتیجههای گوگل را مشاهده کنید.
- میتوانید از افزونه Link Klipper نیز برای دانلود نتایج سایت در گوگل استفاده کنید. قطعا این راه خیلی راحت تر از کپی کردن تک تک نتایج است.
- کلمهای که در صفحات اسپم شده تکرار شده است را پیدا کنید و آن را جلوی site:yourwebsite.com قرار دهید و عبارت را در گوگل جستجو کنید. مثل عبارت site:yourwebsite.com dating
- به نتایج انتهایی بروید.
- هنگامی که تمامی نتیجهها بارگذاری شدند، راست کلیک کنید و Link Klipper را انتخاب کنید و روی Extract all links کلیک کنید. در این حالت یک فایل اکسل ساخته میشود.
- فایل اکسل را باز کنید و نتایج را براساس a to z مرتب کنید. سپس آن لینکهایی که مربوط به سایت شما است و لینک سایت شما در آن قرار دارد را کپی کنید. لینکهای دیگر را نادیده بگیرید.
- شما با کمک افزونه yoast seo نیز میتوانید نقشه سایت خود را کامل بسازید.
- یک نام مشخص برای فایل XML خود بگذارید. حال فایل را در روت سایت خود (در پوشه public_html) آپلود کنید تا آدرس دسترسی به آن چیزی شبیه به website.com/sitemap-name.xml باشد.
- حال به Google Search Console بروید و از قسمت crawl و sitemaps، sitemap جدید را به گوگل معرفی کنید.
- صفحه را دوباره باز کنید؛ میبینید که وضعیت sitemap به حالت submitted در میآید.
- اگر بیش از 1000 آدرس های جعلی در وردپرس دارید، بعید است که بتوانید همه آنها را در یک اقدام دانلود کنید. پس مجبورید این مراحل را برای بقیه لینکها در روز بعدی انجام دهید.
- لینکهای اسپم را از نتایج جستجوی گوگل دانلود کنید و هر بار آن را به همان فایل اکسل اول اضافه کنید.
- هر بار که لینک جدید اضافه میکنید، روی دکمه Remove duplicates در اکسل کلیک کنید تا جایی که تعداد لینکها با آدرس های جعلی در وردپرس موجود در نتایج گوگل برابر شود.
- فایل sitemap جدید را در گوگل دوباره ثبت کنید.
حذف اسپمها را رصد کنید
از Google Search Console برای رصد فرآیند حذف شدن اسپمها استفاده کنید:
- تعداد صفحات ایندکس شده از sitemap اسپم را بررسی کنید که تعداد آن رفته رفته با بررسی سایت شما توسط خزندهها افزایش مییابد.
- تعداد صفحات 404 که مربوط به همان صفحات اسپم هستند را بررسی کنید. اگر بین آنها ارتباط و همبستگی مشاهده کردید، به این معنی است که کار به خوبی پیش میرود.
- از همان عبارت site:website.com در گوگل استفاده کنید تا تعداد صفحات ایندکس شده را ببینید.
به فکر امنیت سایت خود باشید
در زیر به مواردی اشاره میکنیم که به عنوان یک مدیر سایت باید آنها را رعایت کنید تا سایت خود را نسبت به هک شدن وردپرس با URL injection و اینگونه حملات محافظت کنید. استفاده از افزونه WordFence و افزونههای مشابه در پیشگیری از این حملات مفید هستند.
- اطمینان حاصل کنید افزونه امنیتی وردپرس شما هر روز سایت را اسکن کرده و مواردی که در آنها هکر به صورت مکرر اقدام به ورود ناموفق در سایت میکند را بلاک میکند.
- ایمیل خود را در افزونه امنیتی وارد کنید تا هرگونه هشدار و فعالیتی به سرعت به گوش شما برسد.
- اگر با استفاده از گزارشهای افزونه امنیتی متوجه شدید که تعداد درخواستها برای ورود به ناحیه مدیریت زیاد شده است، آدرس ورود به سایت را تغییر دهید. بهتر است اسمی خاص انتخاب کنید تا به ذهن هکر خطور نکند.
- اطمینان حاصل کنید که به ایمیلی که در Search Console گوگل ثبت کردهاید دسترسی دارید و میتوانید از طریق آن هشدارهای مربوط به خزنده و اسپم را دریافت کنید. در این صورت لازم نیست دائم به پنل مدیریتی این سرویس گوگل وارد شوید.
- بخش messages در Search Console که مربوط به پیامهای سیستم است را حتما بررسی کنید.
- همیشه صفحات ایندکس شده را بررسی کنید تا ببینید صفحه بیگانهای وجود نداشته باشد.
- Crawl Errors را در Search Console بررسی کنید و به نتایجی بیگانه با ارور 400 یا 500 دقت کنید.
- sitemap را چک کنید تا مطمئن شوید اختلافی بین صفحاتی که توسط خزندهها بررسی شدهاند و صفحاتی که ایندکس شدهاند وجود ندارد.
نتیجه کار
در این قسمت بخشی از نتایج کار را در راستای مقابله با هک شدن وردپرس با URL injection مشاهده میکنید:
ایندکس اسپمها
میبینید که ایندکس لینکهای اسپم چگونه افت داشته و به حالت عادی برگشته است.
ایندکس Sitemap اسپم
URL ها به صورت روزانه در روز اول مشکل به sitemap اضافه شدند و ما اجازه دادیم تا توسط خزندهها بررسی شوند که به صفحات 404 ختم میشدند تا در نهایت گوگل آنها را حذف کند.
Spam Crawl Errors
در اینجا شاهد افزایش صفحات 404 هستیم که به خاطر استفاده از sitemap جدید است. شما میتوانید بعدا آنها را با استفاده از علامت marking as fixed پاکسازی کنید.
چقدر طول کشید تا مشکل حل شود؟
در این قسمت اطلاعات دریافتی براساس سایتی که 800 صفحه حقیقی و 2303 آدرس های جعلی در وردپرس را نشان دادهایم. در قسمت بالایی تاریخ و در قسمت پایینی تعداد صفحات ایندکس شده جعلی در گوگل را مشاهده می کنید. همانطور که مشخص است مشکل پس از 1 ماه به طور کامل حل شده است.
نتیجه نهایی
هیچ کس از هک شدن سایت خود خوشحال نخواهد شد و قطعا همه وبمستران به دنبال راهی برای افزایش امنیت سایت خود هستند. در این مقاله به بررسی یکی از روشهای هک شدن وردپرس با URL injection است به تفصیل پرداختیم و با روش حل URL injection آشنا شدیم.
منابع: