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, дают оценку в качестве некоторой величины, вы можете настроить порог этой величины и вызвать действие в соответствии со сценарием использования.

Похожие темы

Как установить PHP 7 (PHP-FPM и FastCGI) для ISPCo... Источник: https://www.howtoforge.com/tutorial/install-php-7-on-debian-8-jessie/ Если вы пользователь Windows, то обратитесь к статье "Как у...
Black Mamba — Metasploit Shellcode generator... https://codeby.net/forum/threads/venom-1-0-12-codename-black-mamba.58468/ В этой статье я хочу ознакомить вас с неплохим инструментом для пентестин...
Как настроить fail2ban для защиты сервера Apache H... Сервер Apache HTTP в производственной среде может оказаться под различного рода атаками. Атакующие могут пытаться получить несанкционированный доступ ...
PTF (фреймворк для тестирования на проникновения):... - Бендер, а ты уверен, что этой дорогой короче?  - Сейчас уже не так как час назад. (Футурама) Довольно часто мне приходилось видет...
Проверка Уязвимостей — Руководство... https://codeby.net/forum/threads/proverka-ujazvimostej-s-pomoschju-metasploit-pro.57957/ Сканирование уязвимостей играет ключевую роль в процессе у...