【问题标题】:What does ARGS , ARGS_NAMES actually mean in mod_security crs?ARGS , ARGS_NAMES 在 mod_security crs 中的实际含义是什么?
【发布时间】:2013-06-13 09:52:27
【问题描述】:

在 mod_security 核心规则集中 ARGS 和 ARGS_NAMES 究竟是什么意思?

我已经提到了Modsecurity2 Apache Reference,但我没有得到任何明确的想法。

谁能给我一个具体的想法,最好是解释一下,它实际上是什么,以及某些东西实际上如何触发一个积极的规则,如下面的。

以下规则对于“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}"

【问题讨论】:

    标签: regex apache mod-security


    【解决方案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"
    

    【讨论】:

    • 我明白了。你能举个例子来参考我上面提到的 sec 规则吗?我的理解给了我一些东西,例如如果名称 + 值对包含与正则表达式匹配的内容,那么它会给出肯定的结果。根据您的说法,我假设这里的 ARGS 将是“html textarea 的名称:textarea 的值”。所以假设如果我要放置一个例外,而不是完全删除规则,我应该做一个!ARGS:fieldname 或!ARGS_NAMES:fieldname。第二个对我来说似乎有点合乎逻辑。我是这个 mod_sec 的新手!
    • 已更新...希望对您有所帮助^^
    • 非常感谢您的帮助。不过,我在这里有点困惑。当您给出 ARGS 的示例时,您将其作为 ARGS = "ugly_arg:345test" 给出。但是在创建自定义异常时,它的 ^ARGS:ugly_arg ... 嗯,逻辑上不应该是 "ugly_arg:345test" 吗?好吧,我已经尝试过,但效果不佳...您所说的有效..我只是想知道为什么要进行此约定..
    • 对不起,如果我让你感到困惑......也许你应该将 ARGS 视为一个带有 KeyValue 的数组,键是参数名称,值是参数的值。您的问题在于参数的值,所以您说从目标列表中删除名称为“ugly_arg”的参数。
    • 谢谢!我现在明白了。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2021-10-07
    • 2013-01-04
    • 2015-02-21
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多