【问题标题】:Varnish modsecurity rules syntax errors清漆 modsecurity 规则语法错误
【发布时间】:2020-04-15 16:20:36
【问题描述】:

我正在尝试在 Varnish (varnish-6.0.3) 中运行 modsecurity CRS,但我遇到了与规则 932106、932150、932105 和 932100 相关的问题 -> RCE 相关。 VCC 编译器抛出语法错误(例如 [rule 932106]):

   if(req.url ~ "(?:;|\{|\||\|\||&|&&|\n|\r|\$\(|\$\(\(|`|\${|<\(|>\(|\(\s*\))\s*(?:{|\s*\(\s*|\w+=(?:[^\s]*|\$.*|\$.*|<.*|>.*|\'.*\'|\".*\")\s+|!\s*|\$)*\s*(?:'|\")*(?:[\?\*\[\]\(\)\-\|+\w'\"\.\/\\\\]+\/)?[\\\\'\"]*(?:(?:(?:a[\\\\'\"]*p[\\\\'\"]*t[\\\\'\"]*i[\\\\'\"]*t[\\\\'\"]*u[\\\\'\"]*d|u[\\\\'\"]*p[\\\\'\"]*2[\\\\'\"]*d[\\\\'\"]*a[\\\\'\"]*t)[\\\\'\"]*e|d[\\\\'\"]*n[\\\\'\"]*f|v[\\\\'\"]*i)[\\\\'\"]*(?:\s|<|>).*|p[\\\\'\"]*(?:a[\\\\'\"]*c[\\\\'\"]*m[\\\\'\"]*a[\\\\'\"]*n[\\\\'\"]*(?:\s|<|>).*|w[\\\\'\"]*d|s)|w[\\\\'\"]*(?:(?:\s|<|>).*|h[\\\\'\"]*o))\b{
------------------------------------------------------------------------------------------------------------------------------------------#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

没有任何进一步的解释,这意味着语法错误在:\"之内,这有点令人惊讶,因为 " 字符被转义了。

过去有没有人遇到过类似的问题或知道如何解决?

规则集中的正则表达式未被修改,并且是来自 CRS (v3.0) 的稳定表达式。

【问题讨论】:

    标签: regex security varnish


    【解决方案1】:

    我建议你使用long strings 来降低逃逸问题的风险。

    这是 Varnish 中长字符串的样子:

    {"Some string, including "double quotes""}
    

    这样,您不需要转义双引号,也许这会解决您的问题。

    【讨论】:

    • 也许这不是我问题的确切答案,但它有助于找到错误。谢谢!
    猜你喜欢
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多