Взлом сайта
02.04.2013К нам в компанию поступил запрос:
"На сервере происходит что-то странное, периодически беспричинно возрастает нагрузка, пользователи форума жалуются на то, что от их имени уже кто-то заходил в админку. Пожалуйста, проведите аудит безопасности и выясните причины непонятной активности!"
В результате анализа сервера была обнаружена уязвимость позволяющая с помощью специально сформированного запроса удаленно получить хеши паролей пользователей сайта. Был обнаружен и ликвидирован веб шелл бэкдор (php cкрипт, позволяющий управлять сервером в обход легитимных механизмов доступа) залитый хакером после взлома сайта.
После проведения анализа клиенту был предоставлен отчет, содержащий список обнаруженных уязвимостей + рекомендации по защите сервера от взлома.
Отчет:
Oleg Добавлено:08 Apr 2013 16:06
08.04.2013 www.xxxxxxxx.by
Общий уровень безопасности сайта можно оценить на 4 из 10 баллов.
Обнаруженные уязвимости:
Открытый порт 11212/tcp
Класс: Information leakage
Уровень опасности: высокий
Риск: удаленный пользователь с помощью специально сформированного запроса может получить список хешей паролей на целевой системе.
Пример:
a:2:{s:4:"tags";a:1:{s:26:"xxxxxxxxx_ru_cabinet_users";s:10:"1365408708";}s:4:"data";a:1:{s:4:"data";a:40:{s:2:"id";s:5:"44371";s:4:"date";s:10:"1344886489";s:5:"dauth";s:10:"1365409301";s:5:"login";s:10:"valera1605";s:8:"password";s:32:"fd34e134a5a8b0307617dde8e35ac4b2";s:4:"name";s:37:"
a:2:{s:4:"tags";a:1:{s:26:"xxxxxxxxx_ru_cabinet_users";s:10:"1365408708";}s:4:"data";a:1:{s:4:"data";a:40:{s:2:"id";s:5:"35178";s:4:"date";s:10:"1322946033";s:5:"dauth";s:10:"1365409816";s:5:"login";s:8:"fedordeg";s:8:"password";s:32:"fbd377027b8ca1b4ac99a93355621295";s:4:"name";s:31:"
a:2:{s:4:"tags";a:1:{s:26:"xxxxxxxxx_ru_cabinet_users";s:10:"1365408708";}s:4:"data";a:1:{s:4:"data";a:40:{s:2:"id";s:5:"14511";s:4:"date";s:10:"1268312193";s:5:"dauth";s:10:"1365409252";s:5:"login";s:4:"dsh1";s:8:"password";s:32:"24ee06013868ffb0adb0e24bf6612052";s:4:"name";s:25:"
a:2:{s:4:"tags";a:1:{s:26:"xxxxxxxxx_ru_cabinet_users";s:10:"1365408708";}s:4:"data";a:1:{s:4:"data";a:40:{s:2:"id";s:5:"49971";s:4:"date";s:10:"1355248366";s:5:"dauth";s:10:"1365409350";s:5:"login";s:6:"m_ilya";s:8:"password";s:32:"736bb80b4ac0d5beb908c681d1a149e1";s:4:"name";s:27:"
a:2:{s:4:"tags";a:1:{s:26:"xxxxxxx_ru_cabinet_users";s:10:"1365408708";}s:4:"data";a:1:{s:4:"data";a:40:{s:2:"id";s:5:"47090";s:4:"date";s:10:"1349878131";s:5:"dauth";s:10:"1365409775";s:5:"login";s:8:"egunov86";s:8:"password";s:32:"16450ad9db8763ad921aa56efffc85d0";s:4:"name";s:31:"
a:2:{s:4:"tags";a:1:{s:26:"xxxxxxx_ru_cabinet_users";s:10:"1365408708";}s:4:"data";a:1:{s:4:"data";a:40:{s:2:"id";s:5:"55534";s:4:"date";s:10:"1364985014";s:5:"dauth";s:10:"1365409123";s:5:"login";s:9:"sacha0700";s:8:"password";s:32:"62a1f2c31c8f01e00a04e3f01b264a6d";s:4:"name";s:41:"
a:2:{s:4:"tags";a:1:{s:26:"xxxxxxx_ru_cabinet_users";s:10:"1365408708";}s:4:"data";a:1:{s:4:"data";a:40:{s:2:"id";s:5:"37278";s:4:"date";s:10:"1328693356";s:5:"dauth";s:10:"1365409884";s:5:"login";s:5:"Gubko";s:8:"password";s:32:"405e28906322882c5be9b4b27f4c35fd";s:4:"name";s:23:"
login Gubko
password 1978
fedordeg
060879
Hermanovich
12345678
Klimov555
3411811
Решение: закрыть указанный порт для доступа извне.
С учетом того, что все аккаунты (особенно со слабыми паролями) могли быть скомпрометированы - вам неообходимо разослать массовое уведомление клиентам о необходимости сменить их текущие пароли.
2. Предсказуемое расположение ресурсов (Predictable Resource Location)
http://www.xxxxxxx.by/admin.php
Уровень опасности: низкий
Риск: способствует проведению ряда атак
Решение: двуфакторная аутентификация (установка дополнительного пароля на админку)
3. Обнаружен веб шелл бэкдор здесь http://www.xxxxxxx.by/files/xxxxxxx/file/inc.php
Указанный скрипт позволяет читать и писать, выполнять произвольные команды, организовывать спам и ддос атаки.
Указанный файл после ознакомления, разумеется, следует удалить.
Судя по дате залитого скрипта
/var/www/xxxxxxx.by/www/files/xxxxxxx/file
-rwxrwxr-x 1 xxxxxxx tape 24892 Mar 9 2012 inc.php
взлом произошел не позднее 9 марта 2012 года.
Давняя дата не позволяет по лог файлам восстановить сценарий атаки для выявления первопричины взлома. С большой долей верояности вредоносный файл был залит через один из уязвимых скриптов вашего сайта.
Также вероятен вариант, когда вредоносный скрипт был залит благодаря скомпрометированным данным доступа администратора в панель управления сайтом.
Инструменты автоматической проверки не выявили SQL Injection, PHP-Including и др. опасных уязвимостей.
Рекомендации: построчный аудит кода (данная работа на выявление должным образом не фильтруемых переменных должна быть проведена при участии вашего веб разработчика), отключение потенциально опасных php функций (exec,shell_exec,system,passthru,popen,proc_open), смена всех паролей в особенности муsql (мог быть прочитан через веб шелл).
Клиент Виталий Добавлено:08 Apr 2013 16:23
Другими словами сайт был взломан, но понять что было сделано - невозможно, я правильлно понял?
Можно ли ПРЕДПОЛОЖИТЬ, к чему мог иметь доступ хакер? Например в базе данных заявок, фирм, паролям и т.п. Нужно экспертное заключение.
Спасибо.
Oleg Добавлено:08 Apr 2013 16:27
Читать, писать, БД могла быть слита - технически это возможно.
У владельца данного скрипта был неограниченный доступ ко всем файлам и базам данных сайта www.xxxxxxx.by
Клиент Виталий Добавлено:08 Apr 2013 22:28
Вы не могли бы составить для нас полный список рекоммендаций по безопасности сайта, защите от злоумышленников на уровне
- сервера
- админки (бекенд)
- сайта (фронэнда)
- сотрудников
- и т.д. другие аспекты?
Oleg Добавлено:08 Apr 2013 23:01
Доброй ночи!
Недоступность сервера в большей степени была обусловлена медлительностью тех. поддержки вашего хостера, другими словами даже с учетом того, что мы названивали им каждые пять минут, чтобы ускорить процесс поднятия сервера после перезагрузки - время на поднятие было потрачено значительно больше чем можно было бы.
В момент тестирования на сервере незначительно возрастает нагрузка, что не может привести к зависанию. В вашем случае произошло зависание веб сервера.
После прекращения тестирования и тем более после перезагрузки сервера - состояние сервера становится идентичное тому, что было до тестирование, поэтому ошибки на других сайтах, которые есть сейчас 100% не связаны с тестированием которое мы проводили, тем более никаких изминений в серверную конфигурацию с нашей стороны не вносилось.
Рекомендации:
На уровне сервера - достаточно регулярно обновлять установленое ПО, особенно если речь идет о критических обновлениях безопасности. Количество открытых портов должно быть минимальным. 11212 необходимо закрыть. Если вы не используете mysql удаленно - 3306 также лучше закрыть.
Админка - двуфакторная аутентификация административной панели (установка дополнительного пароля средствами apache
.htaccess
открываем тег Files "admin.php", закрываем тег
Deny from all
Allow From 178.165.81.238 (вместо примера должен быть ваш IP)
открываем тег /files, закрываем тег
)
Код - рекомендуется провести построчный аудит кода (данная работа на выявление должным образом не фильтруемых переменных должна быть проведена при участии вашего веб разработчика). Значения попадающие в базу должны по возможности фильтроваться (основы правильного написания безопасного php кода http://www.programmersclub.ru/%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C-php-%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D0%BF%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B8%D0%B2%D1%88%D0%B8%D1%85-%D0%B4/)
Настройки PHP - потенциально опасные php функций нужно отключить (перечисленные функции не должны использоваться в ваших скриптах) (exec,shell_exec,system,passthru,popen,proc_open) - отключаются через php.ini После внесения изменений требуется перезагрузить апач.
Смена всех паролей в особенности муsql (мог быть прочитан через веб шелл).
Сотрудники имеющие административный доступ к сайту должны быть уведомлены о возможных попытках взлома методом социальной инженерии (http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D0%B8%D1%8F)
Компьютеры с которых осуществляется ftp подключение должны быть защищены антивирусом с актуальными базами.