April 24, 2022

SQL Инъекция. Взлом базы данных

Всем доброго времени суток, с вами команда E7TEAM

Введение:

Практически каждый веб-сайт использует базу данных. Без нее мы бы не смогли авторизоваться, зарегистрироваться, сменить пароль и многое другое. Каждый раз когда мы входим в аккаунт/меняем ник и т.д, сайт посылает запрос в базу данных и потом получает от нее ответ. Но что если бы мы могли изменить запрос так, чтобы нам было выгодно?

Если запросы к базе данных не защищены, то мы можем совершить атаку SQL Injection, получить доступ к паролям сайта, или залить веб-шелл.

Предположим сайт посылает запрос "ОБНОВИТЬ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ ИМЯ ПОЛЬЗОВАТЕЛЯ = E7, СДЕЛАТЬ ИМЯ ПОЛЬЗОВАТЕЛЯ E7ISTHEBEST;"

E7ISTHEBEST(новое имя) вводится пользователем в поле ввода на сайте, а значит он может вписать туда "E7ISTHEBEST И СДЕЛАТЬ ДЕНЬГИ 5000", сайт получит запрос "ОБНОВИТЬ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ ИМЯ ПОЛЬЗОВАТЕЛЯ = E7, СДЕЛАТЬ ИМЯ ПОЛЬЗОВАТЕЛЯ E7ISTHEBEST И СДЕЛАТЬ ДЕНЬГИ 5000;", атакующий смог бы изменить баланс своего счета!

Основное:

Разберем простую форма логину:

Введем superadmin@gmail.com и admin, сайт пошлет такой запрос:

SELECT * FROM users WHERE email = superadmin@gmail.com AND password = admin;

Но если вместо email мы вставим ' or 1=1 --, то сайт отошлет:

SELECT * FROM users WHERE email = '' OR 1=1-- ' AND password = 'admin'

Все после -- будет в комментариях и мы войдем!

Конечно, бывают разные типы SQL Injection:

Blind.

Time-Based.

Booleam.

UNION Based.

И тестировать все типы не хватит времени, именно для этого создан инструмент SQLMAP!

Он автоматизирует поиск SQL Injection и их эксплуатацию.

https://github.com/sqlmapproject/sqlmap

Вывод:

SQL Injection - это простая в освоении атака, понимание которой даст возможность взламывать сайты за считанные минуты. А инструмент sqlmap в этом поможет!