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

اگر شما هم از هک شدن مداوم سایت های وردپرسی خود خسته شدید و هر تغییری که اعمال می کنید بعد چند وقت مجدد این اتفاق رخ می دهد بهتر است قبل از انجام هر کاری ابتدا علت را بررسی کنید که چرا وب سایت وردپرسی شما هک می شود.
وردپرس به عنوان محبوب ترین سیستم مدیریت محتوای دنیا نزدیک به 40 درصد سایت های دنیا را ساخته است!
تمام!!!
همین 40 درصد نشان می دهد تا چه اندازه وردپرس رایج هست و هرچیزی که به صورت گسترده مورد استفاده قرار بگیرد طبیعی هست هدف اول هکر ها قرار می گیرد!
یک هکر ابتدا فقط سعی می کند اطلاعات زیادی در خصوص سایت و سیستم مدیریت محتوای استفاده شده در سایت شما به دست بیاورد و وقتی که توانست یک باگ را پیدا کند با ابزار ها و روش های خاصی به سایت شما آسیب میزند.
اما چرا یک هکر سایت وردپرسی را هک می کند؟ علت های گوناگونی می تواند داشته باشد! بعضی از هکرها با قرار دادن لینک های آلوده در سایت از کاربران می خواهند یک نرم افزار جعلی را دانلود و نصب کنند و بعد نصب اطلاعات حساس مربوط به سیستم آن ها را برای مهاجم ارسال می کند.
در بعضی موارد هک کردن با هدف ریدایرکت کردن سایت مورد حمله به سایت های مورد نظر هکر هست که ورودی و بازدید بالایی پیدا کنند.
همچنین قرار دادن بک لینک و فیشینگ موارد دیگری هستند که در سایت های هک شده به دفعات دیده شده است.
هک شدن یک وبسایت وردپرسی می تواند منجر به از بین رفتن داده ها، افت رتبه سئو، انتشار محتوای اسپم، سرقت اطلاعات کاربران و حتی از دست رفتن اعتبار تجاری شود.
برگردیم به سراغ سوال اصلی خود!
چرا سایت وردپرسی من هک می شود؟
اگر روزی سایت خود را باز کردید و با خطا رو به رو شدید و یا سایت لود نشد یا به سایت دیگری ریدایرکت شدید! و یا حتی در گوگل مشاهده کردید سایتی که ایندکس شده دیگر سایت شما نیست و سایت دیگری روی دامنه شما نمایش داده می شود باید اطمینان حاصل کنید که هک شدید!!!
علت های زیادی وجود دارد که یک وب سایت وردپرسی هک می شود! ما در این مقاله به چند مورد آن اشاره خواهیم کرد و راهکار هایی برای حل مشکل خدمت شما ارائه خواهیم کرد.
1- استفاده از مسیر پیش فرض پیشخوان (wp-admin) با نام کاربری admin و پسورد ضعیف!
ترکیب این سه مورد یکی از رایج ترین علت های هک شدن سایت های وردپرسی می باشد!
اگر مسیر پیش فرض وردپرس wp-admin را تغییر نداده باشید و نام کاربری شما admin باشد و پسوردی هم که برای ورود به پیشخوان وردپرس دارید ساده باشد به سادگی در دام هکرها خواهید افتاد.
وقتی سایت شما چنین شرایطی دارد باید خود را برای هک شدن و مشکلاتی که قرار است رخ دهد آماده کنید!
یک هکر با Brute Force می تواند پسورد سیستم شما را پیدا کند و به سادگی به پیشخوان شما لاگین کند! حملات بروت فورس می تواند به wp-admin، کنترل پنل هاست، حساب های FTP، پایگاه داده SQL یا اکانت های ایمیل مرتبط با مدیر سایت وردپرسی، انجام گیرد.
یک هکر برای هک کردن وب سایت شما راه های مختلفی دارد اما هیچ وقت از نام پیش فرض admin استفاده نکنید نام admin کار را برای یک هکر به شدت ساده می کند!
حتما از ورود دو مرحله ای یا ارسال پیامک قبل از لاگین استفاده کنید تا کد برای شما ارسال شود در این صورت امکان لاگین به پیشخوان به شدت کاهش می یابد و حتی اگر شخصی نام کاربری و پسورد شما را هم بداند بدون کد پیامک شده امکان لاگین نخواهد داشت!
از افزونه های امنیتی در وردپرس استفاده کنید تا ای پی های مهاجمی که درخواست های بالایی برای لاگین به پیشخوان دارند را بلاک کند و اجازه باز شدن صفحه پیشخوان به آن ها را ندهد.
بنابراین تغییر مسیر پیش فرض از wp-admin به آدرس دیگر و تغییر نام admin به همراه یک پسورد قوی که شامل حروف کوچک, بزرگ, اعداد و کاراکتر خاص هست در کنار فایروال امنیتی وردپرس و ورود دو مرحله ای تا حد بسیار زیادی جلوی هک شدن سایت از طریق حملات بروت فورس به مسیر پیشخوان را خواهد گرفت.
2- سطح پرمیشن اشتباه فایل ها و پوشه ها:
یکی دیگر از علت های رایج هک شدن سایت های وردپرسی تنظیم اشتباه پرمیشن فایل ها و پوشه های وردپرس می باشد که به هکرها اجازه تغییرات به فایل ها را می دهد و می توانند به سادگی در فایل ها کدهای مخرب تزریق کنند و تغییرات مدنظر خود را اعمال کنند و سیستم را به دست بگیرند!
در سیستم های مبتنی بر لینوکس که اکثر سرور ها هم با همین سیستم عامل ها قدرت گرفته اند هر فایل و پوشه دارای مجوز های دسترسی خاصی می باشد که تعیین می کند چه کاربرانی می توانند آن را بخوانند Read , آن را تغییر دهند Write و یا اجرا کنند Execute
اگر این مجوزها اشتباه باشد در عمل شاید یک هکر کار خیلی سختی هم برای هک کردن وب سایت شما نداشته باشد.
بهطور پیشفرض، این پرمیشن ها برای تمام فایل های وردپرس باید روی 644 و پوشه ها 755 تنظیم شود، تا بتوانید از نفوذ به سایت وردپرسی جلوگیری کنید.
تنظیم پرمیشن هایی مانند 777 یعنی شما اجازه هر تغییری روی فایل ها را به هر شخصی خواهید داد و در عمل هک کردن سایت شما از چیزی که تصور می کنید ساده تر خواهد بود.
بنابراین بد نیست سریع وارد هاست خود شوید و پرمیشن فایل ها را بررسی کنید که به طور سهوی روی پرمیشن های اشتباه یا دسترسی آزاد نباشند که زمینه ای برای هک شدن وردپرس شما را فراهم کنند.
3- وردپرس قدیمی, قالب و افزونه های نال شده و دارای باگ!
وردپرس بخاطر استفاده حداکثری که در دنیا دارد و نگاه های زیادی که به خود معطوف کرده است همانطور که گفته شد هدف شماره یک هکرها می باشد و هرزگاهی باگی از آن شناسایی می شود بنابراین تیم توسعه آن به صورت مداوم بروزرسانی منتشر می کنند و اگر شما از این بروزرسانی ها استفاده نکنید ممکن است با یک باگ خیلی ساده وب سایت شما هک شود.!
هیچ وقت با نسخه های قدیمی وردپرس ادامه ندهید و اگر قالب یا افزونه خاصی با نسخه جدید سازگار نیست حتما به پشتیبان آن جهت بروزرسانی با نسخه جدید اطلاع دهید تا همگام با بروزرسانی هسته وردپرس جلو بروید تا باگ های احتمالی عاملی برای هک شدن وب سایت شما نشوند.
گاهی هم علت هک شدن را باید در قالب و افزونه های استفاده شده جستجو کرد! استفاده از قالب های قدیمی بدون آپدیت های جدید و افزونه های نال شده یا افزونه های کم استفاده ای که خیلی دیر آپدیت می شود می تواند ریسک هک شدن وب سایت را به شدت افزایش دهند!
اما یک نکته بسیار مهم است که بدانیم امنیت 100 درصد نیست! حتی اگر از قالب های بروز و افزونه های محبوب و پراستفاده هم استفاده می کنید که اتفاقا لایسنس هم دارند احتمال هک شدن از این طریق به صفر نمی رسد! بارها طی یکی دو سال گذشته شاهد آن بودیم افزونه های محبوبی مانند المنتور یا ووکامرس دارای باگ بودند و باعث هک شدن تعداد زیادی از سایت های وردپرسی شدند و در آپدیت های بعدی این باگ فیکس شد!
پس تنها راهکاری که در اختیار شما قرار دارد این است تا حد امکان از افزونه های نال شده و قالب های ضعیف استفاده نکنید و هرگز نباید افزونه ها یا قالب ها را از منابع غیرقابل اعتماد دانلود کنید.
همیشه بروزرسانی وردپرس, قالب و افزونه ها را سریعا انجام دهید تا ضریب احتمال هک شدن کاهش یابد!
4- آپلود فایل های آلوده یا اسکریپت های مخفی:
این مورد هم یکی از روش های رایجی هست که در هک شدن سایت وردپرسی نقش بسزایی دارد. در این روش یک هکر از ضعف های امنیتی سیستم استفاده می کند و یک فایل php را اجرا در سرور آپلود می کند که باعث می شود دسترسی سطح بالاتری را به دست بیاورد و سیستم را هک کند.
اما چطور یک هکر می تواند یک فایل آلوده یا اسکریپت مخفی را برای اجرا در سرور آپلود کند! در واقع پاسخ به این پرسش زیاد سخت نیست!
در این نوع حملات، مهاجم با سواستفاده از نقاط ضعف امنیتی در قالب ها، افزونه ها، یا حتی تنظیمات نادرست دسترسی ها، فایل هایی را در هاست بارگذاری می کند که حاوی کد های مخرب هستند.
این فایل ها می توانند کنترل سایت را در اختیار مهاجم قرار دهند یا بهعنوان درِ پشتی (Backdoor) برای نفوذ های بعدی عمل کنند.
اما این روش از چه طریقی اتفاق می افتد؟
الف- فرم های آپلود ناامن!
بسیاری از سایت های وردپرسی دارای فرم هایی هستند که به کاربران اجازه می دهند فایل آپلود کنند (مثلاً ارسال تصویر، رزومه یا مستندات). اگر در این فرم ها بررسی نوع فایل و MIME Type به درستی انجام نشود، مهاجم میتواند به جای یک تصویر، فایل PHP یا اسکریپت اجرایی بارگذاری کند.
و به سادگی با همین فایل php دسترسی سیستم را به دست بیاورد! حتما باید قسمت آپلود فایل از نظر امکان ارسال فایل های php مورد بررسی قرار بگیرد و تنظیمات نوع فایل به صورت جدی چک شود!
ب- آسیب پذیری در افزونه ها و قالب!
برخی افزونه ها مانند افزونه های مدیریت گالری یا فرم ساز ها ممکن است احراز هویت نداشته باشند یا با احراز هویت سطح پایین به یک هکر اجازه دهند فایل مورد نظر خود را روی هاست آپلود کنند.
بنابراین همیشه باید در استفاده از این افزونه ها نهایت دقت را داشت و افزونه های رسمی و بروز شده را در سایت مورد استفاده قرار داد.
پ- استفاده از فایل های کرک شده!
بعضا کاربران برای صرفه جویی در هزینه از قالب ها و افزونه های نال شده استفاده می کنند. این نسخه های غیررسمی اغلب حاوی کد های مخفی هستند که در ظاهر بیخطر به نظر میرسند اما در باطن مسیر نفوذ را برای هکر باز می کنند.
دقت داشته باشید هزینه ای که یک هک شدن وردپرس به شما تحمیل می کند بابت بازگردانی یا امن سازی سیستم به مراتب بیشتر از هزینه ای می باشد که برای خرید افزونه ها یا قالب قرار است صرف کنید!
ت- دسترسی مستقیم به ftp یا هاست!
اگر اطلاعات ورود به هاست یا ftp شما افشا شود یا با ذخیره سازی نامناسب دست یک هکر بیفتد دیگر نیاز نیست هیچکدام از روش های بالا را انجام دهد در واقع هکر به سادگی هر فایلی که بخواهد را در هر مسیر آپلود می کند تا هر زمان که خواست به سادگی به هاست شما دسترسی پیدا کند.
دقت داشته باشید نگهداری پسورد هاست و ftp بسیار مهم هست و هیچ یوزرنیم و پسورد را به طور کامل یادداشت نکنید و همیشه بخشی از آن را بخاطر بسپارید یا یک الگو برای به یاد آوردن پسورد داشته باشید که صد البته ساده نباشد!
5- جلوگیری دسترسی به فایل ها و پوشه های حساس وردپرس:
بعضی فایل ها و مسیر های وردپرس از اهمیت بالاتری برخوردار می باشند و به واسطه ذخیره داده های حساس باید از دسترس مهاجمین دور نگه داشته شود تا ریسک امنیتی کاهش یابد برای مثال فایل wp-config.php شامل اطلاعات حساسی مانند مشخصات دیتابیس و پیشوند جداول دیتابیس می باشد که باید به طور کامل امن نگه داشته شود.
یا مسیر پوشه wp-incloudes که شامل فایل های سیستمی هسته وردپرس هست نباید در مرورگر در دسترس باشد!
در ادامه لیستی از فایل های حساس و نحوه جلوگیری از آن را برای شما فراهم آوردیم.
الف- جلوگیری از دسترسی به فایل .htaccess:
فایل .htaccess معمولاً شامل داده های حساس امنیتی است، مثل: مسیر ها و فایل هایی که مخفی یا محافظت شده اند دستورات امنیتی (مثلاً جلوگیری از دسترسی به xmlrpc.php یا wp-config.php)
اگر کسی بتواند این فایل را در مرورگر باز کند مثلاً با وارد کردن https://example.com/.htaccess، میتواند ساختار امنیتی کل سایت شما را بفهمد و مسیر های مخفی یا فایل های مهم را پیدا کند.
برای بستن فقط کافی هست این کد را در .htaccess قرار دهید.
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
ب- جلوگیری از دسترسی به فایل wp-config.php
همانطور که گفته شد فایل wp-config.php به جرات مهمترین فایل یک سایت وردپرسی هست که نام دیتابیس ، یوزرنیم و پسورد دیتابیس را در خود ذخیره می کند که دسترسی به این مقادیر شما را با چالش های جدی بابت سرقت اطلاعات رو به رو خواهد کرد.
علاوه بر این مشخصات این فایل پیشوند جداول دیتابیس را هم در خود ذخیره کرده است که یک قدم هکر را برای تزریق کدهای sql به دیتابیس جلو می اندازد. بنابراین محافظت از این فایل از اهمیت بسیار بالایی برخوردار است.
برای جلوگیری از دسترسی به این فایل باید کد زیر را در .htaccess قرار دهید.
<files wp-config.php>
order allow,deny
deny from all
</files>
پ- بستن اجرای فایل php در مسیر پوشه آپلود:
بهتر است اجرای فایل php در مسیر آپلود خود را به طور کامل ببندید! این مسیر فقط شامل تصاویر و فایل های نمایشی هست و نیاز به اجرای فایل php ندارد که اگر ضعف امنیتی رخ داد و یک هکر توانست یک کد php را در مسیر آپلود بارگذاری کند نتواند آن را اجرا بگیرد!
برای بستن اجرای فایل php در مسیر wp-content/upload فایل .htaccess را در public_html باز کنید و کدهای زیر را داخل آن قرار دهید تا اجرای هر فایل php به هر شکلی در مسیر آپلود بسته شود
<Directory "/wp-content/uploads">
<FilesMatch "\.php$">
deny from all
</FilesMatch>
</Directory>
ت- جلوگیری از مشاهده فایل های نسخه وردپرس:
هر نسخه ای از وردپرس باگ ها و نقاط ضعف مختلفی دارد که وقتی فراگیر می شود از همان طریق مورد سواستفاده و حمله قرار می گیرد.
هکرها معمولاً با بررسی شماره نسخه، متوجه میشوند آیا سایت شما قدیمی است؟ و یا در نسخه شما آسیب پذیری شناختهشده ای وجود دارد؟ و اگر بله، میتوانند از همان حفره امنیتی سو استفاده کنند.
بنابراین با کد زیر بهتر است دسترسی به مشاهده نسخه و ورژن وردپرس خود را در .htaccess غیرفعال کنید.
<FilesMatch "(^readme\.html$|^license\.txt$)">
Order allow,deny
Deny from all
</FilesMatch>
ث- جلوگیری از دسترسی مستقیم به فایل wp-incloudes :
پوشه wp-includes شامل هسته کتابخانه ها و فایل های PHP مشترک وردپرس است. باز بودن مستقیم این مسیر میتواند اطلاعات ساختاری را فاش کند و در صورت وجود فایل های آسیبپذیر یا تنظیمات نادرست، هکرها را قادر کند تا از آنها سو استفاده کنند.
هیچگاه نباید فایل ها سیستمی به سادگی در مرورگر قابل مشاهده باشد گاهی اوقات با فراخوانی یک فایل ممکن است پاسخی برگردانده شود که به مهاجمین در شناسایی ضعف سیستم کمک کند!
برای بستن مسیر فقط است کد زیر را در .htaccess قرار دهید.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php$ - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
ج- غیرفعال کردن xmlrpc.php:
xmlrpc.php یک رابط ارتباطی API در وردپرس است که اجازه می دهد از راه دور با سایت تعامل کنید. همین مورد باعث می شود زمینه حملات مختلفی باشد و اگر شما در سایت خود app موبایل ندارید در واقع نیازی هم به این قابلیت ندارید و بهتر است با کد زیر در .htaccess آن را ببندید.
<Files xmlrpc.php>
Order allow,deny
Deny from all
</Files>
چ- جلوگیری از لیست شدن محتویات پوشه ها:
وقتی Directory Listing فعال باشد، اگر کسی آدرس یک پوشه بدون فایل index.php یا index.html را باز کند، سرور تمام فایل ها و زیر پوشه های آن را نمایش میدهد. مثال: https://example.com/wp-content/uploads/ ممکن است فهرستی از تصاویر، فایل ها یا حتی فایلهای حساس نشان داده شود.
مهاجم می فهمد چه فایل هایی و در کجا هستند.
حتی اگر مستقیم قابل اجرا نباشند، ممکن است اطلاعات مهمی در آن ها باشد.
ممکن است فایلهایی مثل backup.zip یا نسخههای قدیمی دیده شوند.
این کد را داخل .htaccess می توانید قرار دهید تا مسیر های داخلی دیگر لیست نشود.
Options -Indexes
با قرار دادن کد های بالا در فایل .htaccess تا حد خیلی زیادی جلوی دسترسی به فایل ها و پوشه های حساس را میگیرید.
دقت داشته باشید این ها بخشی از مواردی هست برای امنیت و جلوگیری از هک شدن وب سایت شما مورد استفاده می گیرد و سطح امنیت بالاتر نیازمند به تغییرات ترکیبی و نصب فایروال های خاص هم دارد.
6- استفاده از هاست ناامن:
هاست ها به عنوان بستری که اطلاعات سایت شما روی آن قرار می گیرد و تمام فایل ها و دیتابیس ها در داخل آن ذخیره می شود باید کاملا ایمن و اطمینان بخش باشد.
اگر هاستی که تهیه می کنید از نظر امنیت در رتبه خوبی دسته بندی نشود هرچقدر هم وردپرس خود را امن کنید باز هم احتمال نفوذ از سمت سرور وجود خواهد داشت.
اما عواملی که باعث می شود یک هاست از نظر کیفیت و امنیت قابل قبول باشد و یک هاست دیگر در وضعیت بدی قرار بگیرد را می توان به دسته های زیر تقسیم کرد.
الف- عدم ایزوله سازی صحیح:
یکی از مهمترین نکاتی که در تهیه هاست باید در نظر گرفته ایزوله سازی صحیح هاست های کاربران سرور می باشد تا هیچ تاثیری روی همدیگر نداشته باشند!
اگر این ایزوله سازی به درستی انجام نشود با هک شدن یک سایت بقیه سایت های روی سرور هم ممکن است تحت آسیب قرار بگیرند و بسیار اهمیت دارد تا هر کاربر در یک محیط کاملا مستقل به فعالیت بپردازد و مشکلات احتمالی نتواند باعث بروز مشکل در سایت های دیگر شود.
ب- نرم افزار های قدیمی و بروز نشده:
استفاده از نرم افزار های قدیمی و عدم بروزرسانی آن ها باعث می شود یک مهاجم باگ های نسخه های قدیمی را پیدا کند و از طریق آن نسبت به حملات اقدام کند.
همیشه باید هاستی که تهیه می کنید از سمت شرکت هاستینگ به صورت منظم بروزرسانی نرم افزاری مانند دیتابیس , php و وب سرور را دریافت کند تا اگر باگی هم منتشر شد سریعا فیکس شود.
پ- کانفیگ های امنیتی نادرست و ضعیف:
اگر هاست به صورت پیش فرض تنظیمات ضعیف امنیتی داشته باشد، مهاجم ها میتوانند به راحتی فایل ها و پوشه های سایت را مشاهده یا تغییر دهند. برای مثال، اجازه اجرای برنامه های غیر ضروری یا نمایش محتویات پوشه ها میتواند خطرناک باشد.
ت- نبود پشتیبانی امنیتی :
هاست های ضعیف معمولاً ابزار های محافظت مانند مانیتورینگ، اسکن امنیتی و حفاظت در برابر حملات را ارائه نمی دهند. این یعنی مهاجم ها میتوانند حملات خودکار و نفوذ به سایت را بدون مانع انجام دهند.
باید هاستی که تهیه می کنید مجهز به فایروال و آنتی ویروس های قدرتمند باشد تا به صورت مداوم سایت مورد اسکن قرار بگیرد و لایه های دفاعی خوبی در برابر مهاجمین قرار داده شود تا دسترسی به داده های حساس سایت یا هک وب سایت ساده نباشد!
ث- عدم بک آپ گیری صحیح و اصولی:
در کنار تمام موارد گفته شده یک هاست نامناسب بک آپ گیری درستی هم ندارد! این موضوع یکی از مهمترین بخش هایی هست که باید به آن توجه کنید.
بک آپ گیری منظم در چند نسخه باعث می شود وقتی سایت دچار مشکل شد بتوان به داده های سالم دسترسی پیدا کرده و اقدام به بازگردانی کنید.
دقت داشته باشید بک آپ گیری در هاست های با کیفیت در شرکت های معتبر کاملا رایگان می باشد و قبل از خرید هاست حتما نسبت به پرسش در مورد بک آپ گیری اقدام کنید.
نتیجه گیری:
هک شدن سایت های وردپرسی، پدیده ای شایع اما قابل پیشگیری است. همانطور که توضیح داده شد، دلایل متعددی میتواند باعث نفوذ مهاجمان به سایت شما شود؛ از جمله استفاده از نام کاربری و رمز عبور ضعیف، پرمیشن های نادرست فایل ها و پوشه ها، قالب ها و افزونه های قدیمی یا نال شده، بارگذاری فایل های آلوده و تنظیمات ناامن هاست.
هیچ یک از این عوامل به تنهایی همیشه باعث هک نمیشوند، اما ترکیب آنها میتواند مسیر نفوذ را برای مهاجم بسیار ساده کند. علاوه بر این، استفاده از هاست نامناسب یا ضعیف می تواند تمام اقدامات امنیتی شما را بی اثر کند؛ چرا که امنیت سرور، بروزرسانی نرم افزار ها، جداسازی صحیح کاربران و پشتیبانی امنیتی، پایه ای ترین لایه های حفاظت از سایت هستند.
امنیت سایت یک فرآیند مستمر است و نیازمند ترکیب چند لایه محافظتی است. رعایت نکات بالا، همراه با نصب فایروال و افزونه های امنیتی، میتواند احتمال نفوذ هکر ها را به حداقل برساند و امنیت، اعتماد کاربران و اعتبار وب سایت شما را حفظ کند.









