
a paranoia_level = 3 de modsecurity prohíbe que se carguen caracteres no imprimibles con cargas útiles POST (application/x-www-form-urlencoded) en la fase 2 usando la regla 920272 de owasp crs versión 3.3.4
Pero, a veces, también se activa con contraseñas codificadas en UTF-8.
El primer intento de desactivar la regla 920272 funciona:
SecRule REQUEST_URI "/login" \
id:2001,\
phase:2,\
pass,\
nolog,\
ctl:RuleRemoveById=920272"
pero desactiva la protección de TODOS los campos cargados con POST.
Objetivo: desactivar 920272 solo para 2 parámetros POST:
- contraseña
- contraseña oculta
Aquí la cosa se complica:
SecRule REQUEST_URI "/login" \
id:2001,\
phase:2,\
pass,\
nolog,\
ctl:RuleRemoveById=920272;ARGS:password"
Funciona también.
Pero un parámetro "contraseña oculta" contiene un guión. Fueron necesarios varios intentos para enmascarar un guión sin éxito.
Yo he tratado:
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/$"
y probablemente algunos más...
Los errores que recibo son:
"Not a number: password"
o"Expecting an action, got: \-password"
o"Expecting an action, got: 'hidden-password'"
o de alguna manera similar a uno de los mensajes anteriores.
De acuerdo ahttps://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-%28v2.x%29#user-content-ARGS El nombre de un parámetro puede ser una expresión regular. De acuerdo. Probé varios (ver arriba) y fallé.
Sabes por qué ?