
a paranoia_level = 3 do modsecurity proíbe o upload de caracteres não imprimíveis com cargas POST (application/x-www-form-urlencoded) na fase 2 usando a regra 920272 do owasp crs versão 3.3.4
Mas, às vezes, também é acionado para senhas codificadas em UTF-8.
A primeira tentativa de desativar a regra 920272 funciona:
SecRule REQUEST_URI "/login" \
id:2001,\
phase:2,\
pass,\
nolog,\
ctl:RuleRemoveById=920272"
mas desativa a proteção de TODOS os campos carregados com POST.
Objetivo: desativar 920272 apenas para 2 parâmetros POST:
- senha
- senha oculta
Aqui as coisas ficam complicadas:
SecRule REQUEST_URI "/login" \
id:2001,\
phase:2,\
pass,\
nolog,\
ctl:RuleRemoveById=920272;ARGS:password"
funciona também.
Mas um parâmetro "senha oculta" contém um hífen. Foram necessárias várias tentativas para mascarar um hífen, sem sucesso.
Eu tentei:
ctl:RuleRemoveById=920272;ARGS:hidden-password"
ctl:RuleRemoveById=920272;ARGS:hidden\-password"
ctl:RuleRemoveById=920272;ARGS:'hidden-password'"
ctl:RuleRemoveById=920272;ARGS:^/hidden-password/"
ctl:RuleRemoveById=920272;ARGS:^/hidden\-password/$"
e provavelmente mais alguns ...
Os erros que recebo são:
"Not a number: password"
ou"Expecting an action, got: \-password"
ou"Expecting an action, got: 'hidden-password'"
ou de alguma forma semelhante a uma das mensagens acima.
De acordo comhttps://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-%28v2.x%29#user-content-ARGS o nome de um parâmetro pode ser um regex. OK. Tentei vários (veja acima) e falhei.
Você sabe por quê ?