libmodsecurity + owasp crs + nginx: Regex für Bindestrich im Namen eines POST-Parameters in benutzerdefinierter Ausschlussregel

libmodsecurity + owasp crs + nginx: Regex für Bindestrich im Namen eines POST-Parameters in benutzerdefinierter Ausschlussregel

Ein Paranoia-Level von 3 von Modsecurity verbietet das Hochladen nicht druckbarer Zeichen mit POST-Payloads (application/x-www-form-urlencoded) in Phase 2 unter Verwendung der Regel 920272 von OWASP CRS Version 3.3.4.

Manchmal wird es jedoch auch bei UTF-8-codierten Passwörtern ausgelöst.

Erster Versuch Regel 920272 zu deaktivieren funktioniert:

SecRule REQUEST_URI "/login" \
    id:2001,\
    phase:2,\
    pass,\
    nolog,\
    ctl:RuleRemoveById=920272"

aber es deaktiviert den Schutz ALLER mit POST hochgeladenen Felder.

Ziel: 920272 nur für 2 POST-Parameter deaktivieren:

  • Passwort
  • verstecktes Passwort

Hier wird es kompliziert:

SecRule REQUEST_URI "/login" \
    id:2001,\
    phase:2,\
    pass,\
    nolog,\
    ctl:RuleRemoveById=920272;ARGS:password"

funktioniert auch.

Aber ein Parameter „hidden-password“ enthält einen Bindestrich. Es waren mehrere Versuche nötig, den Bindestrich zu maskieren, ohne Erfolg.

Ich habe versucht:

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/$"

und wahrscheinlich noch ein paar mehr ...

Ich erhalte folgende Fehler:

  • "Not a number: password" oder
  • "Expecting an action, got: \-password" oder
  • "Expecting an action, got: 'hidden-password'"

oder irgendwie ähnlich einer der obigen Nachrichten.

Entsprechendhttps://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-%28v2.x%29#user-content-ARGS Der Name eines Parameters kann ein regulärer Ausdruck sein. Ok. Habe mehrere probiert (siehe oben) und es hat nicht geklappt.

Weißt du, warum ?

verwandte Informationen