Итак, этой статьей я начинаю ряд статей серии «АЯ», которая поможет новичку выкинуть на помойку X-Spider и собственноручно, без дополнительных утилит, находить бреши на сайтах. Т.е. ломать их =). Свою серию я назвал «АЯ». Понять это название можно по разному. Например «от А до Я». Или это как вопрос от безнадежности, типа «Все уже умеют! А Я???». Короче думайте сами =). Я конечно не Толстой, но все же =). Так назвать свою серию меня побудил один чел, общаясь с которым в асе, он спросил «А почему?». Он хотел спросить меня почему, а я прочитал как «Апач и m00» =)))). Короче не суть =). Задача моей серии – показать новичкам, как на самом деле ломаются сайты. Новички привыкли либо пользоваться X-Spider`Ом, либо бродить по порталам типа wwwsecuritylab.ru в поисках готовых решений. Это не правильно, но деваться им некуда. Ведь они новички. Когда-то и я сканил сайты X-Spider`Ом и тусил на wwwsecuritylab.ru, тупо используя чужие уязвимости. Примером является моя ламерская статья о ломе php-nuke =))) Валяется где-то рядом на портале. Приступим…
В первой главе я хотел бы нарисовать общую картину о сегодняшних web-технологиях и web-hack`инге. Возможно я буду писать нудно, где-то даже дотошно, но не прочитав этого, не уловив сути, вы не поймете и остальных глав из серии.
Давайте сначала разберемся, что все же относится к web-hacking`у? К веб-хакингу лично я отношу получение полного доступа или других привилегий за счет обхода систем защиты сайта, или сервера вцелом. Самым обычным примером web-hacking`Ом можно назвать дефейсы. Т.е. весь web-hack можно разделить на 2 основные части. Это web-hack на высоком уровне (лом пользовательских скриптов, поиск уязвимостей на сайте) и web-hack на низком уровне (лом сервера вцелом). В моей серии не будет рассмотрен хакинг на низком уровне. Не мой это профиль. Моей задачей является научить новичков работать своей головой и руками. Итак, приступим к знакомству к web-hack`ингу…
:: [ Web-Технологии ]
Для начала разберемся с чем нам придется иметь дело… Даже если вы новичок, вы наверняка слышали что такое html, что такое JavaScript, php или perl. Давайте я попробую рассказать вам что и почем… Начнем с html`а. Что же такое html? Это НЕ язык программирования, как считают многие! Это язык гипер-текстовой разметки, если мне не изменяет память… Html-теги – это кирпичи, исходный текст – это план стройки, а сайт, который вы видите в браузере, это готовая работа по плану из кирпичей. =). Давайте рассмотрим конкретный пример.
Для примера возьмем адрес wwwya.ru. Забиваем адрес в браузере и просматриваем исходный код... Я не буду тратить время, чтобы объяснить что и где. Вообще, если вы ниче не поняли из исходника, который вы увидели – обязательно качайте ман по html (ссылка внизу статьи) и разбирайтесь! Знание html вам обязательно понадобится! Из данного сурса, мы видим что на странице будет рисунок и форма для отправки данных к поисковым ботам. Никаких операторов итп, никаких переходов. Линейный алгоритм построения страницы. Т.е. ничего из разряда программирования, что и требовалось доказать. Также вы можете заметить элементы JavaScript. Повторяю! Это НЕ html теги!
Ну а что же тогда JavaScript? Насколько я знаю, этот пользовательский язык программирования, основанный группой специалистов из Netscape для своего браузера. Получил признание и всеобщее распространение. В настоящее время трудно представить крупный проект без элементов JavaScript`инга. Что же он дает и что позволяет? JavaScript превращает html страничку в динамическую форму. Даже, я бы сказал, визуальную. JavaScript позволяет программисту запускать скрипты на машине пользователя. Т.е. браузер, используемый пользователем, должен уметь выполнять JavaScript скрипты, т.к. JavaScript, как было сказано выше, является пользовательским языком программирования, и запускается у пользователя на машине.
Помимо пользовательских языков web-программирования, существуют и серверные, получившие в настоящее время широкое распространение. Это всем известные php, perl, asp итд. Серверные скрипты выполняются именно на сервере, и не зависят не от браузера пользователя, не от быстродействия машины пользователя. Скорость их работы зависит только от быстродействия сервера, на котором находит запрашиваемый ресурс. Зачем нужны серверные языки программирования? Как и было сказано (и помойму уже не один раз), html не позволяет создавать динамические сайты, т.е. если вам нужно поменять что-то на сайте, или добавить что-то новое, вам придется править html ресурс. Это как клавиатра с одной кнопкой. А серверные языки программирования позволяют «генерировать» html страницу, в зависимости от переданных скрипту параметров. Теоретически, это могут делать и JavaScript скрипты, но для этого, необходимо сначало загрузить все данные на компьютер пользователя, что порой просто невозможно. Серверные скрипты обрабатывают параметры, переданные ему браузером через адресную строку либо формы, и отоброжают нужную инфу конечному пользователю в виде html документа. Скорость генерации html страниц серверным скриптом, т.е. скорость выполнения самого скрипта, очень мала. Настолько, что ею можно пренебречь. Сейчас у вас полная каша в голове от прочитанного выше. Чтобы навести порядок, давайте рассмотрим тот же пример с яндексом.
Давайте представим, что яндекс был бы написан на html… Это просто невозможно. Html – это лишь внешний вид сайта. Он не может быть использован для реализации поисковой машины. Html, это как корпус от компьютера. Без внутренностей – это лишь кучка металопластика. И сколько бы вы не нажимали на кнопку Power, вы не заставите корпус работать… Сердце Яндекса – это скрипты. Но почему тогда роль серверных скриптов не могут выполнять пользовательские скрипты (JavaScript, VBScript…)??? Как было сказано, пользовательские скрипты выполняются на машине пользователя. Т.е. если бы яндекс был написан, например на JavaScript`е, то при заходе на него, он сначала бы перекинул всю свою БД к вам на комп =))) Что тоже невозможно. БД яндекса настолько велика, что ее обслуживают кучища серверов, объедененных в сеть. Представьте себе 2-х комнотную квартиру, забитую компами =))) Вот так примерно выглядит сердце Яндекса. Чтоже происходит когда вы посылаете поисковой запрос??? А давайте посмотрим. Зайдем на ya.ru, забьем туда «hack» и нажмем «Найти!». Что мы получим? В адресе браузера мы увидим такую картину:
http://www.yandex.ru/yandsearch?rpt=rad&text=hack
Из строки видно, что браузер обращается к скрипту, по адресу http://www.yandex.ru/yandsearch и передает ему 2 переменные. Первая «rpt», имеет значение «rad», это что-то не наше… А вторая «text» имеет значение «hack», как раз то, что мы вбили в запрос. Скрипт yandsearch сделает выборку из своей базы по переменной text, т.е. Найдет все документы, имеющиеся у него в БД, которые содержат текст «hack» и отобразит его пользователю. При этом будут затрачены только ресурсы сервера! Если бы Яндекс был написан на javaScript, то все эти действия пришлось бы выполянять машине пользователя. Кстати именно поэтому серверные скрипты невозможно просмотреть, т.е. получить сурс. Они выполняются на сервере и выдают готовый html в браузер. Многие новички, ошибочно, считают что исходник серверного скрипта можно просмотреть с помощью браузера. Это не правильно. Вы можете увидеть html исходник, исходник пользовательского скрипта (так как перед исполнением он грузится на машину пользователя), но никак не сурс серверного скрипта. Он доступен только серверу.
Надеюсь разница между html, пользовательскими и серверными скриптами ясна и я могу продолжить. Вы можете подумать, что это не имеет отношения к хакигу… Это не так… Поймите, если вы не выучите правила дорожного движения, далеко на своей тачке вы не уедите… тепрь немного истории web-hacking`а…
:: [ Как ыло раньше ]
Раньше весь процесс взлома, обычно, упирался в СИ (Социальная Инженерия). Небыло ни php, ни perl, ни asp ничего подобного. А cgi был распространен только на очень крупных проектах, т.к. требовал больших затрат со стороны программиста. Одним словом серверных языков практически не было. Вспомним Митника. В его времена и web-hacking`а не было =))) И web ваще не было =))). Митника можно считать основателем СИ. Когда я только начинал, более опытный чел мне сказал, что Митник – ламер, что время просто тогда было дырявое… Это не так. Митник был, и есть, великий. Это не обсуждается =). Вернемся к веб-хаку. Раньше такого понятия практически не существовало. Лишь еденицы, владеющие знаниями cgi могли проводить атаки на сайты через дыры в скриптах. Другие пользовались СИ, третьи использовали дыры на серверах и в протаколах… Потом появился перл, пхп и другие. Это более «мягкие» языки. Они дали возможность рядовому пользователю создавать достаточно крупные проекты. Что впринципе и произошло =))) Программить стали все, кому не лень =). Что и привело к развитию web-hacking`а, точнее к развитию web-hacking`а на высоком уровне.
:: [ Что происходит сейчас… ]
Сейчас происходит примерно следующее… Большой дядя решил открыть Интернет-магазин и сгрезти лаве. Но денег на нормального программера он зажал, отдав их неизвестному. Зато сэкономил 100 баксов =))) и купил сыну мороженого =))))). В итоге этот программер, неизвестного качества пишет скрипты интернет-магазина, пускает их в сеть, берет лаве и смывается. Через несколько месяцев работы инет-магаза хозяин вдруг обнаруживает, что на главной странице написано «Дефасед бай Мария Батьковна» =). А еще более частая картина такая. Большой дядя совсем зажимает лаве и покупает готовый скрипт, доступный для всеобщей покупки. И уже через месяц видит на главной «Дефасед бай **Тим. Админ лох» =).
Как вы уже поняли, я буду учить именно хакингу, на уровне взлома сайтов. В моей серии вы узнаете как ломить сайты имея, и не имея исходный текст скриптов, как ломить сайты с помощью СИ и прочее. Вступление я сделал, далее выбор за вами. Хочется отметить, что практикуясь и тренируясь, основываясь на мою серию, вы не только научитесь ломить сайты, но и узнаете много о web-технологиях. Таких как html, javascript, php, sql и многое другое.
На сегодня это все =(. Ждите продолжения. В следующей главе я научу ломить сайты на серверных скриптах, не зная исходного кода. Будут рассмотрены такие популярные атаки как php-inj, sql-inj и много нового.
Ман по html:
1. OnLine - http://www.html.manual.ru
1. ZIP - http://html.manual.ru/html.manual.ru.zip

Теги: хакинг,статьи