💩SQL injection (SQLi) - это уязвимость в веб-приложениях, которая позволяет злоумышленнику вмешиваться в запросы, которые приложение делает к своей SQL базе данных.
💩Тип:
Web, Server-Side (эксплуатация происходит на стороне сервера приложения).
К основным разновидностям можно онтести:
- 💩Error-Based SQLi - эксплуатация происходит путем вызова ошибок синтаксиса SQL.
- 💩Union-Based SQLi - эксплуатация происходит путем применения оператора SQL UNION.
- 💩Blind SQLi - категория вмещает в себя все типы SQLi, в которых мы не видим явного подтверждения произведенной эксплуатации.
- 💩Boolean-Based SQLi - эксплуатация происходит путем применения логических операторов SQL.
- 💩Time-Based SQLi - эксплуатация происходит путем применения задержек во времени для проверки работы эксплоита.
- 💩Out-of-Bound SQLi - в процессе эксплуатации мы получаем отклик на подконтрольный нам сервер от приложения.
- 💩Second-Order SQLi - вредоносный код внедряется в какой-то элемент приложения и только потом при определенных условиях попадает в SQL-запрос. Тут могут быть применимы все остальные типы SQLi.
💩Пример полезной нагрузки:
https://example.com/login?name=admin'--💩Влияние:
Чтение конфиденциальных данных, влияние на функционал приложения, исполнение произвольного кода (RCE).
💩Как защититься?
Наиболее эффективным способом является использование параметризированных звпросов (prepared statements). Другими методами являются валидация входных данных, использование белых списков, изменение логики работы приложения.
Я бы сказал, что в современных приложениях находить "стоящие" SQLi становится сложнее ввиду того, что много кто применяет меры защиты. Они могут легко находиться сканерами уязвимостей, однако составить работающий эксплоит бывает проблематично.
#edu #vuln #web #sqli


