0

我正在尝试评估和阻止某些 URI 没有给定 ARG 的 GET/POST 请求。

以下规则不验证“!@eq 1”

(REQUEST_URI 和 REQUEST_HEADERS 在单独测试时按预期工作)

SecRule REQUEST_URI "(?i:(jwtpoc))" "phase:1,id:999955,block,log,deny,status:508,msg:'IP: %{REMOTE_ADDR} GET/POST test URI',chain"
SecRule &ARGS:cualquiera "!@eq 1" "chain"
SecRule &REQUEST_HEADERS:Referer "@eq 0"

如果我编写如下所示的 SecRule,我可以同时验证“@eq1”“!@eq1” :

SecRule &ARGS:cualquiera "@eq 1" "id:999957,phase:2,pass,log,capture,msg:'param cualquiera found: %{MATCHED_VAR}'"

规则 id 999955 如何实现这一目标?

例子

SecRule REQUEST_URI "(?i:(jwtpoc))" "phase:2,id:999955,block,log,deny,status:508,msg:'IP: %{REMOTE_ADDR} GET/POST test URI',chain"
  SecRule &ARGS:cualquiera "@eq 1" "chain"
   SecRule &REQUEST_HEADERS:Referer "@eq 0"

curl --form cualquiera=ANY http://foo.bar/jwtpoc.showcaller []

[22/Mar/2017:17:23:50 --0400] [foo.bar/sid#1ab39b8][rid#7f518c014e60][/jwtpoc.showcaller][1] Access denied with code 508 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. [file "/moduleconf/myrules/test/cp_rules.conf"] [line "2"] [id "999955"] [msg "IP: 10.10.10.145 GET/POST test URI"]

但是对于这个:

curl --referer myReferer http://beta.reservhotel.com/win/owa/jwtpoc.showcaller [ NOTOK ]

不考虑规则SecRule &ARGS:cualquiera "@eq 1" "chain"并且此操作未被阻止

谢谢!

4

1 回答 1

0

POST 参数在阶段 1 中不可用。因此,将链式规则 999955 更改为阶段 2 规则,它应该可以工作。

您还误解了链式规则的工作原理。它们用作 AND 参数。所以所有规则都必须匹配才能工作。这是您问题中的第一条规则,即阻止 jwtpoc 请求,该请求也没有 cualquiera 参数并且也没有推荐人。

您是第二次尝试,然后删除了 cualquiera 参数测试的 not 部分。因此,它会查找具有 cualquiera 参数且没有引荐来源网址的 jwtpoc 请求。您的第一个示例匹配所有三个规则,但您的第二个示例不匹配(因为中间规则不匹配)。

如果您想在没有 cualquiera 参数或引用者的情况下使所有 jwtpoc 请求失败,那么您需要为此 OR 语句编写两条规则。像这样:

#Rule 9999550 to block jwtpoc requests with a cualquiera argument
SecRule REQUEST_URI "(?i:(jwtpoc))" "phase:2,id:9999550,block,log,deny,status:508,msg:'IP: %{REMOTE_ADDR} GET/POST test URI',chain"
  SecRule &ARGS:cualquiera "!@eq 1"

#Rule 9999551 to block jwtpoc requests with no referrer
SecRule REQUEST_URI "(?i:(jwtpoc))" "phase:2,id:9999551,block,log,deny,status:508,msg:'IP: %{REMOTE_ADDR} GET/POST test URI',chain"
  SecRule &REQUEST_HEADERS:Referer "@eq 0"
于 2017-03-22T17:43:00.857 回答