Всем привет, был создан новый раздел посвящённый вебу и веб-приложениям "Безопасность веб-приложений и сайтов" !
В этом разделе будут расматриваться различные атаки и методы защиты от них, упор статей и обсуждений будет прежде всего на Администраторов и Пользователей, т.е. что это такое с точки зрения пользователей и администраторов и как защитится...
Каких-то сложных выкладок здесь не будет, ну и постараюсь написать как я это понимаю...
Для начала, размещу выложенную мной статью ещё в хак. разделе про веб-щеллы, далее может ещё какие-нить статьи про XSS и CSRF атаки, многие считают что это одно и тоже, но это нетак !
Также например от XSS и CSRF можно защищаться на стороне пользователя, всё-же это атаки больше даже на конкретного пользователя, но это в других темах...
Можете присоединятся !
Итак тема про шеллы:
1)Теоретические основы
Термин «шелл» неразрывно связан с операционной системой Unix. Именно поэтому многие хакеры употребляют сочетание «unix-шелл». Если заглянуть в англо-русский словарь, то слово «shell» переводится как «оболочка». Но для того чтобы понять смысл термина, одного перевода недостаточно. Итак, шелл – это оболочка операционной системы, которая взаимодействует с пользователем, специальная программа, которая получает от юзера команды и возвращает результат их выполнения. Однако понятие шелла очень тесно связано с unix, и поэтому его часто ассоциируют с предоставленным удаленным доступом к системе. Так, слова «дать шелл» надо воспринимать не как «дать исходники шелл-интерпретатора», а как «предоставить удаленный доступ к системе».
Неважно, каким способом этот доступ осуществляется, главное, чтобы пользователь имел возможность выполнять команды на сервере.
Существует также понятие «аккаунт», которое можно интерпретировать как «учетная запись». Когда тебе дают шелл, то обязательно предоставляется аккаунт в виде пары «логин:пароль». Каждый аккаунт обладает определенными правами и заранее прописывается администратором системы. Теперь важно определиться, какие вообще бывают шелл-доступы. Они подразделяются на два типа в зависимости от прав пользователя и вида доступа к системе.
2)Делаем сами шелл под свои нужды:
Давайте попробуем разобраться, может создать свой шелл не так-уж и сложно, ведь есть известный онлайновый сервис «Metasploit Framework Web Interface», который расположен по адресу http://metasploit.com.
Выбираешь в меню тип эксплойта (Bind Shell, Reverse Shell, Add User и пр.), платформу,
операционную систему, программу для эксплуатирования.
Задаешь параметры эксплойта: максимальный размер в байтах, номер порта, тип кодирования и пр. Нажимаешь кнопку «Generate», и эксплойт, или шелл-код, готов!
Также на сайте ты найдешь все для профессиональной разработки эксплойтов: статьи, специальные утилиты, базу данных опкодов и многое другое.
Теперь немного про основные типы шеллов:
Их много, но я разделил на следующие группы, в зависимости от функционала:
ftp-shell: шелл, использующий протокол ftp, можно сливать/заливать файлы;
ssh-shell: шелл, использующий протокол ssh, с его помощью можно выполнять команды в системе. кроме того ssh-трафик неуязвим по отношению к любопытному провайдеру.
Зарегистрируйся на holm.ru и получишь данные 2 шелла.
bind-shell ом называют программу, перенапровляющую ввод-ввывод от коммандного интерпритатора через один из 65536 портов на (не)взломанной машине. Ну иногда шеллом называют не ПРОГРАММУ, а сам ДОСТУП к машине.
Пример bind-shell'a (на перле): http://drmist.narod.ru/bind.pl
connect-shel (reverse shell), это почти bind, только не ты к нему коннектишься, а он к тебе. :)
Пример connect-shell'а (на Си): http://drmist.narod.ru/cbd.c
3)Ну блин, а где уже готовые-то взять шеллы:
Шелл-доступ можно получить разными способами:
1.Примеры шелла можно поискать в инете, можно по ссылкам выше ! Ну вот например не плохой шелл r57:http://www.securitylab.ru/software/234092.php
2. Можно также воспользоваться платным шеллом, который официально разрешает использование IRС-ботов. Например, таким: satexas.com/eggdrop_shell.phtml
В любом случае, если вы захотите воспользоваться платным шелл-аккаунтом для запуска своего бота, обязательно выясните, что думают об этом администраторы сервера. Иначе вы можете быстро лишиться своего аккаунта. Также не лишним будет спросить, сколько Мб вы сможете закачать, сможете ли вы пользоваться компилятором, приличным текстовым редактором (joe, vim), создавать cron-jobs и выкладывать web-страницы в свой домашний каталог.
4)Ну а теперь-то нужно скрыть свой руткит, как быть:
Если ты взломал какой-либо сайт/сервер не важно как и чем, нужно обязательно позаботится о скрытии своего руткита, иначе весь труд пойдёт на смарку, если админу конечно не пофиг !
Существует куча способов, да и что-то советовать здесь не уместно, всё зависит от конкретной ситуации и твоей фантазии, но всё-же расскажу пару способов, это так сказать для размышления:
Часто используют тупой способ под названием «Скрытие шелла на местности», смысл в том что-бы замаскировать файлы/сервисы нашего руткита под «Местность».
Пример:В качестве примера приведём, вот взломал ты сайт, у сайта например есть папка «Language», то логичней будет обозвать файл eng.phpи поместить туда, либо если будешь заливать в корень, то можно обозвать так config.php, тогда шелл будет «замаскирован» и даже при просмотре каталога админ ничего не заподозрит ! ;)
Ну и это ещё не всё, можно скрывать шелл в картинку, либо в другое расширение, но это может-вас выдать с потрохами, т.к. для запуска такого замаскированного шелла часто нужно изменять конфиги сервака, да и сайт жертвы может слететь, что не камельфо !
Идём дальше, было-бы не плохо также «замаскировать» дату файла, что-бы админ не вычислил нас по дате, да-да у файлов можно изменить дату на нужную нам, сейчас расскажу как:
В этом нам поможет заветный touch (UNIX), будем использовать одноименную функцию PHP.
Итак, приступим:
1. Поставить на файл (apach.php) определенную дату, формат: год месяц число час минута, можно такой командой:
touch -t200811182005 apach.php
Или так:
touch -d 'Jan 31 2007 12:34:56' apach.php
2. Сделать file5 того же времени, что и file4:
touch -r file4 file5
3. Сделать file7 30 секундами старше, чем file6:
touch -r file6 -B 30 file7
4. Сделать file7 30 секундами моложе, чем file6:
touch -r file6 -F 30 file7
То же самое можно сделать средствами PHP функцией touch():
touch('/usr/www/site.ru/www/index.php', filemtime('/usr/www/site.ru/www/show_kvit.php'));
Ну и наконец, на шелле r57 есть специальная вкладка с одноименным названием, она поможет это сделать в удобном виде. Не забывай, что для изменения атрибутов нужно иметь соответствующие права.
Ну и последнее шелл можно скрыть в старой доброй папке / tmp можно закачать файл шелла в директорию / tmp, она, как известно, в 99% случаев доступна на запись, к тому же там зачастую хранятся файлы сессии. Файл маскируем под сессию, далее просто инклудим его как ни в чем не бывало (?file=../../tmp/sess_d17d8f066 1f8f44dd7dc5110c8825246).
Как защититься от веб-шеллов:
1)Обновлять ПО на сервере и скрипты;
2)Установить антивирус на сервере, например ClamAV (Можно просто проверку по требованию сделать в планировщике);
3)Проверить права на папки;
4)Проверить все настройки как сервера, так и скриптов;
5)Не забывать делать регулярный беккап.
НЕ ПРОХОДИТЕ МИМО, ЕСЛИ ЕСТЬ, ЧТО СКАЗАТЬ ПРО ЭТУ ОЧЕНЬ ВАЖНУЮ И НУЖНУЮ ТЕМУ, А ТАКЖЕ ВЫСКАЗЫВАЙТЕ ВСЕ ПОЖЕЛАНИЯ И ОТЗЫВЫ ПО СТАТЬЕ ! ;)
В этом разделе будут расматриваться различные атаки и методы защиты от них, упор статей и обсуждений будет прежде всего на Администраторов и Пользователей, т.е. что это такое с точки зрения пользователей и администраторов и как защитится...
Каких-то сложных выкладок здесь не будет, ну и постараюсь написать как я это понимаю...
Для начала, размещу выложенную мной статью ещё в хак. разделе про веб-щеллы, далее может ещё какие-нить статьи про XSS и CSRF атаки, многие считают что это одно и тоже, но это нетак !
Также например от XSS и CSRF можно защищаться на стороне пользователя, всё-же это атаки больше даже на конкретного пользователя, но это в других темах...
Можете присоединятся !
Итак тема про шеллы:
1)Теоретические основы
Термин «шелл» неразрывно связан с операционной системой Unix. Именно поэтому многие хакеры употребляют сочетание «unix-шелл». Если заглянуть в англо-русский словарь, то слово «shell» переводится как «оболочка». Но для того чтобы понять смысл термина, одного перевода недостаточно. Итак, шелл – это оболочка операционной системы, которая взаимодействует с пользователем, специальная программа, которая получает от юзера команды и возвращает результат их выполнения. Однако понятие шелла очень тесно связано с unix, и поэтому его часто ассоциируют с предоставленным удаленным доступом к системе. Так, слова «дать шелл» надо воспринимать не как «дать исходники шелл-интерпретатора», а как «предоставить удаленный доступ к системе».
Неважно, каким способом этот доступ осуществляется, главное, чтобы пользователь имел возможность выполнять команды на сервере.
Существует также понятие «аккаунт», которое можно интерпретировать как «учетная запись». Когда тебе дают шелл, то обязательно предоставляется аккаунт в виде пары «логин:пароль». Каждый аккаунт обладает определенными правами и заранее прописывается администратором системы. Теперь важно определиться, какие вообще бывают шелл-доступы. Они подразделяются на два типа в зависимости от прав пользователя и вида доступа к системе.
- Непривилегированный шелл-доступ реализуется при помощи аккаунта, который имеет ограниченные права в системе. К примеру, обладатель такого шелла не сможет добавлять пользователей и просматривать некоторые каталоги (в зависимости от защиты). Возможно, что юзера урежут и в сетевых правах. При этом будет невозможно поставить консольную аську, задосить диалапщика, запустить бота и т.п.
- Привилегированный шелл, или рутшелл. Обладатель такого шелла имеет неограниченные возможности. Он может добавлять/удалять юзеров, закрывать порты на машине, ставить софт и запускать любую команду. В общем, полная свобода действий. Однако, управляя такой системой, нужно четко понимать смысл набранной команды. Иначе можно так накосячить, что сервер попросту упадет.
2)Делаем сами шелл под свои нужды:
Давайте попробуем разобраться, может создать свой шелл не так-уж и сложно, ведь есть известный онлайновый сервис «Metasploit Framework Web Interface», который расположен по адресу http://metasploit.com.
Выбираешь в меню тип эксплойта (Bind Shell, Reverse Shell, Add User и пр.), платформу,
операционную систему, программу для эксплуатирования.
Задаешь параметры эксплойта: максимальный размер в байтах, номер порта, тип кодирования и пр. Нажимаешь кнопку «Generate», и эксплойт, или шелл-код, готов!
Также на сайте ты найдешь все для профессиональной разработки эксплойтов: статьи, специальные утилиты, базу данных опкодов и многое другое.
Теперь немного про основные типы шеллов:
Их много, но я разделил на следующие группы, в зависимости от функционала:
ftp-shell: шелл, использующий протокол ftp, можно сливать/заливать файлы;
ssh-shell: шелл, использующий протокол ssh, с его помощью можно выполнять команды в системе. кроме того ssh-трафик неуязвим по отношению к любопытному провайдеру.
Зарегистрируйся на holm.ru и получишь данные 2 шелла.
bind-shell ом называют программу, перенапровляющую ввод-ввывод от коммандного интерпритатора через один из 65536 портов на (не)взломанной машине. Ну иногда шеллом называют не ПРОГРАММУ, а сам ДОСТУП к машине.
Пример bind-shell'a (на перле): http://drmist.narod.ru/bind.pl
connect-shel (reverse shell), это почти bind, только не ты к нему коннектишься, а он к тебе. :)
Пример connect-shell'а (на Си): http://drmist.narod.ru/cbd.c
3)Ну блин, а где уже готовые-то взять шеллы:
Шелл-доступ можно получить разными способами:
1.Примеры шелла можно поискать в инете, можно по ссылкам выше ! Ну вот например не плохой шелл r57:http://www.securitylab.ru/software/234092.php
2. Можно также воспользоваться платным шеллом, который официально разрешает использование IRС-ботов. Например, таким: satexas.com/eggdrop_shell.phtml
В любом случае, если вы захотите воспользоваться платным шелл-аккаунтом для запуска своего бота, обязательно выясните, что думают об этом администраторы сервера. Иначе вы можете быстро лишиться своего аккаунта. Также не лишним будет спросить, сколько Мб вы сможете закачать, сможете ли вы пользоваться компилятором, приличным текстовым редактором (joe, vim), создавать cron-jobs и выкладывать web-страницы в свой домашний каталог.
4)Ну а теперь-то нужно скрыть свой руткит, как быть:
Если ты взломал какой-либо сайт/сервер не важно как и чем, нужно обязательно позаботится о скрытии своего руткита, иначе весь труд пойдёт на смарку, если админу конечно не пофиг !
Существует куча способов, да и что-то советовать здесь не уместно, всё зависит от конкретной ситуации и твоей фантазии, но всё-же расскажу пару способов, это так сказать для размышления:
Часто используют тупой способ под названием «Скрытие шелла на местности», смысл в том что-бы замаскировать файлы/сервисы нашего руткита под «Местность».
Пример:В качестве примера приведём, вот взломал ты сайт, у сайта например есть папка «Language», то логичней будет обозвать файл eng.phpи поместить туда, либо если будешь заливать в корень, то можно обозвать так config.php, тогда шелл будет «замаскирован» и даже при просмотре каталога админ ничего не заподозрит ! ;)
Ну и это ещё не всё, можно скрывать шелл в картинку, либо в другое расширение, но это может-вас выдать с потрохами, т.к. для запуска такого замаскированного шелла часто нужно изменять конфиги сервака, да и сайт жертвы может слететь, что не камельфо !
Идём дальше, было-бы не плохо также «замаскировать» дату файла, что-бы админ не вычислил нас по дате, да-да у файлов можно изменить дату на нужную нам, сейчас расскажу как:
В этом нам поможет заветный touch (UNIX), будем использовать одноименную функцию PHP.
Итак, приступим:
1. Поставить на файл (apach.php) определенную дату, формат: год месяц число час минута, можно такой командой:
touch -t200811182005 apach.php
Или так:
touch -d 'Jan 31 2007 12:34:56' apach.php
2. Сделать file5 того же времени, что и file4:
touch -r file4 file5
3. Сделать file7 30 секундами старше, чем file6:
touch -r file6 -B 30 file7
4. Сделать file7 30 секундами моложе, чем file6:
touch -r file6 -F 30 file7
То же самое можно сделать средствами PHP функцией touch():
touch('/usr/www/site.ru/www/index.php', filemtime('/usr/www/site.ru/www/show_kvit.php'));
Ну и наконец, на шелле r57 есть специальная вкладка с одноименным названием, она поможет это сделать в удобном виде. Не забывай, что для изменения атрибутов нужно иметь соответствующие права.
Ну и последнее шелл можно скрыть в старой доброй папке / tmp можно закачать файл шелла в директорию / tmp, она, как известно, в 99% случаев доступна на запись, к тому же там зачастую хранятся файлы сессии. Файл маскируем под сессию, далее просто инклудим его как ни в чем не бывало (?file=../../tmp/sess_d17d8f066 1f8f44dd7dc5110c8825246).
Как защититься от веб-шеллов:
1)Обновлять ПО на сервере и скрипты;
2)Установить антивирус на сервере, например ClamAV (Можно просто проверку по требованию сделать в планировщике);
3)Проверить права на папки;
4)Проверить все настройки как сервера, так и скриптов;
5)Не забывать делать регулярный беккап.
НЕ ПРОХОДИТЕ МИМО, ЕСЛИ ЕСТЬ, ЧТО СКАЗАТЬ ПРО ЭТУ ОЧЕНЬ ВАЖНУЮ И НУЖНУЮ ТЕМУ, А ТАКЖЕ ВЫСКАЗЫВАЙТЕ ВСЕ ПОЖЕЛАНИЯ И ОТЗЫВЫ ПО СТАТЬЕ ! ;)