ثبت سفارش آنلاین به‌زودی فعال می‌شود. تا آن موقع برای سفارش با ما تماس بگیرید.Online ordering is coming soon. Until then, please contact us to order.تماس با ماContact us
JolfaCLOUD

مرکز آموزش / هاست و cPanel

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

وب‌شل‌ها چطور وارد هاست می‌شوند، دستورات grep و find برای کشف بدافزارها، پاک‌سازی خودکار با Maldet و بستن دسترسی اجرای اسکریپت در پوشه آپلود.

۱۰ دقیقه مطالعه · به‌روزرسانی آبان ۱۴۰۵

This guide is available in Persian for now. Switch to FA to read it.

وب‌شل (Web Shell) یک اسکریپت مخرب کوچک است که مهاجم پس از سوءاستفاده از باگ یک افزونه، قالب نال‌شده یا فرم آپلود آسیب‌پذیر، روی هاست بارگذاری می‌کند. این اسکریپت یک پنل مدیریت مخفی به هکر می‌دهد تا فایل‌ها را بخواند، پایگاه داده را بدزدد یا هاست شما را به عضوی از بات‌نت تبدیل کند. در این راهنما روش ردیابی و ریشه‌کن کردن آن را مرور می‌کنیم.

وب‌شل کجا پنهان می‌شود؟

مهاجمان معمولاً اسکریپت‌هایشان را در پوشه‌هایی می‌گذارند که دسترسی نوشتن دارند یا در دید نیستند:

  • پوشهٔ آپلودها (مثل wp-content/uploads/ در وردپرس) داخل پوشه‌های ماه‌ها و سال‌های قدیمی.
  • پوشه‌های موقت مثل /tmp یا wp-content/upgrade/.
  • به صورت تزریق در فایل‌های قانونی سیستم مثل index.php، wp-config.php یا wp-blog-header.php.
  • تغییر نام به فایل‌های فریبنده مثل class-wp-cache.php یا backup-temp.php.

دستورات ترمینال برای ردیابی فوری

اگر دسترسی SSH یا ترمینال cPanel دارید، با این دستورات فایل‌های مشکوک را شکار کنید:

۱. پیدا کردن فایل‌های PHP در پوشهٔ آپلود

در یک ساختار استاندارد، پوشهٔ uploads فقط باید شامل عکس، ویدیو یا فایل‌های مستندات باشد و هیچ فایل PHP قانونی نباید آنجا زندگی کند:

bash
find /path/to/public_html/wp-content/uploads/ -type f -name "*.php*"

۲. جست‌وجوی توابع خطرناک و کدهای مبهم‌سازی‌شده (Obfuscated)

وب‌شل‌ها معمولاً کدهایشان را با Base64 یا توابع اجرای دستورات سیستمی پنهان می‌کنند:

bash
grep -rEi "(eval\s*\(|base64_decode\s*\(|gzinflate\s*\(|shell_exec\s*\(|passthru\s*\()" \
    --include="*.php" /path/to/public_html/wp-content/

۳. پیدا کردن فایل‌هایی که اخیراً دست‌کاری شده‌اند

اگر سایت امروز به هم ریخته، فایل‌های PHP تغییریافته در ۲ روز گذشته را پیدا کنید:

bash
find /path/to/public_html/ -type f -name "*.php" -mtime -2 -ls

اسکن اتوماتیک با Maldet و ClamAV

ابزار LMD (Linux Malware Detect) یکی از پویشگرهای متن‌باز شناخته‌شده برای سرورهای وب است. نصبش دسترسی root می‌خواهد، پس روی سرور مجازی یا اختصاصی خودتان کار می‌کند؛ روی هاست اشتراکی cPanel از اسکنر خود پنل (اگر ارائه‌دهنده گذاشته باشد) استفاده کنید یا از پشتیبانی هاست اسکن بخواهید:

bash
# نصب و به‌روزرسانی الگوهای ویروس
cd /tmp && curl -O https://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xzf maldetect-current.tar.gz && cd maldetect-*
sudo ./install.sh
sudo maldet --update-signatures

# اسکن کامل پوشه وب‌سایت
maldet -a /var/www/html/
# مشاهده گزارش نتایج
maldet --report

بستن راه برگشت: ممنوعیت اجرای PHP در پوشه آپلود

حتی اگر هکر باز هم بتواند فایلی در پوشهٔ آپلودها بارگذاری کند، با قرار دادن یک فایل .htaccess داخل پوشهٔ uploads مانع اجرای آن در وب‌سرور شوید:

apache
# در فایل wp-content/uploads/.htaccess (Apache 2.4 و LiteSpeed)
<FilesMatch "\.(?:php[0-9]?|phtml|phar)$">
    Require all denied
</FilesMatch>

در وب‌سرور Nginx نیز این محدودیت را در بلوک سرور قرار دهید:

nginx
location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}

تنظیم پرمیشن‌های استاندارد

فایل‌های هاست هرگز نباید با پرمیشن 777 اجرا شوند. مجوزهای استاندارد را بازیابی کنید:

bash
# همهٔ پوشه‌ها 755
find /var/www/html -type d -exec chmod 755 {} \;

# همهٔ فایل‌ها 644
find /var/www/html -type f -exec chmod 644 {} \;

# فایل حساس تنظیمات دیتابیس محدودتر باشد (اگر سایت خطا داد، 640 بگذارید)
chmod 600 /var/www/html/wp-config.php
هاست لینوکس با بکاپ خودکار؛ بدون دردسر نگهداری سروردیدن پلن‌های هاست

منابع

  1. مستندات امنیتی OWASP: شناسایی و مقابله با Web Shell owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
  2. مخزن رسمی Linux Malware Detect (Maldet) github.com/rfxn/linux-malware-detect
  3. راهنمای رسمی وردپرس: پاک‌سازی سایت هک‌شده (FAQ My Site Was Hacked) wordpress.org/documentation/article/faq-my-site-was-hacked