Ін'єкційний
Перетворіть поле пошуку на читання всієї бази даних.
Що таке Ін'єкційний?
Ненадійний вхід об’єднується в запит, який потім аналізує інтерпретатор, тому вхід перестає бути значенням і стає частиною інструкції. Ви розширите кінцеву точку пошуку в каталозі за три кроки: одинарна цитата викликає необроблену помилку SQL, яка повторює запит, умова, яка завжди виконується, видаляє опублікований фільтр, а UNION SELECT досягає іншої таблиці для електронних листів облікових записів, хешів bcrypt і ролей. Виправлення є зв'язаним параметром, тому база даних компілює оператор спочатку. Повернення необробленої помилки SQL також передає зловмиснику карту.
Що ви дізнаєтесь у Ін'єкційний
- Розпізнати SQL-ін’єкцію: параметр запиту, об’єднаний у запит, який база даних потім аналізує, щоб вхідні дані могли переписати запит і отримати дані, які кінцева точка ніколи не збиралася повертати
- Зчитування ескалації від тесту в одинарних лапках, який витікає з помилкою SQL, до завжди істинної умови, яка видаляє фільтр, до UNION SELECT, який виводить повністю іншу таблицю
- Зрозумійте, що ін’єкція не залежить від викрадених облікових даних або відсутності автентифікації; звичайний, повністю автентифікований обліковий запис може вводити через будь-який вхід, який сервер розглядає як код
- Застосуйте виправлення: використовуйте параметризовані запити або підготовлені оператори, щоб значення було зв’язано окремо та розглядалося як дані, а не вручну екранування або списки блокування небезпечних символів
- Уникайте витоку необроблених помилок SQL клієнтам і перевіряйте кожну кінцеву точку, яка створює запит, команду чи шаблон із вхідних даних для того самого шаблону конкатенації
Ін'єкційний — Кроки навчання
-
Звичайне місце покупця
Wexlar керує оптовим ринком і надає облікові записи покупців самообслуговування кожному, хто зареєструється. Боб взяв один, із одноразовою ідентичністю. Його місце займає простий покупець: переглядати каталог, робити замовлення, нічого привілейованого. Він відкриває консоль розробника, щоб побачити, що таке обліковий запис і що пропонує API.
-
Одне поле пошуку
Ніщо в обліковому записі Боба не є привілейованим, тому немає доступу до функцій адміністратора. Єдиний вхідний елемент, який його цікавить, — це пошук у каталозі: він бере все, що він вводить, і виконує збіг назв із базою даних продуктів.
-
Звичайний пошук
Боб починає зі звичайного пошуку, щоб побачити роботу кінцевої точки та дізнатися її форму. Пошук приймає параметр запиту q і повертає продукти, назва яких відповідає.
-
Працює за призначенням
Пошук поводиться точно так, як очікувалося. Три опублікованих ноутбука, лише ті поля, які має бачити покупець.
-
Додайте одну лапку
Найстаріший ін’єкційний зонд: Боб додає одну лапку до свого пошукового терміну. Якщо термін шукається як значення, пошук імені з лапками просто нічого не повертає. Якщо він об’єднується в SQL, помилкова цитата порушить запит.
-
Розкритий запит
Один додатковий символ призвело до збою кінцевої точки, і ця помилка дала Бобу потрібне підтвердження.
-
Перепишіть фільтр
Тепер, коли Боб знає, що термін стає частиною запиту, він перестає порушувати його та починає керувати ним. Він створює термін, який закриває рядок, додає умову, яка завжди є істинною, і коментує решту оригінального запиту.
-
Весь стіл
Фільтр, який обмежував пошук опублікованими продуктами, зник, і відповідь це підтверджує.
-
Дотягніться до іншого столу
Читати кожен товар погано; читання таблиць, яких пошук ніколи не мав на увазі, ще гірше. Боб використовує UNION , щоб додати рядки з іншої таблиці до результатів, вибираючи ту саму кількість стовпців, яку повертає запит продукту.
-
Сховище облікових даних у результатах пошуку
Рядки, які повернулися, взагалі не є продуктами.
Охоплення стандартів безпеки
OWASP API Top 10
- API8:2019 Injection
CWE
- CWE-74 Improper Neutralization of Special Elements in Output ('Injection')
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security