How to find SQL injection using SQLmap

SQL injection - це вразливість, в якій зловмисник створює або змінює поточні SQL-запити для відображення прихованих даних, їх зміни або навіть виконання небезпечних команд операційної системи на стороні сервера бази даних. Атака виконується на базі програми, що будує SQL-запити з введення користувача і статичних параметрів. SQLmap - це інструмент з відкритим вихідним кодом для тестування на проникнення, який автоматизує процес виявлення та експлуатації вразливостей SQL-ін'єкцій і захоплення серверів баз даних.

TOOLS FOR FIND VULNERABILITY

Логин Свят

1/3/20231 min read

SQL injection - це вразливість, в якій зловмисник створює або змінює поточні SQL-запити для відображення прихованих даних, їх зміни або навіть виконання небезпечних команд операційної системи на стороні сервера бази даних. Атака виконується на базі програми, що будує SQL-запити з введення користувача і статичних параметрів.

SQLmap - це інструмент з відкритим вихідним кодом для тестування на проникнення, який автоматизує процес виявлення та експлуатації вразливостей SQL-ін'єкцій і захоплення серверів баз даних.

-u для вказівки URL

-random-agent для зниження підозрілої активності

-tor для використання захищеного каналу

-dbs дивимося які бази доступні

-table дивимося таблицю

-columns дивимося колонки

-dump завантажуємо шлях до бази

-current-user інфо бази даних, включаючи її назву, номер версії, а також поточного користувача

-passwords збережені паролі в базі

-level Ця опція вимагає аргументу, який визначає рівень тестів для виконання. Існує п'ять рівнів. Значення за умовчанням  — 1, де виконується обмежена кількість тестів (запитів). Навпаки, рівень 5 тестуватиме набагато більше скриптів та кордонів. Корисні значення, які використовуються sqlmap, вказані в текстовому файлі xml/payloads.xml. Дотримуючись інструкцій, якщо sqlmap пропускає ін'єкцію, ви повинні мати можливість додавати власний корисний скрипт для тестування теж!

Що перевіряється за різного рівня тестування:

1) запити GET та POST level 1

2) значення заголовка HTTP Cookie тестуються у level 2

3) значення HTTP-агента User-Agent/Referer перевіряється на level 3

Загалом, що складніше виявити ін'єкцію SQL, то вище має бути встановлено рівень. Рекомендовано збільшити це значення, перш ніж повідомляти список розсилки, що sqlmap не може виявити певну точку входу.

-risk Ця опція вимагає аргументу також, який визначає ризик виконання тестів. Існує три значення ризику. Стандартне значення дорівнює 1, що є нешкідливим для більшості точок введення SQL. Значення ризику 2 додає до рівня за промовчанням тести для сильних SQL-запитів, що ґрунтуються на запитах, і значення 3 додає також тести SQL-ін'єкцій на основі OR. У деяких випадках, наприклад, ін'єкція SQL в інструкції UPDATE, ін'єкція корисного навантаження на основі OR може призвести до оновлення всіх записів таблиці, що, звичайно ж, не так, як хоче зловмисник. Відповідно до попередньої опції скрипти для застосування цієї опції лежать у текстовому файлі xml/payloads.xml, і ви можете вільно редагувати та додавати свої власні.

Як захиститься:

1. Не вміщувати в БД дані без обробки.

2. Не поміщати в запит керуючі структури та ідентифікатори, введені користувачем.

3. Додати капчу

4. Ввести ліміти на надходження запитів із одного IP