ModSecurity Ложно-положительный результат SQL Внедрение - PullRequest
0 голосов
/ 13 июля 2020

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

Последняя запись, которая была отклонена, была Need a price on cabinet style 42”

Набор правил, который был вызвано было SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/| !REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "(^[\"'`´’‘;]+|[\"'`´’‘;]+$)"

Ошибка в журналах отображалась как ModSecurity: Access denied with code 403 (phase 2). Pattern match "(^[\\"'`\\xb4\\x92\\x91;]+|[\\"'`\\xb4\\x92\\x91;]+$)"

С такой простой фразой я не уверен, почему срабатывает набор правил. В некоторых местах я читал, что это могло быть связано с используемой кодировкой. Мы будем благодарны за любые предложения или помощь.

1 Ответ

0 голосов
/ 14 июля 2020

Это примерно SQL инъекция.

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

SELECT * from products WHERE name='$variable'

до

SELECT * from products WHERE name='->' OR '1'='1' -- <-'

(->...<- с указанием введенного ввода)

Эта атака также работает с двойными кавычками, если запрос использует ее (см. https://chartio.com/learn/sql-tips/single-double-quote-and-backticks-in-mysql-queries/).

Чтобы проверить, SQL Возможна инъекция. Злоумышленник часто пробует разных персонажей. И вот почему появляется это правило.

Это означает, что общий файл ModSecuriy, который вас интересует, это:

https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/master/base_rules/modsecurity_crs_41_sql_injection_attacks.conf

И правило:

SQL Injection Attack: Common Injection Testing Detected id:'981318'

Процесс, который вы можете сделать, может быть похож на ModSecurity: Доступ запрещен с кодом 403 :

  • Сначала определите, какие запросы являются ложными, а затем
  • отключите их, например, используя SecRuleRemoveByID.

В данном случае, например,

<Directory /var/www/yourpath>
  SecRuleRemoveById 981318
</Directory>
...