Normalmente, cuando auditamos una aplicación web mal programada en su backend, es habitual encontrarnos con vulnerabilidades de inyección SQL. Principalmente inyecciones ciegas basadas en error o, si tenemos mucha suerte, basadas en unión de tablas. Sin embargo, lo que no es muy habitual es encontrarnos con una inyección sql fuera de banda.
Éstas no solo dependen de que la aplicación sea vulnerable sino de que el servidor tenga habilitados mecanismos que nos permitan exfiltrar la información por una banda distinta a la propia aplicación web.
El propio hecho de que los resultados sean devueltos por una vía completamente diferente, unido a que éstas pueden ser muy variadas, hace que sea muy difícil utilizar herramientas automatizadas para explotar este tipo de vulnerabilidades. Aún así, en ciertos casos donde los tiempos de respuesta de un servidor sean muy lentos o irregulares, puede merecer la pena tratar de exfiltrar la información de dicha forma.
Como ejemplo vamos a echar un vistazo a una inyección que me he encontrado recientemente en una auditoría web.
En este caso, la vulnerabilidad resultaba muy extraña puesto que el parámetro se llamaba sql***, pidiendo a gritos una inyección, pero la web no devolvía errores y no parecía ser afectada por técnicas basadas en tiempo. Sin embargo, nuestro mejor amigo Burp active scan parecía convencido de que existía una inyección en dicho parámetro.
[Read more…]