jueves, 3 de abril de 2014

Sqlmap - Bypass a Waf - Ofuscación.

Bueno en esta ocasión vengo a mostrar algunos métodos que por lo que me he podido percatar, no suelen ser utilizados al momento de querer explotar una vulnerabilidad SQL inyección. En ésta ocasión vamos a ver algunos métodos que nos pueden ser muy útiles al momento de querer realizar un bypass a una aplicación protegida por algún tipo de WAF (Web Aplication Firewall). Púes sin mas que adicionar al tema, comencemos.


Recordando acerca de un WAF.


El WAF son soluciones que pueden ser tanto hardware como software, su función radica en analizar el tráfico web (entre el servidor web y la WAN) y brindar cierta protección a las aplicaciones contra los diversos ataques, los cuales pueden ser SQL Injection, Cross Site Scripting, Buffer Overlow. Protege ataques dirigidos al servidor web en tiempo real , este factor difiere de las cualidades que poseen  los IDS/IPS. El WAF es un intermediario entre un cliente y una aplicación, esto se puede observar cuando el cliente emite una petición la cual se redirige hacia el WAF,y otra desde el propio WAF hasta la aplicación que se encuentra en un servidor web final.


A continuación vamos a utilizar algunos scripts que nos permite de cierta forma poder relaizar un bypass a dichos WAF. Estos scripts le pertenecen al a herramienta SQLmap y se encuentran en la carpeta Tamper.


Por curiosidad vamos a abrir uno de los archivos. El elegido va ser modsecurityzeroversioned, para esto voy a utilizar PysScripter v.2.5.3 el cual es un entorno de desarrollo integrado de código abierto de python.



Podemos observar que el script tiene como función cargar un payload  con el fin de realizar saltarse el modo de seguridad del WAF.

En un pequeño ejemplo en la cual la variable "id" no se encuentra debidamente validada, vamos a utilizar el script anteriormente mencionado.

Objetivo : http://www.target.com/index.php?id=12


1.-  12) /*!00000UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL*/#

2.-  12 /*!00000UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL*/#

3.-  12') /*!00000UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL*/#

4.-  12' /*!00000UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL*/#

5.-  12%' /*!00000UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL*/#


Podemos observar que los simbolos ( '#' , '--' , '/*' ) se combinan para poder generar diferentes tipos de sentencias las cualesvan a ser útiles para realizar un bypass al WAF.



A continuación vamos a dar detalles de como poder efectuar estos ataques para poder de cierta forma realizar un bypass a los WAF/IDS conocidos. Como ya mencione nos vamos a basar en los scripts que se encuentran almacenados en una de las carpetas de nuestra herramienta SQLmap cuyo nombre es Tamper.

Dichos scripts son tanto para hacer ataques a base de datos MySQL como MSSQL (Microsoft SQL Server.)




Antes de iniciar una prueba, voy a dar una pequeña definición a las opciones que vamos a utilizar.


  1. ---technique   :   Se utiliza para seleccionar la técnica que se va a utilizar en la inyección ( B - E - U - S - T - Q.)
  2. -v                    :   Es para seleccionar el nivel de esfuerzo por parte de la herramienta : 0-6 (por defecto toma el valor de 1)
  3. --batch           :   Sirve para que el usuario no tenga la necesidad de ingresar cualquier dado una vez iniciado las inyecciones(Se obvia el ingreso de Y/N).
  4. --tamper        :   Se utiliza para seleccionar el tipo de manipulación que se efectuará a la inyección por parte del script que se seleccionara a su continuación. 
  5. --risk              :  Riesgo de pruebas que se desee realizar (0-3, por defecto toma el valor de 1)
  6. --level            :  Nivel de pruebas que desee realizar (1-5, por defecto toma el valor de 1)

Bueno para las pruebas he optado por un objetivo al azar el cual posee una vulnerabilidad SQL Inyeccion.
Ahora va ser sometido a los distintos tipos de Scripts que poseemos.




Por el nombre del script podemos deducir que la técnica que se va a utilizar esta relacionado con los espacios en las inyecciones. 

Despues de observar el código se puede deducir que en MySQL se va a permitir que los caracteres 09, 0A,0B,0C y 0D se utilicen en lugar de los espacios.



 A continuación vamos a utilizar otro script de toda nuestra colección que poseemos.


El script charencode nos puede ser muy útil cuando atacamos un sitio web protegido por un WAF,el cual tiene prohido el ingreso de ciertas palabras como puede ser el caso de columns_name, table_name, group_concat, etc.


 Este script nos permite de cierta forma disfrazar dichas palabras.


Elegimos otro script que también nos puede ser útil al momento de querer extraer información saltando alguna clase de WAF.


Como el mismo nombre lo dice, con este script vamos a poder encodear las sentencias a base64.


A continuación elegimos una de las sentencias para decodearlo la inyección en texto plano.

Encode  :  MSkgVU5JT04gQUxMIFNFTEVDVCBOVUxMLE5VTEwsTlVMTMTCxOVUxMOVUxMIw==

Decode : 1) UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL#


Procedemos en elegir uno mas de los tantos scrips que tenemos.



Con este script vamos a utilizar / ** /  para dividir de cierta forma las palabras claves en la inyección.

Ejemplo :   

Entrada :  'INSERT' 

Salida    :  'IN/**/S/**/ERT'



Con el siguiente Script vamos a poder realizar comentarios para poder realizar un exitoso bypass.




Ejemplo : 

Entrada  :  1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,115,114,121,58))#

Salida    :  1/*!UNION**!ALL**!SELECT**!NULL*/,/*!NULL*/,/*!CONCAT*/ (/*!CHAR*/ (58,122,114,115,58),/*!IFNULL*/(CAST(/*
!CURRENT_USER*/()/*!AS**!CHAR*/),/*!CHAR*/(32)),/*!CHAR*/(58,115,114,121,58))#



Bueno cabe mencionar que si nos enfrentamos a una inyección ya sea en ASP/ASP.NET nos vendría muy útil utilizar el script llamado charunicodeencode.py ya que utiliza el Unicode encoding para ocultar de cierta forma el payload que vamos a inyectar.




Bueno hemos llegado al final del post, espero que esta información les sea de utilidad al momento de querer realizar un exitoso bypass a un WAF/IDS. Bueno me despido y será hasta la próxima. Nos vemos.









7 comentarios:

  1. Excelente aporte , no sabia de q SQLMAP tenia todo estos scripts

    ResponderEliminar
  2. Muy buen aporte, casi siempre no quedamos en el dump jaja, espero saques otro sobre los comandos para poder obtener una shell de sql, o subir una pagina.

    ResponderEliminar
  3. Exelente aporte espero que tengas ganas de compartir con nosotros algo de tu conocimiento de SQLMAP, tambien me gustan algunos temas que te interesan, pero yo voy mas al lado del Calculo Tensorial con aplicacion a Variedades 4D acuerdate que el universo se puede considerar como una variedad 3D embebida en 4D y uno dee mis libros favoritos es Tensors,Differentials Forms and Variational Principles David Lovelock y Teoria Clasica de los Campos Landau ... ojala podamos intercambiar ideas.

    ResponderEliminar
    Respuestas
    1. Quisiera comenzar felicitando a todos y deseándoles una Feliz Navidad (disculpen por el retraso) y un feliz Año Nuevo. Y también informar que voy a retomar mi blog con nuevos post que a mi parecer pueden ser interesantes durante el verano del 2016. Todo esto se debe a que he estado sumamente ocupado en temas de mis estudios. Y Silvia me encantaría poder debatir y hacer una lluvia de ideas de los temas de interés común, si gustas puedes enviarme una invitación de amistad a mi cuenta de fb ( https://www.facebook.com/Zer0CooL15 ) que es donde estoy mas tiempo compartiendo temas de interés con mis amigos. Bueno espero tu invitación y te deseo un Feliz Año Nuevo 2016.

      Eliminar
    2. Me gustaria a ver si puedes decirme como abrir puertos en virtualbox con kali linux instalado....trato pero parece hago algo mal....saludos

      Eliminar
  4. Pregunta, Esta bien la sintaxis de SQLMAP porque yo escribo --technique=U y no me acepta como tu la escribes...

    ResponderEliminar
  5. SSN FULLZ AVAILABLE

    Fresh & valid spammed USA SSN+Dob Leads with DL available in bulk.

    >>1$ each SSN+DOB
    >>3$ each with SSN+DOB+DL
    >>5$ each for premium fullz (700+ credit score with replacement guarantee)

    Prices are negotiable in bulk order
    Serious buyer contact me no time wasters please
    Bulk order will be preferable

    CONTACT
    Telegram > @leadsupplier
    ICQ > 752822040
    Email > leads.sellers1212@gmail.com

    OTHER STUFF YOU CAN GET

    SSN+DOB Fullz
    CC's with CVV's (vbv & non-vbv)
    USA Photo ID'S (Front & back)

    All type of tutorials available
    (Carding, spamming, hacking, scam page, Cash outs, dumps cash outs)

    SQL Injector
    Premium Accounts (Netflix, Pornhub, etc)
    Paypal Logins
    Bitcoin Cracker
    SMTP Linux Root
    DUMPS with pins track 1 and 2
    WU & Bank transfers
    Socks, rdp's, vpn
    Php mailer
    Server I.P's
    HQ Emails with passwords
    All types of tools & tutorials.. & much more

    Looking for long term business
    For trust full vendor, feel free to contact

    CONTACT
    Telegram > @leadsupplier
    ICQ > 752822040
    Email > leads.sellers1212@gmail.com

    ResponderEliminar