1 июня 2009 г.

Уязвимость (дырка) кода SAPE.

Весь месяц май один из моих сайтов постоянно ломали.

Через код сапы заливали шелл на сайт, а уже через него получали доступ к открытым паролям сайта.

Как ломали рассказывать не буду, но как побороть расскажу.

Если ваш сайт (ваша CMS) не может работать без отключенных глобальных переменных (register_globals = on) и если у вас стоит код вызова ссылок вида:

----------------
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'da3……3920');
}
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$sape = new SAPE_client();
----------------


То рекомендую его быстренько заменить на:

----------------

if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'da3......0');
}

require_once('/пропишите_путь_до_папки/создайте_свою папку/'._SAPE_USER.'/sape.php');
$o['host'] = 'домен_вашего_сайта';
$sape = new SAPE_client($o);
unset($o);
echo $sape->return_links();

----------------


и на всякий случай в корневой .htaccess вписать следующие строки:

deny from geocities.com
deny from sunggong.tv
deny from stormpages.com
deny from kyokushin.hu
deny from baidu.com
deny from abirdseyeviewof.com
deny from t35.com
deny from agicmountainfilms.com
deny from ozland.at.ua
deny from ripway.com
deny from uaedesign.com
deny from uuuq.com

И периодически посматривайте на свой error.log


ps: здесь http://forum.sape.ru/showthread.php?t=32218 я обратился в суппорт sape ... но ... остался не услышанным. Единственный их ответ был: "Нефиг использовать register_globals = on"

Получается так, если я сделаю "register_globals = off" - sape перестанет быть дырявой, но!! перестанет работать сайт.

А переписать им свой скрипт сапы и сделать его универсальным (в начале скрипта написать анализ GET POST параметров и при различных условиях делать то или иное) - им слабо.