یکی از رایجترین حملات امنیتی در سرور‌های اشتراکی (Shared host) که حتی در برخی شرکت‌های بزرگ هاستینگ هم مشاهده کرده‌ام، استفاده از نحوه مدیریت کردن symlink ها در آپاچی است.

روش کار به صورت خلاصه به شرح زیر است:

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

گام دوم: اسکریپتی روی سرور اجرا می‌کند که یک سلسله از symlink ها به آدرس‌های محتمل فایل‌های config و settings ایجاد می‌کند.

rastasoft-wordpress-wp-config.txt --> /home/rastasoft/public_html/wp-config.php
rastasoft-drupal-settings.txt --> /home/rastasoft/public_html/sites/default/settings.php
rastasoft-unknown.txt --> /home/rastasoft/public_html/config.php
...

پس از اجرای این اسکریپت هکر می‌داند هر اکانت روی این هاست اشتراکی از چه نرم‌افزاری استفاده می‌کند و همچنین اطلاعات settings شامل رمز پایگاه داده، دانه درهم‌ریختگی (hash salt) و ... را می‌داند.

گام سوم: هکر از طریق مشاهده فایل از طریق مرورگر در آدرسی که خودش می‌داند (مثال: http://rastasoft.ir/KillMe/rastasoft-drupal-settings.txt) اطلاعات را بدست می‌آورد.

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

  • آپلود فایل index روی ریشه سرور و نمایش نام خود به عنوان هک کننده سایت
  • اجرای دستورات روی پایگاه داده و تخریب اطلاعات
  • ایجاد شناسه مدیر و سرقت یا تخریب اطلاعات از طریق کنترل پنل مدیریت سایت
  • حذف کامل سایت و اطلاعات
  • بارگزاری اسکریپت‌هایی با عنوان Backdoored PHP Web Shells که دسترسی زیادی به سرور را در اختیار هکر قرار می‌دهد. نمونه‌هایی از این اسکریپ‌های هک (مانند: C99 و Fx29Shell و Tiga-Lima Shell و The N3tShell و Tryagshell و A C102 shell و Locus7s shell و g00nshell و enitan AKA virus و A VBScript) را از قسمت لینک‌های به‌درد‌بخور در انتهای مطلب مشاهده کنید.

مقابله با هک مربوط به symlink در Apache

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

گام اول: راه حل‌هایی که در این مطلب (Apache symlink security issue fix/patch) آمده است را روی سرور خود اجرا کنید. در این روش دسترسی فایل‌ها به 600 تغییر می‌کند تا قابل خواندن توسط user دیگر در سیستم نباشند.

گام دوم: (برای کاربران cPanel/WHM)فعال کردن Symlink Race Condition Protection در EasyApache. طبق مستندات cPanel در صورتی که گزینه‌های SymLinksIfOwnerMatch و FollowSymLinks هر دو فعال باشند. سرور در برابر این حمله آسیب پذیر است. حتی در صورت غیر فعال بودن این گزینه ها، هکر می‌تواند از طریق فایل htaccess آنها را فعال کند.

گام سوم: پیدا کردن اکانت‌های آسیب دیده و حذف فایل‌های backdoor و فایل‌های دزدیده شده از اکانت‌های دیگر. برای این کار با استفاده از دستور زیر تمامی symlink های ساخته شده در دایرکتوری home را پیدا کرده و آنها را بررسی کنید.

$ find /home/*/public_html* -type l

در یک هاست اشتراکی دلیلی وجود ندارد که کاربری symlink بسازد. لذا می‌توان آنها را کلا حذف کرد.

$ find /home/*/public_html* -type l | xargs rm

گام چهارم: بازیابی فایل‌های از دست رفته از نسخه‌های backup

گام پنجم: تغییر نام کاربری و رمزهای مربوط به اکانت‌ها مانند رمز cPanel، رمز MySQL root، رمز‌های مدیریت سایت‌ها، رمزهای whm و ...

طبقه بندی: 
برچسب ها: 

افزودن نظر جدید