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:
И тестировать все типы не хватит времени, именно для этого создан инструмент SQLMAP!
Он автоматизирует поиск SQL Injection и их эксплуатацию.
https://github.com/sqlmapproject/sqlmap
SQL Injection - это простая в освоении атака, понимание которой даст возможность взламывать сайты за считанные минуты. А инструмент sqlmap в этом поможет!