Что на самом деле означает ARGS , ARGS_NAMES в mod_security crs?

Что на самом деле означают ARGS , ARGS_NAMES в основных наборах правил mod_security?

Я уже ссылался на справочник по Modsecurity2 Apache но я не получил ясного представления.

Может ли кто-нибудь дать мне конкретную идею, желательно с объяснением, что это на самом деле и как что-то на самом деле запускает положительное правило, подобное приведенному ниже.

Приведенное ниже правило срабатывает положительно для таких случаев, как «x и 6» и т. д., как правило, для любого «и», за которым следует цифра. Я понимаю, что такое имя файла запроса, в этом случае. я не понимаю, что такое ARGS и ARGS_NAMES. Мне нужен конкретный пример со ссылкой на правило ниже.

SecRule REQUEST_FILENAME|ARGS_NAMES|ARGS|XML:/* "(?i)\b(?i:and)\b\s+(\d{1,10}|'[^=]{1,10}')\s*[=]|\b(?i:and)\b\s+(\d{1,10}|'[^=]{1,10}')\s*[<>]|\band\b ?(?:\d{1,10}|[\'\"][^=]{1,10}[\'\"]) ?[=<>]+|\b(?i:and)\b\s+(\d{1,10}|'[^=]{1,10}')" \
    "phase:2,rev:'2.2.5',capture,t:none,t:urlDecodeUni,ctl:auditLogParts=+E,block,msg:'SQL Injection Attack',id:'959072',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',logdata:'%{TX.0}',severity:'2',setvar:'tx.msg=%{rule.msg}',setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:tx.%{rule.id}-WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"

person Enihr    schedule 17.06.2013    source источник


Ответы (1)


Пример:

http://server.invalid/test.php?pretty_arg=test123&ugly_arg=345test

ARGS_NAMES = "pretty_arg","ugly_arg"
ARGS = "pretty_arg:test123","ugly_arg:345test"    

Глянь сюда:

Если вы хотите удалить аргумент из определенного вызова, вы можете использовать

SecRule REQUEST_FILENAME "@streq /path/to/file.php" "phase:1,id:2001,t:none,nolog,pass,ctl:ruleRemoveTargetById=959072;ARGS:ugly_arg"
person Shuro    schedule 18.06.2013
comment
Понятно... Можете ли вы привести пример со ссылкой на правило sec, о котором я упоминал выше? Мое понимание дает мне что-то вроде того, что если пара имя + значение содержит что-то, что соответствует регулярному выражению, тогда это даст положительный результат. Из того, что вы говорите, я предполагаю, что здесь ARGS будет именем текстовой области html: значение текстовой области. Итак, предположим, что вместо полного удаления правила, если бы я должен был поместить исключение, я должен сделать !ARGS:fieldname или !ARGS_NAMES:fieldname. второй мне кажется несколько логичным. Я новичок в этом mod_sec! - person Enihr; 18.06.2013
comment
Обновил... надеюсь поможет ^^ - person Shuro; 20.06.2013
comment
Большое спасибо за твою помощь. Однако у меня есть небольшая путаница. Когда вы дали пример для ARGS, вы дали его как ARGS = ugly_arg:345test . Но при создании пользовательского исключения его ^ARGS:ugly_arg ... Эммм, по логике должно быть ugly_arg:345test ? Ну, я пробовал, и это не работает... То, что вы сказали, работает... Мне просто интересно, почему это соглашение... - person Enihr; 21.06.2013
comment
Извините, если я вас запутал... возможно, вы должны видеть ARGS как массив с Key‹->Value, ключ — это имя-аргумента, значение — это значение аргумента. Ваша проблема в значении аргумента, поэтому вы говорите, что удалите аргумент с именем ugly_arg из target-list. - person Shuro; 24.06.2013
comment
Спасибо! Теперь я понимаю дрейф. - person Enihr; 24.06.2013