|
|
|
| Использую сборку AppServ сегодня обнаружил взлом веб сервера. Хакер получил доступ к корневому каталогу www и сайтам расположенным внутри. Вывел табун коней. Из бэкапа хостинг восстановил. Как пролезли непонятно. в логах сервера в error.log вместо нормальных записей нечитаемые символы. Подскажите как обнаружить уязвимость. | |
|
|
|
|
|
|
|
для: soldier
(17.05.2011 в 18:43)
| | Нужен полноценный лог ошибок, правильно ли я понимаю, что он поврежден? Есть возможность запросить логи у хост-провайдера (они иногда их складывать в отдельное место).
PS Как правило, такие штучки бывают, если к вам на сервер попадает чужой код, путей несколько, но наиболее вероятный загрузка скрипта вместо изображения или использование динамический значений для include(), в которую можно вставить код с постороннего сайта. Не исключено воровство паролей от FTP посредством трояна (кстати, запросите у провайдера FTP-логи). | |
|
|
|
|
|
|
|
для: cheops
(17.05.2011 в 18:52)
| | я администратор этого сервера. фтп доступа к каталогу www нет. из каталогов сайтов внутрь каталога www тоже не попасть. ладно бы сайт подломили, собственно вначале я так и думал. пока после проверки на вирусы не стал обследовать все каталоги по очереди и не нашел посторонние файлы внутри каталога. | |
|
|
|
|
|
|
|
для: soldier
(17.05.2011 в 18:59)
| | 1) SSH есть? Как вообще осуществляется доступ к серверу?
2) Сколько человек имеют доступ к серверу?
3) Это Windows или UNIX? | |
|
|
|
|
|
|
|
для: cheops
(17.05.2011 в 20:26)
| | сервер под win2003 /доступ к серверу только у администратора. доступа по ssh нет. раскодировал лог ошибок вот что там:
"fetch" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"perl" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"wget" не является внутренней или внешней
"fetch" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"cUrl" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"lynx" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Системе не удается найти указанный путь.
"lwp-download" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"wget" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"fetch" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"cUrl" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"lynx" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Системе не удается найти указанный путь. | |
|
|
|
|
|
|
|
для: soldier
(18.05.2011 в 10:08)
| | Искали linux-команды. У вас обратные кавычки и фнукции exec() на сервере отключены? Если нет, то используете ли вы где-то их? | |
|
|
|
|
|
|
|
для: cheops
(18.05.2011 в 13:41)
| | вообще я дефолтные настройки изменяю только в файлах httpd.conf и в конфигурационном файле виртуальных хостов. все остальные настройки по умолчанию. пересмотрел файлы данной функции в конфигурации не нашел. единственное в изменениях php нашел информацию о профиксенном баге
- Fixed bug #33664 Console window appears when using exec()
(Richard Quadling, Stas) | |
|
|
|
|
|
|
|
для: soldier
(18.05.2011 в 17:13)
| | Создайте скрипт
Он на вашем сервер что-нибудь выводит? | |
|
|
|
|
|
|
|
для: cheops
(18.05.2011 в 19:36)
| | из корневого каталога www скрипт не работает. но будучи помещенным в каталог какого либо сайта выдает список содержимого каталога | |
|
|
|
|
|
|
|
для: soldier
(19.05.2011 в 09:30)
| | Вот как-то так и взломали, ну или по крайней мере интенсивно использовали при взломе... вам эта возможность нужна? Чтобы PHP-код мог выполнять системные команды? | |
|
|
|
|
|
|
|
для: cheops
(19.05.2011 в 12:25)
| | в обшем нет, как ее отключить? покопался в сети нашел несколько советов по защите апача, но видимо список был не исчерпывающим. | |
|
|
|
|
|
|
|
для: soldier
(19.05.2011 в 13:55)
| | Можно перечислить функции, которые требуется запретить, в директиве disable_functions конфигурационного файла php.ini | |
|
|
|
|
|
|
|
для: cheops
(19.05.2011 в 14:02)
| | disable_functions в php.ini по умолчанию не включена и не выключена просто без значения.
; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
Насколько я понимаю она должна быть либо включена либо выключена.
В сети лежит такой вариант:
disable_functions="popen,exec,system,passthru,proc_open,shell_exec"
или
disable_functions= "phpinfo,dir,readfile,shell_exec,exec,virtual,passthru,
proc_close,proc_get_status,proc_open,proc_terminate,system"
и
disable_functions = readfile,system
как сделать правильно? | |
|
|
|
|
|
|
|
для: soldier
(19.05.2011 в 14:54)
| | Вставляйте все функции, которые вам не нужны в работе. Мне первый вариант всех больше понравился, я бы его выбрал. | |
|
|
|
|
|
|
|
для: cheops
(19.05.2011 в 15:19)
| | сделал. | |
|
|
|
|
|
|
|
для: soldier
(19.05.2011 в 15:33)
| | Теперь проверьте, работает ли скрипт, приведенный выше - нужно убедиться, что он больше не выполняется нигде. | |
|
|
|
|
|
|
|
для: cheops
(19.05.2011 в 15:40)
| | при попытке выполнения Warning: shell_exec() has been disabled for security reasons in C:\AppServ\www\....
Работает. Спасибо за помощь! | |
|
|
|