Optimización de reglas de Firewall de aplicaciones web

1

A continuación se presentan las dos Reglas tomadas del conjunto de reglas principales de ModSecurity CRS. Estas dos reglas son las reglas básicas para los ataques XSS. Si observamos estas dos reglas, sus variables y acciones son iguales en lo que difieren en su expresión regular, es decir, \ bgetparentfolder \ b "y \ bonmousedown \ b \ W *? \=" Y encontramos una gran cantidad de tales reglas. ¿Es esto una redundancia? ¿Puedo combinar estas reglas, es decir, una sola expresión regular?

  

SecRule   REQUEST_COOKIES | REQUEST_COOKIES_NAMES | REQUEST_FILENAME | ARGS_NAMES | ARGS | XML: / * "\ bgetparentfolder \ b" \     "phase: 2, rev: '2.2.4', capture, t: none, t: htmlEntityDecode, t: compressWhiteSpace, t: lowercase, ctl: auditLogParts = + E, block, msg: 'Cross-site   Scripting (XSS)   Ataque ', id:' 958016 ', etiqueta:' WEB_ATTACK / XSS ', etiqueta:' WASCTC / WASC-8 ', etiqueta:' WASCTC / WASC-22 ', etiqueta:' OWASP_TOP_10 / A2 ', etiqueta:' OWASP_AppSensor / IE1 ', etiqueta:' PCI / 6.5.1 ', logdata:'% {TX.0} ', gravedad:' 2 ', setvar:' tx.msg =% {rule.msg} ', setvar: tx.xss_score = +% {tx.critical_anomaly_score}, setvar: tx.anomaly_score = +% {tx.critical_anomaly_score}, setvar: tx.% {rule.id} -WEB_ATTACK / XSS -% {matched_var_name} =% {tx.0} "

     

SecRule   REQUEST_COOKIES | REQUEST_COOKIES_NAMES | REQUEST_FILENAME | ARGS_NAMES | ARGS | XML: / * "\ bonmousedown \ b \ W *? \=" \     "phase: 2, rev: '2.2.4', capture, t: none, t: htmlEntityDecode, t: compressWhiteSpace, t: lowercase, ctl: auditLogParts = + E, block, msg: 'Cross-site   Scripting (XSS)   Ataque ', id:' 958414 ', etiqueta:' WEB_ATTACK / XSS ', etiqueta:' WASCTC / WASC-8 ', etiqueta:' WASCTC / WASC-22 ', etiqueta:' OWASP_TOP_10 / A2 ', etiqueta:' OWASP_AppSensor / IE1 ', etiqueta:' PCI / 6.5.1 ', logdata:'% {TX.0} ', gravedad:' 2 ', setvar:' tx.msg =% {rule.msg} ', setvar: tx.xss_score = +% {tx.critical_anomaly_score}, setvar: tx.anomaly_score = +% {tx.critical_anomaly_score}, setvar: tx.% {rule.id} -WEB_ATTACK / XSS -% {matched_var_name} =% {tx.0} "

    
pregunta Ali Ahmad 02.08.2012 - 06:08
fuente

1 respuesta

1

Bueno, la forma en que leo la diferencia entre esas dos expresiones regulares,

\bgetparentfolder\b

\bonmousedown\b\W*?\=

es que el primero solo hace coincidir la cadena "getparentfolder", mientras que el segundo coincide con la cadena "onmousedown" anexada con cualquier cosa que no sea letras, dígitos y guiones bajos, coincidiendo perezosamente con el elemento anterior (el carácter adjunto) cero o mas veces Creo que esto coincidiría con ambas formas de usar el evento javascript de onmousedown:

En HTML:

<element onmousedown="SomeJavaScriptCode">

En JavaScript:

object.onmousedown="SomeJavaScriptCode"

Esto

Ah, y en cuanto a la primera de esas expresiones regulares, "\ bgetparentfolder \ b", no lo encuentro en ninguna referencia de Javascript o JScript, pero después de buscarlo en Google, veo que aparecen las funciones y los métodos de ese nombre en varios idiomas, como VBScript, por ejemplo.

Entonces, está claro que las dos reglas buscan implementaciones muy diferentes de la misma clase de ataque (XSS). Así que creo que no tendría sentido combinarlos en una sola regla con una sola expresión regular combinada.

    
fuente

Lea otras preguntas en las etiquetas