PDF de programación - Principales vulnerabilidades en aplicaciones Web

Imágen de pdf Principales vulnerabilidades en aplicaciones Web

Principales vulnerabilidades en aplicaciones Webgráfica de visualizaciones

Actualizado el 4 de Agosto del 2017 (Publicado el 18 de Junio del 2017)
1.100 visualizaciones desde el 18 de Junio del 2017
13,2 MB
94 paginas
Creado hace 16a (29/03/2008)
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

15.70

9.76

1.19

4.30

Cross Site Scripting
SQL Injection
Information Leakage
HTTP Response Splitting
Path Traversal
Other

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
username = 'laramies' AND
userpass = 'test'

OK!

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:

/

SqPyfia: http://www.edge-security.com

Sqlmap:

Sqlix :

/

30

http://www.open-labs.orghttp://sqlmap.sourceforge.nethttp://www.owasp.org/index.php/Category:OWASP_SQLiX_Project 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:

33

“Conferencia de Rediris el día 28” 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:

ID = 2 and 1=0

True

and

False

False

34

“No se encontro articulo en la Base de datos” 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:

35

“Conferencia de Rediris el dia 28” Blind SQL injection

!=

43 chars

32 chars

36

“No se encontró artículo en la Base de datos”“Conferencia de Rediris el día 28” 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

sql.php?id=1 and substr(user(),1,1) = “b” NO

sql.php?id=1 and substr(user(),1,1) = “c” NO

sql.php?id=1 and substr(user(),1,1) = “d” NO

sql.php?id=1 and substr(user(),1,1) = “e” NO

sql.php?id=1 and substr(user(),1,1) = “f” OK

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

39

“No se encontró artículo en la Base de datos”“Conferencia de Rediris el día 28”“No se encontró artículo en la Base de datos”“No se encontró artículo en la Base de datos”“No se encontró artículo en la Base de datos”“No se encontró artículo en la Base de datos” 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?

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

NO... 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'--

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



43

Tiempo de ejecución > = 15 seg OK!Tiempo de ejecución > = 15 OK!Sabemos que el usuario es “SA” 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:

SqPyfia:

Pblind:

Sqlmap:

Sqlix :

/

/

47

http://www.open-labs.orghttp://www.edge-security.comhttp://www.edge-security.comhttp://sqlmap.sourceforge.nethttp://www.owasp.org/index.php/Category:OWASP_SQLiX_Project 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
browser

Robar History

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 qu
  • Links de descarga
http://lwp-l.com/pdf4449

Comentarios de: Principales vulnerabilidades en aplicaciones Web (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad