Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
bbqsql — Инструмент для эксплуатации SQL-инъекций | Kitploit
Инструменты/GitHubGitHub/ciscocxsecurity/bbqsql
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubciscocxsecurity/bbqsql

bbqsql

Инструмент для эксплуатации SQL-инъекций

Репозиторий
8261967 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

#BBQSQL# Инструмент для эксплуатации слепой SQL-инъекции

Содержание

  • Что такое BBQSQL?
  • Обзор Readme
  • Использование на высоком уровне
  • Установка
  • Параметры BBQSQL
  • Обзор синтаксиса запросов
  • HTTP-параметры
  • Экспорт конфигурации
  • Импорт конфигурации
  • Пользовательские хуки
  • Нашли ошибку?
  • Могу ли я помочь?
  • Откуда такое название?

Что такое BBQSQL?##

Слепая SQL-инъекция может быть настоящей болью при эксплуатации. Когда доступные инструменты работают, они работают хорошо, но когда они не работают, приходится писать что-то своё. Это отнимает много времени и утомительно. BBQSQL может помочь вам решить эти проблемы.

BBQSQL — это фреймворк для слепой SQL-инъекции, написанный на Python. Он чрезвычайно полезен при атаке на сложные уязвимости SQL-инъекции. BBQSQL также является полуавтоматическим инструментом, допускающим значительную настройку для тех сложных случаев SQL-инъекции. Инструмент спроектирован как независимый от СУБД и очень универсален. Он также имеет интуитивно понятный пользовательский интерфейс, значительно упрощающий настройку атак. Кроме того, реализована библиотека Python gevent, что делает BBQSQL чрезвычайно быстрым.

Обзор Readme

Мы постарались написать инструмент так, чтобы настройка атаки в интерфейсе была очень понятной. Однако для полноты мы включили подробный Readme, который должен дать вам дополнительное понимание особенностей каждой опции конфигурации. Стоит отметить, что каждая опция конфигурации в интерфейсе имеет своё описание, так что если вы решите запустить инструмент без прочтения этой страницы, вы всё равно сможете пробиться через атаку.

Использование на высоком уровне

Как и другие инструменты SQL-инъекции, вы предоставляете определённую информацию о запросе.

Необходимо предоставить обычную информацию:

  • URL
  • HTTP-метод
  • Заголовки
  • Куки
  • Методы кодирования
  • Поведение при перенаправлениях
  • Файлы
  • HTTP-аутентификация
  • Прокси

Затем укажите, куда будет вставляться инъекция и какой синтаксис мы инжектируем. Читайте далее для подробностей.

Установка

Это должно быть просто, но что есть. Попробуйте выполнить:

root@kitploit:~
sudo pip install bbqsql

Если это не сработает, вы можете установить из исходников. Инструмент требует gevent и requests.

Параметры BBQSQL

В меню вы увидите место для параметров BBQSQL. Здесь вы указываете следующие опции:

query

Это описано более подробно ниже в обзоре синтаксиса запросов.

csv_output_file

Имя файла для вывода результатов. Оставьте это поле пустым, если не хотите выводить в файл.

technique

BBQSQL использует два метода при проведении атаки слепой SQL-инъекции. Первый и используемый по умолчанию метод — binary_search. См. Википедию для получения дополнительной информации.

Второй метод, который вы можете использовать — frequency_search. Поиск по частоте основан на анализе английского языка для определения частоты, с которой встречается буква. Этот метод поиска очень быстр для неэнтропийных данных, но может быть медленным для неанглийских или запутанных данных.

Вы можете указать либо binary_search, либо frequency_search в качестве значения для этого параметра.

comparison_attr

Этот параметр определяет тип SQL-инъекции, которую вы обнаружили. Здесь вы можете установить, какой атрибут HTTP-ответа BBQSQL должен анализировать для определения true/false.

Вы можете указать: status_code, url, time, size, text, content, encoding, cookies, headers или history

Если вы обнаружили SQL-инъекцию, которая приводит к разному коду статуса сервера, установите здесь 'status_code'. Если отличается cookie — установите 'cookie'. Если отличается размер ответа — установите 'size'. Вы поняли суть.

concurrency

Concurrency основан на библиотеке gevent в Python. Функционально это выглядит как многопоточность, но подробности работы можно увидеть в нашем докладе на DefCon [ссылка вставлена]. Эта настройка управляет степенью параллелизма при выполнении атаки. Это полезно для регулирования запросов и ускорения времени атаки. Для действительно производительных веб-серверов, таких как nginx, мы смогли установить concurrency на 75. По умолчанию установлено значение '30'.

Обзор синтаксиса запросов

Если вы столкнулись с уязвимостью SQL-инъекции, имеющей некоторые странные особенности (например, нельзя включать определённые символы или такие функции, как ASCII/CHAR, не работают), вы, вероятно, оказывались в ситуации, когда писали какой-то скрипт с собственным синтаксисом инъекции. BBQSQL устраняет необходимость написания скриптов и предоставляет способ вставить ваш собственный синтаксис запроса и легко эксплуатировать уязвимость.

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

Ниже приведён пример запроса, который вы можете использовать для построения своего запроса.

В этом примере атакующий хочет выбрать версию базы данных:

root@kitploit:~
vulnerable_parameter'; if(ASCII(SUBSTRING((SELECT @@version LIMIT 1 OFFSET ${row_index}) , ${char_index} ,1))) ${comparator:>}ASCII(${char_val}) WAITFOR DELAY '0\:0\:0${sleep}'; --

Синтаксис запроса основан на заполнителях, которые сообщают BBQSQL, как выполнять атаку.

Вам необходимо указать следующие заполнители, чтобы атака сработала. Как только вы поместите их в свой запрос, BBQSQL сделает всё остальное:

${row_index}: Указывает BBQSQL перебирать строки здесь. Поскольку мы используем LIMIT, мы можем просмотреть n-ное количество строк в зависимости от значения ${row_index}.

${char_index}: Указывает BBQSQL, какой символ из подзапроса нужно запрашивать.

${char_val}: Указывает BBQSQL, с чем сравнивать результаты из подзапроса для проверки результата.

${comparator}: Это способ указать BBQSQL, как сравнивать ответы, чтобы определить, истинен результат или нет. По умолчанию используется символ >.

${sleep}: Это необязательный параметр, указывает BBQSQL, куда вставлять количество секунд задержки при выполнении временной SQL-инъекции.

Не все эти заполнители обязательны. Например, если вы обнаружили полу-слепую логическую SQL-инъекцию, вы можете опустить параметр ${sleep}.

HTTP-параметры

BBQSQL имеет множество HTTP-параметров, которые вы можете настроить при подготовке атаки. Как минимум, вы должны указать URL, куда должен быть вставлен запрос инъекции, и метод. Можно задать следующие опции:

  • files
  • headers
  • cookies
  • url
  • allow_redirects
  • proxies
  • data
  • method
  • auth

Вы указываете, куда нужно вставить запрос инъекции, используя шаблон ${injection}. Без шаблона инъекции инструмент не будет знать, куда вставлять запрос.

files

Укажите файлы, которые будут отправлены с запросом. Установите значение пути, и BBQSQL позаботится об открытии/включении файла.

headers

HTTP-заголовки, которые будут отправлены с запросами. Это может быть строка или словарь. Например:

{"User-Agent":"bbqsql"} или "User-Agent: bbqsql"

cookies

Словарь или строка куки, которые будут отправлены с запросом. Например:

{"PHPSESSIONID":"123123"} или PHPSESSIONID=123123;JSESSIONID=foobar

url

Укажите URL, на который должны отправляться запросы.

allow_redirects

Это логическое значение, определяющее, будут ли следовать HTTP-перенаправлениям при выполнении запросов.

proxies

Укажите HTTP-прокси для запроса в виде словаря. Например:

{"http": "10.10.1.10:3128","https": "10.10.1.10:1080"}

data

Укажите данные POST, которые будут отправлены вместе с запросом. Это может быть строка или словарь. Например:

{"input_field":"value"} или input_field=value

method

Укажите метод для HTTP-запроса. Допустимые методы:

'get','options','head','post','put','patch','delete'

auth

Укажите кортеж из имени пользователя и пароля для HTTP-базовой аутентификации. Например:

("myusername","mypassword")

Экспорт конфигурации

После того как вы настроили атаку в интерфейсе, вы можете экспортировать файл конфигурации. Вы увидите эту опцию при запуске инструмента. Экспортированный файл конфигурации использует ConfigParser и легко читается. Пример файла конфигурации приведён ниже:

`[Request Config] url = http://example.com/sqlivuln/index.php?username=user1&password=secret${injection} method = GET

[HTTP Config] query = ' and ASCII(SUBSTR((SELECT data FROM data LIMIT 1 OFFSET ${row_index:1}),${char_index:1},1))${comparator:>}${char_val:0} # technique = binary_search comparison_attr = size concurrency = 30`

Это полезно, если вы планируете возобновить атаку или просто скорректировать запрос, не желая проходить через возню с перенастройкой всех опций.

Импорт конфигурации

Вы также можете импортировать конфигурацию из командной строки или из пользовательского интерфейса. Чтобы импортировать конфигурацию из командной строки, просто запустите bbqsql со следующими опциями:

bbqsql -c config_file

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

Пользовательские хуки

Иногда нужно сделать что-то действительно сумасшедшее. Может быть, вам нужно зашифровать значения, поступающие в поле, перед отправкой запроса, или, возможно, вам нужно трижды закодировать URL. В любом случае, такие ситуации делают другие инструменты непригодными. BBQSQL позволяет вам определять функции "хуков", которые инструмент будет вызывать в различных точках запроса. Например, вы можете указать функцию pre_request, которая принимает запрос в качестве аргумента, выполняет необходимые мутации и возвращает модифицированный запрос для отправки на сервер.

Для реализации этого создайте файл Python и укажите функции-хуки. Доступные имена функций перечислены ниже. В вашем файле хуков вы можете определить столько или так мало функций, сколько захотите. Затем в разделе bbqsql_options меню вы можете указать расположение вашего hooks_file. BBQSQL загрузит этот файл и будет использовать определённые вами хуки.

Важно, чтобы функции-хуки, которые вы указываете, имели именно те имена, что указаны ниже, иначе BBQSQL не будет знать, какой хук вызывать в нужный момент. Функция args получает один параметр, содержащий все аргументы, используемые для создания HTTP-запроса. Функция pre_request получает объект запроса перед отправкой. Функция post_request получает объект запроса после отправки. Функция response получает объект ответа до его возврата в BBQSQL.

Доступны следующие хуки:

args: Словарь аргументов, отправляемых в Request().

pre_request: Объект Request непосредственно перед отправкой.

post_request: Объект Request непосредственно после отправки.

response: Ответ, сгенерированный из Request.

Для получения дополнительной информации о том, как работают эти хуки и как должен выглядеть ваш словарь hooks, обратитесь к документации библиотеки requests о хуках

Пример файла хуков может выглядеть так:

root@kitploit:~
# file: hooks.py
import time

def pre_request(req):
    """
    этот хук заменяет заполнитель на текущее время
    ожидается, что URL будет выглядеть так:
        http://www.google.com?k=v&time=PLACEHOLDER
    """
    req.url = req.url.replace('PLACEHOLDER',str(time.time()))
    return req

Нашли ошибку?

Отправляйте любые исправления ошибок или запросы функций на https://github.com/Neohapsis/bbqsql/

Могу ли я помочь?

Пожалуйста! Мы видим в этом отличную отправную точку для создания полнофункционального фреймворка SQL-инъекции. Не стесняйтесь форкать код, и мы сможем слить ваши изменения, если они будут полезны.

Откуда такое название?

BBQ — это абсолютно вкусно, как и SQL-инъекция!

Скачать инструмент