Показать сообщение отдельно
Старый 30.01.2011, 16:56 Вверх   #1
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
Хорошо Защищаем свой сайт DLE от кулхацкеров

Защищаем свой сайт DLE от кулхацкеров

Преамбула:
Нажми для просмотра
Написать эту статью меня поддёрнул вчерашний инцедент, короче хакнули один из моих сайтов. Залили шел, вставили ссылок в шаблоны и подключили вредоносный код в шаблон. Сайт просто утонул и гугл с яндексом на него "обиделись", посещуха упала в 10 раз. Мне конечно стало обидно и я решил разобраться с вопросом защиты своего сайта и заодно поделиться своим опытом.


Итак, хакнули у меня сайт на DLE 8.5, я решил попробовать поискать причины и методы взлома сайта. Для того чтобы понять как защищаться, надо сначала узнать как сайты ломают. Поэтому я полез на хацкерские ресурсы, покурил много мануалов и даже наткнулся на статьи в которых описывалось как что делать, что полностью совпадало с тем что мне сделали. Итак, для начала я вам в кратце расскажу что обычно делают взломщики, если это интересно - читайте материалы под спойлером, т.к. в целом темы защиты не касается.

Как обычно ломают сайты:
Нажми для просмотра
Всем известно что DLE скрипт самый распространенный и поэтому его постоянно проверяют на уязвимости всякие кулхацкеры и некоторым удается найти дыры о которых они молчат. Большинство же "школьных" кулхацкеров пользуются материалами которые есть в паблике, а именно они заливают Шелл (shell). Для этого обычно нужны права админа которые можно получить каким то хитрым способом, который я не нашел. Дальше в админке они заходят в настройки сайта и в меню загрузки файлов добавляют расширение php и загружают через стандартный аплоадер php файлы (а именно шел). Через него они уже могут свободно оперировать файлами вашего движка и базой. Ну естественно теперь они получают полную свободу действий. На этом собственно я пока и закончу мой мини файк о том как ломают.
Вот пример одного из старых шелов:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 100 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

Обзор уязвимостей DataLife Engine:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 100 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.


Осмыслив выше описанное я понял что для наибольшего противодействия заливке шела нужно закрыть доступ к возможности выполнения скриптов в папке аплоад, для этого в корень папки upload нужно вложить файл: .htaccess с содержимым:

Код:
<FilesMatch ".*">
   Order allow,deny
   Deny from all
</FilesMatch>
<FilesMatch "\.(jpg|gif|png|xml)$|^$">
   Order deny,allow
   Allow from all
</FilesMatch>
Этим действием мы перекрываем возможность выполнять или обращаться к файлам с расширениями отличными от jpg|gif|png|xml. Оставляю для доступа форматы картинок и xml карту сайта. На всякий случай наставлю на сам файл .htaccess права CHMOD 444, чтобы их было нельзя изменить скриптом или еще как (или отредактировать файл) , а только из под FTP.
Дальше, подобный файл стоит затолкать в папку с шаблонами, только внести в него дополнительно tpl, css, html.

Если у Вас DLE 9.х и старше, то на папку upload обязательно поставьте права CHMOD 0777, это автоматически запрещает выполнение php скриптов в данной папке на уровне самого скрипта.

Допустим мы не дадим теперь залить им шел, но они могут вставить в код шаблона какой нить левый скрипт или навтыкать ссылок через редактор шаблонов дижка. Лично я не фанат этого редактора и редактирую все шаблоны всегда из под FTP, поэтому попрощаться с этим редактором мне не страшно и я просто беру и ставлю на все tpl файлы шаблона права CHMOD 444, этим самым я запрещаю редактировать файлы шаблона абсолютно всем и из скрипта уже ничего не сделать. Так, эту дырочку мы тоже залотали.

Что еще может сделать взломщик ? забрать базу данных. Он зайдет в менеджер управления базой данных, сделает бэкап базы и сольет ее, если версия вашего DLE ниже чем 9.0. Что делать ? да все просто, нужно в папке backup разместить .htaccess с содержимым:

Код:
Order Deny,Allow
Deny from all
Все, бэкапы можно сливать только из под FTP.

Защита файла админпанели:
Идем дальше, что еще стоит защитить. Стоит спрятать панель администратора, переименуйте файл admin.php во что нибудь еще и укажите в настройках системы новое имя файла admin.php. Сохраняемся, панель админа перепрятали.

Так же если у Вас статический IP, то можно сделать ход конем и отсечь доступ к панели всем кто захочет в нее прорваться, для этого в конец корневого файла .htaccess прописываем:

<Files "admin.php">
Order Deny,Allow
Deny from all
Allow from 95.106.70.220
</Files>

Где admin.php - имя файла админки, а 95.106.70.220 - Ваш IP. В этом случае в адмику зайдет только владелец IP 95.106.70.220, остальные получат 500-ую ошибку сервера.

Если у Вас динамический IP адрес, то страшного ничего нет. Заходим по ссылке http://2ip.ru/whois/ и смотрим информацию о своем IP, в самом конце находим строку типа: route: 95.106.0.0/17 , это диапазон динамических IP адресов которые есть у Вашего провайдера. нужно скопировать этот диапазон и поставить его вместо статического IP, например вот так:

<Files "admin.php">
Order Deny,Allow
Deny from all
Allow from 95.106.0.0/17
</Files>

Теперь в админку можно зайти с IP адресов Вашего провайдера, тут шанс взлома резко падает )

Запрет запуска любых левых скриптов (повышаем надежность защиты):

Открываем корневой .htaccess и дописываем в него строчки:

Код:
<FilesMatch ".(php|h|c)$">
Order allow,deny
Deny from all
</FilesMatch>

<FilesMatch "(index.php|go.php|ajax.php|download.php)$|^$">
Order deny,allow
Allow from all
</FilesMatch>
Что это делает. Эта секция запрещает вызов любых скриптов кроме index.php, go.php, ajax.php и download.php, которых достаточно для работы Вашего сайта. Если Вы заметили что какой то элемент сайта отвалился - то тупо подключите его в эту секцию, например чтобы работала админка - допишите |admin.php в конец, получится вот так:

Код:
<FilesMatch "(index.php|go.php|ajax.php|download.php|admin.php)$|^$">
Order deny,allow
Allow from all
</FilesMatch>
Туда же можно включить скрипт вылова голосования vote.php, я думаю что дальше все понятно. Таким макаром если будет залит какой либо скрипт, его не смогут выполнить. Вот такая вот политика партии.

+++++++++++++++

Так же сидел и думал, а если все же этим товарищам удастся попасть в админку и каким нить чудным способом залить мне шел или что то испортить. Для того чтобы залить шел, им нужно будет разрешить к загрузке тип файлов и добавить php. Я подумал и придумал. Короче говоря я выставляю все настройки в Основных настройках системы так как мне надо и я понимаю что изменю теперь тут может что нить раз в 100 лет, т.к. я обычно настройки не меняю. Теперь я перекрываю кислород злоумышленикам, а именно. Я иду в папку engine/data/ и ставлю на файл config.php и dbconfig.php права 444, по рекомендациям защиты скрипта я выставляю на саму папку data права 765 (это взял тут). Все, теперь настройки системы из адмнки менять нельзя, и соотвественно тип файлов php добавить не получится.

Дальше, на счет шаблонов. Ставить шаблоны надо только проверенные и проверять их самому перед установкой. Об этом я подробно расписывал в статьте: Проверка шаблонов перед их использованием и видео уроке Чистка шаблонов от внешних ссылок и скриптов на примере шаблона DLE.

Дальше, после того как вы переименуете файл админки - зайдите в Антивирус скрипта, сделайте тестирование, там долен быть показан новый файл админки как неизвестный системе файл. Вам предлагается сделать новый снимок - НИКОГА НЕ ДЕЛАЙТЕ ЭТОГО. Почему ? Потому что Вы можете контролировать изменения в ФС, а именно. Если к примеру кулхацкерам все же удастся залить вам шел, то зайдя в антивирус вы его найдете как неизвестный системе файл. А если злоумышленик зальет шел и решит его скрыть от вас сделав новый снимок системы - то он скроет и свой шел и ваш новый файл админки и при очередном сканировании если вы не видите свой файл админки как неизвестный файл - значит что кто то делал снимок и стоит начать копать скрипт.

Полезные советы:
1. После того как вы закончили работать с ftp - обязательно выключайте аккаунт ftp или удаляйте его, если нельзя выключить - это дополнительная защита.

2. Выбирайте нормальных хостеров, из слов одного хакера с сайта античат, он залил шел на сайт через саппорт хостера, дав хостеру всего 10 WMZ. Так что ШКОЛОХОСТ - это не наш выбор.

Автор инструкции: Serberg
Статья написана только из собственных соображений и обобщения полученной по взлому информации. Если найдете недочеты - пишите. Если помог Вам - жми спасибку.
При копировании статьи - ссылка на оригинал обязательна.
Писал долго и нудно, а перед этим много читал. Я думаю ее заслужил )

Последний раз редактировалось Serberg; 06.09.2011 в 17:18..
  Ответить с цитированием
27 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.07556 секунды с 10 запросами