SQLChop — это новый механизм обнаружения SQL инжектов, построенный на выявлении определённых маркеров SQL и анализе синтаксиса. Принимаемые данные (URLадрес, body, cookie и т. д.) вначале будут декодированы и приведены к виду, наиболее близкому к виду, соответствующему выполняемой в веб-приложении функции, затем будет произведён анализ для классификации результата. SQLChop основывается на знании компилятора и теории автоматов и работает на временной сложности O(N).

Исходный код доступен здесь: https://github.com/chaitin/sqlchop

Документация: http://sqlchop.chaitin.com/doc.html

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

01

Зависимости SQLChop

Альфа релиз SQLChop, предназначенный для тестирования, включает C++ заголовок и разделяемые объекты, библиотеку python, а также несколько примеров использования. Этот выпуск был протестирован на большинстве дистрибутивов Linux.

Если будете использовать с Python'ом, то нужно установить protobuf-python, например, так:

Если вы используете C++, то вам нужно установить protobuf, protobuf-compiler и protobuf-devel, например так:

Собираем SQLChop

Загрузите последний выпуск с https://github.com/chaitin/sqlchop/releases

Make

Запустите python2 test.py или LD_LIBRARY_PATH=./ ./sqlchop_test

is_sqli

Получив строку запрос определим, является ли SQL-инъекцией

Параметр: строка

Возвращаемое значение: тип bool, возвращает True для SQLi (инжект), возвращает False для нормальных случаев.

classify

Получив ввод для веб-приложения, classify API декодирует этот ввод и ищут возможный SQL-инжект внутри. Если SQLi найден, то будет выведен запрос.

  • Параметр 1: объект со следующими ключами
  1. urlpath: полный адрес веб-запроса
  2. body: строка, тело http запроса POST/PUT
  3. cookie: строка, содержимое куки веб-запроса
  4. raw: строка, другое обычное поле, которое нуждается в обычном декодировании.
  • Параметр 2: детали, если возвращаемое значение True, то будут возвращены детали по запросу, если False, то будет возвращён только результат, которые выполняется быстрее.
  • Return: объект содержит результат и запрос
  1. result: int, положительная величина, показывающая содержит ли веб-запрос sql-инжект
  2. payloads: список объектов, содержащих key, score, value и source
  • key: строка, зарезервирована
  • source: строка, показывает, как рабочий запрос включён в оригинальный веб-запрос и как рабочий запрос раскодирован
  • value: раскодированный sqli запрос
  • score: источник декодированного запроса sqli

Пример:

Настройка

is_sqli API (в sqlchop.py) выявляют SQLi, дают оценку в качестве некоторой величины, вы можете настроить порог этой величины и вызвать действие в соответствии со сценарием использования.

Похожие темы

Анализ попыток SQL-инъекций с помощью Reversemap... Привет, форум! В этой статье мы познакомимся с инструментом, который поможет проанализировать попытки применить к вашему Web-серверу SQL-инъекцию....
Как защитить SSH сервер от атаки методом перебора ... Одной из распространённых атак на службу SSH является атака методом перебора, когда удалённый атакующий бесконечно пытается залогиниться с различными ...
Защита сайта от взлома: предотвращение SQL-инъекци... В недавней статье о том, как взламывать сайты, подверженные SQL-инжектам, я рассказывал о программе SQLMAP. Во время написания статьи (точнее перево...
XiaoPanOS Это довольно любопытный программный пакет, нацеленный исключительно для аудита безопасности Wi-Fi сетей. Это WPA/WPA2/WPS/WEP. Подходит он как для н...
Стресс-тест сети: DoS веб-сайта в Kali Linux с Gol... На страницах codeby.net уже говорилось об инструментах DoS, которые могут сильно нагрузить серверы HTTP, чтобы парализовать их работу из-за исчерпан...