recientemente integré Modsecurity 3 + OWASP CRS en nuestro equilibrador de carga NGINX. Lo ejecuté en modo DetectionOnly por un tiempo, agregué algunas exclusiones y luego lo encendí.
Los últimos días obtuvimos más de 10.000 solicitudes como esta:
enlace * de (seleccione% 20name_const (CHAR (110,71,82,119,99,98,108,97,66), 1), name_const (CHAR (110,71,82,119,99,98,108,97,66), 1)) a)% 20 -% 20 y% 201% 3D1
enlace * de (seleccione% 20name_const (CHAR (67,89,85,118,102,119,117,73,89), 1), name_const (CHAR (67,89,85,118,102,119,117,73,89), 1)) a)% 20 -% 20% 27x% 27 =% 27x
Ninguno de estos fue bloqueado y después de algunas excavaciones encontré la razón: Ninguna de las reglas SQLI en REQUEST-942-APPLICATION-ATTACK-SQLI.conf mira a REQUEST_URI, la mayoría de ellas se parecen a esto:
SecRule REQUEST_COOKIES |! REQUEST_COOKIES: / __ utm / | REQUEST_COOKIES_NAMES | ARGS_NAMES | ARGS | XML: / *
La misma IP también probó algunas solicitudes en las que la consulta SQL estaba contenida en el parámetro de consulta después de?, estas se bloquearon simplemente bien.
Debido a que soy nuevo en Modsecurity, no solo quiero agregar REQUEST_URI a todas estas reglas, pensando que probablemente haya una buena razón para que no esté incluido en primer lugar.
No pude encontrar ninguna explicación de por qué las reglas SQLI ignoran el REQUEST_URI y solo verifican los parámetros de consulta y las cookies.
¿Alguien me puede dar una pista sobre por qué es así?