Evasión avanzada de SQLi (IDS/WAF): técnicas manuales explicadas

SQLPAB o cómo explotar inyecciones SQL avanzadas

Muchos conoceréis la famosa herramienta SQLMAP, pero también habréis podido comprobar que su efectividad no es del 100%, incluso con el uso de los tampers, utilizados para nuestra causa actual: evadir IDS/WAF; y es aquí donde entra nuestra “herramienta” SQLPAB. Y por qué entrecomillo herramienta, pues porque realmente es una broma interna del equipo de redteam de CSIRTCV, es nuestra manera de hablar de las explotaciones manuales, por nuestro compañero y amigo Pablo Arias.

Como bien he comentado, vamos a centrarnos en la detección e inyección SQL manual, con algunos payloads de evasión de IDS/WAF; y es que la inyección SQL (SQLi) sigue siendo una de las vulnerabilidades más explotadas. A medida que los IDS (Sistemas de Detección de Intrusos) y los WAF (Web Application Firewall) mejoran, nosotros debemos recurrir a técnicas de evasión para burlar estos sistemas.  Y es por esto, que en este post me centraré en algunos ejemplos prácticos de cómo evadir un IDS mediante SQLi en Oracle y MySQL, la mayoría de los cuales hemos utilizado en auditorias donde hemos encontrado algún WAF. Cabe mencionar, además, que otro de los motivos por los que preferimos el uso de inyecciones manuales es porque reduce significativamente el número de peticiones realizadas al servidor.

1. Evasión con Comentarios Multilínea

El uso de comentarios SQL (/*...*/) permite ocultar porciones de la consulta, haciendo que el IDS/WAF no detecte el ataque.

  • Ejemplo ORACLE:  SEL/**/ECT/**/user/**/FROM/**/dual/**/–
  • Ejemplo MySQL: SEL/**/ECT/**/user()/**/–

El comentario multilínea, en estos casos, se utiliza para ocultar la palabra SELECT y los espacios evitando así que el IDS/WAF detecte cadenas SQL.

[Read more…]