
modsecurity의 paranoia_level = 3은 owasp crs 버전 3.3.4의 규칙 920272를 사용하여 2단계에서 인쇄할 수 없는 문자가 POST 페이로드(application/x-www-form-urlencoded)로 업로드되는 것을 금지합니다.
그러나 때로는 UTF-8로 인코딩된 비밀번호도 트리거됩니다.
규칙 920272를 비활성화하려는 첫 번째 시도는 작동합니다.
SecRule REQUEST_URI "/login" \
id:2001,\
phase:2,\
pass,\
nolog,\
ctl:RuleRemoveById=920272"
하지만 POST로 업로드된 모든 필드의 보호가 비활성화됩니다.
목표: 2개의 POST 매개변수에 대해서만 920272를 비활성화합니다.
- 비밀번호
- 숨겨진 비밀번호
상황이 복잡해집니다.
SecRule REQUEST_URI "/login" \
id:2001,\
phase:2,\
pass,\
nolog,\
ctl:RuleRemoveById=920272;ARGS:password"
잘 작동합니다.
그러나 "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/"
ctl:RuleRemoveById=920272;ARGS:^/hidden\-password/$"
그리고 아마도 몇 개 더있을 것입니다 ...
내가 얻는 오류는 다음 중 하나입니다.
"Not a number: password"
또는"Expecting an action, got: \-password"
또는"Expecting an action, got: 'hidden-password'"
또는 위의 메시지 중 하나와 유사합니다.
에 따르면https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-%28v2.x%29#user-content-ARGS 매개변수 이름은 정규식일 수 있습니다. 좋아요. 여러 가지 방법(위 참조)을 시도했지만 실패했습니다.
왜인지 아시나요?