Белый список JSON ARGS_NAMES

Я мог бы использовать несколько советов по созданию белого списка JSON ARGS_NAMES, на которые, похоже, жалуется modsecurity. Я не уверен, как правильно указать ARGS_NAMES для запроса JSON. Мое приложение интенсивно использует JSON, поэтому есть несколько таких предупреждений для запросов разных стилей.

Следующее предупреждение вызывается запросом POST (вход в систему / аутентификация) к моему бэкэнд-приложению:

2015-08-06T23: 02: 21.09022 [Чт. Авг 06 23:02:21.090206 2015] [:error] [pid > 18099:tid 140155981653760] [client 192.168.216.16] ModSecurity: Предупреждение. > Сопоставление с образцом "(? I:(?:union\\s*?(?:all| Different | [(! @]?)? \\ s? [([]? \\ s? Select \\ s +) | (?: \\ w + \\ s + like \\ s +> [\ "'\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98])|(?:like\\\\s*? [\\"'\ xc2 \ xb4 \ xe2 \ x80 \ x99 \ xe2 \ x80 \ x98] \\%) | (?: [\ "'\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98]\\\\s*?like\\\\W*? [\\"'\ xc2 \ xb4... "в ARGS_NAMES: {"username":"userid2","password":"blahblah"}. [file "/etc/apache2/modsecurity-crs/activation_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [строка "223"] [id "981245"] [msg "Обнаруживает базовые попытки обхода аутентификации SQL 2/3"] [data "Сопоставленные данные: \x22:\x22userid2\x22,\x22p найден в ARGS_NAMES: {\x22username\x22:\x22userid2\x22,\x22password\x22:\x22blahblah\x22 }:{\x22username\x22:\x22userid2\x22,\x22password\x22:\x22blahblah\x22 }"] [серьезность" КРИТИЧЕСКИЙ "] [тег"OWASPCR " WEB_ATTACK/SQL_INJECTION"][имя хоста"api.host.name"] [uri "/user-api/auth-service"] [unique_id "VcPnfQobAhEAAEazjWUAAABB"]

Вот еще одно предупреждение, вызванное обновлением AJAX для данных сеанса пользователя:

2015-07-22T22: 02: 03.61377 [ср. 22 июля 22:02:03.613737 2015] [: ошибка] [pid > 14702:tid 140281273739008] [клиент 10.72.2.5] ModSecurity: доступ запрещен> с кодом 403 (этап 2), Совпадение с шаблоном "(.*)" В TX:981257-Обнаруживает MySQL > инъекции комментариев / пробелов и обрывов обратной связи - OWASP_CRS/WEB_ATTACK/SQLI-ARGS_NAMES:{"data":{"Categories": [{"uuid":"10009","имя": "Книги", "папка": "Школа"}],"category_ids": ["188"],"action_ids":["ed529b9f47ee-ab23-5b98-4404-d59a86b9","ed529b9f47ee-ab23-5b98-4404-d59a86b9","ed529b9f47ee-ab23-5b98-4404-d59a86b9"]}}. [file "/etc/apache2/modsecurity-crs/activation_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"][id "981176"] [msg "Превышен показатель входящей аномалии (общий счет: 20, SQLi=4, XSS=0): Последнее найденное сообщение: 981243-Обнаруживает классические проверки SQL-инъекций 2/2"] [data " Последние найденные данные:,\x22name\x22:"] [hostname "host.name.com"] [uri "/new/data"] [unique_id "VbAS2wobA80AADluSjYAAADw"]

Как я могу создать белый список для "ARGS_NAMES:{"username[..]"или"ARGS_NAMES:{data[..]"? Когда я пытаюсь создать белый список с регулярным выражением, я получаю следующее правило:

SecRule ARGS_NAMES: "({\" (данные) \ ":) (({\" [a-z _] + \ ":).)" "(.)" "Id:308, фаза:2,t: нет, nolog, pass, ctl: ruleRemoveTargetByTag =.; ARGS_NAMES: ({\ "(data) \":) (({\ "[a-z _] + \":).) "

Я полагаю, что это работает, если ограничения PCRE не превышены, от тестирования. Есть ли более простой способ сделать это для аргументов JSON?

Вот еще один метод, который я попробовал в более ранней итерации моих белых списков:

SecRule ARGS: data.transaction_ids "(([a-z0-9-]))" "id: 206, phase: 2, nolog, pass, ctl: ruleRemoveTargetByTag =.; ARGS: data.transaction_ids, ctl: ruleRemoveTargetById = 960024; ARGS: data.transaction_ids"

Насколько мне известно, это работает, но я хочу иметь возможность вносить в белый список любой запрос, который использует формат "{data:" JSON в теле запроса. Я хочу проверить правильный метод внесения в белый список аргументов JSON, прежде чем приступить к другому раунду тестирования.

Что мне здесь не хватает?

0 ответов

Другие вопросы по тегам