9 ноября 2011 г.
9 ноября 2011 г.
Идеально защищенных сайтов не бывает, и иногда случается так, что ваш сайт может стать жертвой злоумышленников.
Одной из неприятностей может стать присутствие так называемого шелла (shell – оболочка) на сервере Вашего сайта. Шеллы представляют собой зловредные скрипты, которые каким-то образом оказались на сервере и могут запускаться на исполнение. В этом случае плохой человек может получить некоторые возможности, например, изменение файлов, загрузка собственных скриптов и соответственно возможность их исполнения, отправка спама и прочее, и прочее. Случается это по разным причинам, но как правило вследствие “дырявости” (читай “уязвимости”) CMS или хостинга.
Итак, если у вашего хостинга есть возможность доступа по SSH, то есть способ, который заключается в простом поиске вредоносных скриптов. Запускаем SSH-клиент, например, putty, авторизуемся.
Опишу несколько простых примеров, от которых потом можно отталкиваться.
Поиск текста “eval” во всех файлах с расширением .php с заданной директории:
find /dir/to/find/ -type f -iname "*.php" -exec grep -Him1 'eval' {} ;
Поиск “eval” среди файлов, у которых выставлены права 777
find /dir/to/find/ -perm 2 -type f -iname "*.php" -exec grep -Him1 'eval' {} ;
Простой поиск php-скриптов в заданной папке
find /dir/to/find/ -perm 2 -type f -iname "*.php"
Поиск .php файлов, созданных или измененных за последние 7 дней, мне всегда помогала именно она:
find /dir/to/find/ -type f -iname "*.php" -mtime -7
Далее пробегаемся по списку файлов, смотрим их содержимое и, если найден shell удаляем его.
Не стоит пренебрегать безопасностью своего сайта. Удачи.
Автор: Артур Минимулин ⚫ 9 ноября 2011 г. ⚫ Тэги: Хостинг, Безопасность
Как найти php backdoor на сайте? После поиска зловреда на сайте заказчика решил систематизировать свои знания по этому вопросу.
Самый короткий пример позволяющий исполнить произвольный php код удаленно:
eval($_REQUEST[‘phpshell’]); |
1. Поискать на сайте “опасные” функции:
а) eval() — исполняем php код
б) passthru(), exec() и им подобные — испололняем команду ОС
в) fopen(), chmod(), touch(), … — функции для работы с файловой системой
Для того чтобы искать, понадобится шелл доступ и некоторые знания *nix комманд. Пример, как найти в текущей директории рекурсивно все *.php файлы содержащие функцию eval()
find ./ –name “*.php” –print | xargs grep “eval(“ |
Пример, как найти последние измененные файлы за неделю:
find ./ –mtime –7 –name “*.php” –prune –print |
find — великолепная утилита для поиска в никсах, но синтаксис сложно запомнить, для ленивых есть отличный онлайн find помощник .
2. Проверить .htaccess файлы на наличие чего нибудь подозрительного. Например можно засунуть php код в *.html так
RewriteEngine on RewriteRule ^(.*).html $1.php |
Или даже в css и jpg, чтоб никто не догадался!
AddHandler application/x–httpd–php .php .css .jpg |
3. Анализируем логи. Если известно примерное время, после которого замечен бэкдор, то можно поискать подозрительное в логах. Хотя на сайте с высокой посещаемостью это будет нелегко.
Пример:
“GET /path/footer.inc.php?act=edit&file=<span style=”background–color:#ffff00;”>/home/account/public_html/.htaccess</span> HTTP/1.1″ 200 4795 “http://website/path/footer.inc.php?act=filemanager” “Mozilla/5.0…” |
Многие наивно думают, что не используя самописные скрипты — застрахованы от зловредов. Это не так. Шелл-код нередко встречается и в CMS и форумах. Обычно этим грешат нулленые версии. А иногда и в плагинах.
Ну и наконец полезные ссылки по теме:
Бэкдоры: PhpRemoteView , r57shell
NeoPI скрипт на Питоне для поиска “опасного” кода
Статья на securitylab.ru
Как найти шелл на своем сайте.
- on Янв 12, 2012
-
in
Безопасность
В свое время экспериментировал с движком DLE, и так как это были эксперименты использовал «null» версию этого движка, ну и как следствие использования неофициальных версий постоянная борьба с шеллами и уязвимостями, которые появлялись не только по недоработке разработчиков, но и с легкой руки нуллеров.
Вот некоторые из моих потугов по этому поводу:
Как сломать сайт на DLE
Уязвимости и взлом сайтов DLE
Как найти шелл(shell) на DLE ?
Взлом Сайтов DLE (критическая уязвимость, дыра) Как защититься от взлома?
Недавно нашел еще один способ Как найти шелл или другие уязвимости на своем сайте (не только на ДЛЕ). Помогла мне :
Искалка хакерских скриптов на вашем хостинге [update]
(разработчик Григорий, автор блога greg.su)
Маленькая тузла ai-bolit указала на шелл, который я искал около года.
я хотел было скопировать скрипт шелла к себе на комп, ради исследования, но бдительный nod32 так и не дал мне это сделать. он упорно удалял и предупреждал все попытки скопировать файл. каждый раз предупреждая меня что это троянская программа PHP. Rst.ak
Вот что умеет ai-bolit.php умеет
- искать ~40 разновидностей шеллов и дамперов
- определять зараженные index.php/index.html файлы IFRAME вирусами
- выдавать список директорий, открытых на запись скриптам
Порядок действий:
1. копируем ai-bolit.php в корень сайта
2. запускаем http://site.ru/ai-bolit.php
Результат примерно такой:
(скрин с оф. сайта)
Чаще всего шеллы используют, чтобы незаметно красть трафик или чтобы проставить на сайте ссылки например такие : установка монтаж кондиционеров в москве — для продвижения сайтов или дорвеев. До сих пор ссылочное продвижение является основой seo.
- Об авторе
- Недавние публикации
Работаю в интернете с 2008 года над своими и клиентскими проектами.
Работал инженером-теплоэнергетиком, когда понял, что мое призвание интернет. После чего сразу уволился и завел этот блог (блогу уже 12 лет).
Прошел путь заработка в интернете от бонусхантинга до профессионального интернет-маркетолога.
Сейчас работаю исключительно в интернете, занимаюсь арбтражом трафика, путешествую, веду блог.
Мой телеграмм для связи @sergcv
1.) Ищем файлы с завышенными правами доступа,нестандартные для Linux,
скрипты,пытающиеся запуститься от суперпользователя.
sudo find / -perm -u+s -ищем сет юзер айди бит.
Здесь смотрим,чтобы не оказалось помимо знакомых уже сторонних программ.
sudo find / -user root -perm -u+s -Тревогу надо бить ,если на выведенных файлах
также будет стоять u+s
sudo find / -user root -perm + 4000 -вывод в цифровом эквиваленте
+4000 -это и есть юзер бит.
sudo find / -perm -g+s -ищем для групп.
sudo ls -l/usr/bin/ файл -так смотрим права у конкретного файла
Если в консоли он подсвечивается жёлтым цветом-значит,всё нормально.
sudo find / -group root -perm -g+s – ищем группу с завышенными правами.
sudo find / -perm/u+s,g+s – так ищем и группы, и отдельные файлы.
2.) Проверяем теневые пароли
sudo cat /etc/passwd – выводит список пользователей и их пароли
Где указан х -это теневой пароль
sudo /etc/nologin – хорошо,если нет такого файла,если есть-беда
Сами такой создаём только в крайнем случае.Смысл такой:в систему никто,
кроме суперпольз-ля войти не может.Люди работают с сервером,заходит суперюзер-всех выкидывает,
сами потом тоже можем не зайти,будет постоянно запрашиваться пароль.
3.) sudo nmap local host -проверяем запущенные службы.
4.) cd /etc/init.d/,далее ls – проверяем скрипты.
sudo systemtcl disable назв_службы – тормозим скрипт если надо.
Причём это считается “человеческим отключением” вместо команд stop.
5.) sudo netstat -tuna – выведем все открытые порты tcp udp без служб
6.) nmap , проверяем сами себя,какие порты торчат наружу.
7.) sudo lsof -list open files – выводим открытые файлы.
8.) sudo lsof -i – смотрим все открытые соединения,здесь же
увидим какой пользователь использует протокол,описание файла,его права.
Полезно для поиска файлов,занятых конкретным процессом.
Например:sudo lsof -c назв_проги – увидим всё,что она использует.
Какие файлы открыты конкретным пользователем.
9.) sudo lsof -i : номер_порта – увидим,какие демоны и интерфейсы используют этот порт.
10.) Часто требуется и обратный ход в отличии от п.9 -поиск процесса ,который занимает
файл или сокет.Для этого используется утилита fuser,она покажет польз-ля,pid,доступ.
sudo fuser номер_порта /tcp ,например. Покажет процесс с id
ps номер_id -выскочит служба,которая использует этот порт.
11.) Смотрим кто входил/пытался войти в систему.
Windows- смотрим в диспетчере задач
Linux – применяем утилиты w,who,last,lastb,users.
w -когда была загружена,сколько открыто интерфейсов,кто в системе.Здесь же
смотрим jcpu -это время которое использовано всеми процессами.
pcpu – время , использ.конкретным процессом.
w имя_пользователя – так можно смотреть по конкретному польз-лю.
who -b – когда была последняя загрузка системы.
who -qH -все логины с паролями что сейчас в системе.
who -uH -кто вошёл,время,порты.
who -aH – отвечает на вопрос кто,где,когда.
users – проверяем всех пользователей в системе.
last – последние логины , кто и когда входил.
last reboot – когда система перезагружалась
lastb – здесь неудачные попытки входа в систему,пытался подобрать пароль.
12.) cd /var/log ,далее ls – здесь все файлы btmp
13.) cd /var/run – ls – здесь все файлы utmp.
Можно и так,если нет времени копаться в /var/log/syslog
Напишите,если не получится что-либо выяснить , то будем ещё думать.
Итак затронем такую неприятную для любого владельца сайта тему как взлом его детища. Согласитесь, что нет ничего неприятнее, чем если твой ресурс взломали и сделали с ним черт знает что. Трафик упал, яндекс и гугл выкинули из индекса и стало понятно, что творится что-то неладное.
В таком случае нужно задуматься о безопасности Вашего ресурса и Вашего рабочего места или домашнего компьютера. В первую очередь, конечно, нужно подумать, что какие то проблемы есть на вашем ПК. Подумайте об антивирусах и установите наиболее подходящий и надоедливый). Лидирующие позиции на рынке все также занимают Kaspersky, Dr.web и Comodo. У Kaspersky есть полугодовая триальная версия, которая разрабатывалась совместно с Yandex, а Comodo вообще бесплатен для домашнего использования. Хорошо, с этим разобрались — выловили кучку троянов. Также хорошим тоном является работа на компьютере из под пользователя, так как большинство вирусов работают с правами текущего пользователя, зашедшего в систему. Если у пользователя ограниченные права, то вирус банально не сможет исполнить своих задач.
Теперь подумаем о безопасности вашего сайта. Вы определили, что был взлом. Первое, что нужно сделать это проверить файл htaccess на наличие сторонних редиректов. Если таковые присутствую, то можно сразу говорить — поздравляю — Вас взломали.
Обратимся к теории как производится большинство взломов в рунете. В последнее время прошли замечательные времена суперхакеров и взлом сайта производится банальным перебором пароля. Отсюда следующая рекомендация — меняйте пароль на админку на сложный. Рекомендации Microsofta — пароль должен быть не менее 8 символов, содержать большие и маленькие буквы и цифры и желательно еще псевдознаки типа !, ;, $, #.
Сразу смените пароль.
Дальнейшей рекомендацией является обновление плагинов сайта до актуальных версий, ведь ни для кого не секрет, что большинство CMS довольно хорошо защищены, а для взлома доступны именно плагины, которые пишутся энтузиастами, которые частенько пренебрегают безопасностью.
И как завершающий этап — это поиск shell. По существу shell- это та дырка, через которую и залили на сайт либо деструктивные коды, либо файлы другого сайта. Шеллов написано великое множество, но самым популярным является WSO. Оговорюсь, что как только злоумышленник зальет шелл на сайт, он получает к нему полный доступ, а если вы владелец целого сервера, то доступ ко всему серверу.
Для поиска шеллов существуют несколько утилит три из которых и хотелось бы выложить для общего пользования. Это ai-bolit, shellfinder и varvara.
Shellfinder самый быстрый с минимумом настроек, Varvara можно использовать предварительно, например, скачав WSO, и используя кусок кода, а Ai-bolit имеет свою группу разработки, является довольно массивным при работе, но имеет замечательные рекомендации и результаты. http://www.revisium.com/ai/
Скачать их пачкой можно по ссылке http://yadi.sk/d/Ed1KS_4PBZxSD
Желаю удачной борьбы с вирусами на Ваших сайтах!