❤️NoSQL injection (NoSQLi) - это уязвимость, с помощью которой злоумышленник может вмешаться в запросы, которые приложение делает к базе данных NoSQL
❤️Тип:
- Web, Server-Side
❤️Отличия от SQL-инъекции:
- -- Используются NoSQL СУБД (очевидно из названия)
- -- Нет универсального стандарта - сильно зависит от СУБД и языка приложения
- -- Существует инъекция операторов (не только синтаксиса)
- -- Некоторые NoSQL СУБД позволяют исполнение JS
❤️Разновидности:
- -- Инъекция синтаксиса (пример:
https://example.com/login?name=admin'||'1'=='1) - -- Инъекция операторов (пример:
https://example.com/login?username[$ne]=invalid)
❤️Влияние:
Обход авторизации, чтение / изменение данных, отказ в обслуживании (DoS), выполнение кода (RCE)
❤️Как защититься?
- -- Санитизация & валидация ввода
- -- Белый список разрешенных символов
- -- Использование параметризированных запросов
- -- Белый список разрешенных ключей (от инъекции операторов)
- -- Конкретные меры защиты зависят от конкретной NoSQL СУБД
Уязвимость сама по себе очень специфичная и очевидно, что будет присутствовать только если приложением используется NoSQL СУБД. Хоть, вроде как и существует некоторая общемировая тенденция к переходу к данному типу СУБД, SQL все еще сильно доминирует и на своей практике я их видел гораздо чаще NoSQL. Так или иначе, уязвимость встречается, и в таких случаях происходит некоторый ресерч для успешной эксплуатации, так как уязвимость слабо структуризируется и это как минимум интересно. Также, периодически встречается в CTF, и, если это не вектор по учебникам, то таск получается вполне достойным. 😎
#edu #vuln #web #nosqli
☠️ Hunt Or Be Hunted


