documentación – web attack

53
1 | Web Attacks Documentación – Web Attack

Upload: ally

Post on 20-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

Documentación – Web Attack. - Agenda -. Seguridad en Aplicaciones Web Protocolo HTTP Vulnerabilidad XSS Vulnerabilidad CSRF Path Traversal Null Byte OS Commanding Local File Inclusion Remote File Inclusion Information Disclosure SQL Injection File Upload. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Documentación – Web Attack

1 | Web Attacks

Documentación – Web Attack

Page 2: Documentación – Web Attack

2 | Web Attacks

• Seguridad en Aplicaciones Web

• Protocolo HTTP

• Vulnerabilidad XSS

• Vulnerabilidad CSRF

• Path Traversal

• Null Byte

• OS Commanding

• Local File Inclusion

• Remote File Inclusion

• Information Disclosure

• SQL Injection

• File Upload

- Agenda -

Page 3: Documentación – Web Attack

3 | Web Attacks

HTTP/1.0 definido en RFC 1945

Posee 2 métodos de mensajes:HTTP request [browser -> server]HTTP response [server -> cliente]

Métodos: GET, HEAD, POST.

No se mantiene el estado en HTTP.Una conexión TCP para cada HTTP request.

HTTP/1.1 definido en RFC 2616

Métodos: GET, HEAD, POST, OPTIONS, PUT, DELETE, TRACE, CONNECT.

Encabezado “Host”: indica el nombre del servidor al cual se le realiza el pedido, permite que se utilicen hosts virtuales.

No se mantiene el estado en HTTP.Conexiones TCP persistentes por defecto.

Características del Protocolo HTTP

Page 4: Documentación – Web Attack

4 | Web Attacks

GET Solicita la entidad identificada por el URI incluido en el pedido.

HEAD De funcionalidad similar al GET, pero el servidor debe devolver solo los headers y no el contenido.

POST Para que el servidor destino reciba la entidad incluida en el request, subordinada al URI indicado.

PUT Para que el servidor almacene en el URI indicado, la entidad incluida en la solicitud.

OPTIONS Solicita información acerca de los mecanismos de comunicación disponibles, métodos habilitados, etc.

DELETE Borra del servidor la URL indicada.

TRACE Se utiliza para debugging.

Definición de Métodos

Page 5: Documentación – Web Attack

5 | Web Attacks

Planteamos una arquitectura web con los siguientes elementos:

Clientes

Firewall

Cache / Load Balancer

Servidor Web

Servidor de base de datos

Arquitectura Web

Page 6: Documentación – Web Attack

6 | Web Attacks

En el cuadro que exponemos veremos los principales ataques sobre Aplicaciones Web.

Seguridad en Aplicaciones Web

Page 7: Documentación – Web Attack

7 | Web Attacks

XSS Cross Site Scripting

XSS Cross Site ScriptingXSS Cross Site Scripting

Page 8: Documentación – Web Attack

8 | Web Attacks

Es un agujero de seguridad basado en la explotación de vulnerabilidades del sistema de validación HTML.

Debemos saber que existe 2 tipos de métodos de un ataque XSS:

No persistentePersistente

Mediante este agujero de seguridad, podemos obtener del usuario:

Predicción de ID de sesión.Robo de Cookies.Ejecución de código malicioso

Como contramedida podemos utilizar “htmlspecialchars” ya que esta funciónconvierte los caracteres especiales que pueden afectar a las etiquetas HTML, comomayor y menor qué, comillas simples y dobles y el carácter &.

XSS Cross Site Scripting

Page 9: Documentación – Web Attack

9 | Web Attacks

XSS Cross Site Scripting

Demo - No PersistenteDemo - No PersistenteXSS Cross Site ScriptingXSS Cross Site Scripting

Page 10: Documentación – Web Attack

10 | Web Attacks

<script>alert(“xss”)</script><script>alert(“xss”)</script>

XSS Cross Site Scripting

Page 11: Documentación – Web Attack

11 | Web Attacks

XSS Cross Site Scripting

Demo - PersistenteDemo - PersistenteXSS Cross Site ScriptingXSS Cross Site Scripting

Page 12: Documentación – Web Attack

12 | Web Attacks

<iframe src=“http://www.google.com.ar”> </iframe><iframe src=“http://www.google.com.ar”> </iframe>

XSS Cross Site Scripting

Page 13: Documentación – Web Attack

13 | Web Attacks

XSRF / CSRF XSRF / CSRF

XSRF / CSRF Cross Site Scripting

Page 14: Documentación – Web Attack

14 | Web Attacks

Fuerza al navegador web autenticado de una víctima a enviar una petición a una

aplicación web vulnerable, que ejecuta la acción enviada.

Al contrario que los ataques XSS, los cuales explotan la confianza que un usuario

tiene en un sitio en particular, el

CSRF explota la confianza que un sitio tiene en un usuario en particular.

Como contramedida podemos utilizar la generación y codificación de un número

aleatorio (token) tras el ingreso del usuario en la aplicación, que se almacena en la

sesión del usuario. En cada formulario que se le presente al usuario se incluye un

campo oculto en el que se escribe este token. A la recepción del formulario en el

servidor se comprueba que el token se haya recibido y coincida con el almacenado

para el usuario.

XSRF / CSRF Cross Site Scripting

Page 15: Documentación – Web Attack

15 | Web Attacks

XSRF / CSRF Cross Site Scripting

DemoDemoXSRF / CSRF XSRF / CSRF

Page 16: Documentación – Web Attack

16 | Web Attacks

XSRF / CSRF Cross Site Scripting

Sitio Falso!!!Sitio Falso!!!

Page 17: Documentación – Web Attack

17 | Web Attacks

Path Traversal

Path Traversal Path Traversal

Page 18: Documentación – Web Attack

18 | Web Attacks

La finalidad de este ataque es ordenar a la aplicación web acceder a un archivo al

que no debería poder hacerlo o no debería ser accesible.

Path traversal también es conocido como el ../ ataque punto barra, escalado de

directorios y backtracking.

Como contramedidas podemos realizar lo siguiente:

Cuando se realiza una petición URI por un fichero/directorio, se debe construir el

path completo del fichero/directorio y normalizar todos los caracteres (ej, 20%

convertido a espacios).

Asegurarse de que los primeros caracteres de un directorio correcto es

exactamente el mismo que el del documento raíz.

Path Traversal

Page 19: Documentación – Web Attack

19 | Web Attacks

Path Traversal

DemoDemoPath Traversal Path Traversal

Page 20: Documentación – Web Attack

20 | Web Attacks

Path Traversal

../../../path.txt../../../path.txt

Page 21: Documentación – Web Attack

21 | Web Attacks

Null Byte

Null ByteNull Byte

Page 22: Documentación – Web Attack

22 | Web Attacks

Es una técnica de explotación que se utiliza para eludir filtros de control de

sanidad sobre una infraestructura web, mediante la adición de una URL codificada

por caracteres nulos como: “%00”.

Un byte null representa el punto de terminación de cadena, lo que significa

detener el procesamiento de su cadena posterior.

Como contramedida podemos utilizar magic_qoutes_gpc para que los caracteres: ‘,

“, \, y los NULL sean automáticamente marcados con una barra invertida.

Null Byte

Page 23: Documentación – Web Attack

23 | Web Attacks

Null Byte

DemoDemoNull Byte Null Byte

Page 24: Documentación – Web Attack

24 | Web Attacks

/etc/hosts%00/etc/hosts%00

Null Byte

Page 25: Documentación – Web Attack

25 | Web Attacks

OS Commanding

OS Commanding OS Commanding

Page 26: Documentación – Web Attack

26 | Web Attacks

Este tipo de ataque se utiliza para la ejecución no autorizada de comandos del

sistema operativo.

Muchas veces podemos realizar este ataque ingresando “;” o “|” dependiendo del

sistema operativo en que éste alojado el servidor web.

Como contramedida podemos realizar una combinación de validación de listas

blancas (“whitelists”) de toda la información entrante y una apropiada codificación

de la información saliente.

La validación permite la detección de ataques, y la codificación previene cualquier

inyección de secuencia de comandos de ejecutarse exitosamente en el

navegador.

.

OS Commanding

Page 27: Documentación – Web Attack

27 | Web Attacks

OS Commanding

DemoDemoOS Commanding OS Commanding

Page 28: Documentación – Web Attack

28 | Web Attacks

127.0.0.1;w127.0.0.1;w

OS Commanding

Page 29: Documentación – Web Attack

29 | Web Attacks

Local File Inclusion

Local File InclusionLocal File Inclusion

Page 30: Documentación – Web Attack

30 | Web Attacks

Es utilizada en sitios que permiten el enlace de archivos locales, debido a una mala

verificación en la programación de página, que contiene las funciones propias de

PHP: include(), include_once(), requiere(), requiere_once().

Solo existe en páginas dinámicas desarrolladas en PHP.

Como contramedida podemos recomendar los siguientes items:

Filtrar todos los parámetros que un usuario de la página pueda manejar.

Asegurarse de que no se pueda acceder a archivos más allá del "Document Root"

de la página.

Procesamiento correcto del parámetro y de la función que se dedique a recuperar

el contenido del fichero que necesitemos.

.

Local File Inclusion

Page 31: Documentación – Web Attack

31 | Web Attacks

Local File Inclusion

DemoDemoLocal File InclusionLocal File Inclusion

Page 32: Documentación – Web Attack

32 | Web Attacks

Local File Inclusion

/etc/passwd/etc/passwd

Page 33: Documentación – Web Attack

33 | Web Attacks

Remote File Inclusion

Remote File InclusionRemote File Inclusion

Page 34: Documentación – Web Attack

34 | Web Attacks

Es utilizada en sitios que permiten el enlace de archivos remotos, debido a una

mala verificación en la programación de página, que contiene las funciones propias

de PHP: include(), include_once(), requiere(), requiere_once().

Solo existe en páginas dinámicas desarrolladas en PHP.

Como contramedida podemos recomendar los siguientes items:

Filtrar todos los parámetros que un usuario de la página pueda manejar.

Procesamiento correcto del parámetro y de la función que se dedique a recuperar

el contenido del fichero que necesitemos.

Si es posible setear la variable de PHP “allow_url_fopen” en off

.

Remote File Inclusion

Page 35: Documentación – Web Attack

35 | Web Attacks

Remote File Inclusion

DemoDemoRemote File InclusionRemote File Inclusion

Page 36: Documentación – Web Attack

36 | Web Attacks

Remote File Inclusion

http://192.168.2.103/shell.php?http://192.168.2.103/shell.php?

Page 37: Documentación – Web Attack

37 | Web Attacks

Information Disclosure

Information DisclosureInformation Disclosure

Page 38: Documentación – Web Attack

38 | Web Attacks

Se presenta básicamente ante un error de configuración del administrador o del

usuario, que permite ver mas contenido de lo que se debería ver.

Esta información puede ser: Comentarios de los desarrolladores, acceso a la

configuración del servidor.

Como contramedida podemos utilizar mensajes de error genéricos, en los cuales

no se divulgue información interna.

Analizar la factibilidad de remover todas las páginas y/o componentes por defecto

creados al momento de la instalación del servidor Web.

.

Information Disclosure

Page 39: Documentación – Web Attack

39 | Web Attacks

Information Disclosure

DemoDemoInformation Disclosure Information Disclosure

Page 40: Documentación – Web Attack

40 | Web Attacks

Information Disclosure

phpinfo.phpphpinfo.php

Page 41: Documentación – Web Attack

41 | Web Attacks

SQL Injection

SQL InjectionSQL Injection

Page 42: Documentación – Web Attack

42 | Web Attacks

Es una técnica usada para la inyección de datos en una consulta SQL desde un cliente de la aplicación.

El éxito en una inyección SQL puede leer datos sensibles de la base de datos, modificar los datos (insertar/actualizar/borrar), realizar operaciones de administración sobre la base de datos.

Cuando la respuesta no esta directamente impresa en el HTML denominamos el ataque como BLIND SQL Injection.

Como contramedidas podemos recomendar los siguientes items:Verifique el formato de los datos de entrada y, en particular, si hay caracteres especiales.

Ocultar mensajes de error explícitos que muestren la consulta o parte de la consulta de SQL.

Mantenga al mínimo los privilegios de las cuentas que se usan;

Es recomendable utilizar prepared statements para todos los comandos SQL.

.

SQL Injection

Page 43: Documentación – Web Attack

43 | Web Attacks

DemoDemoSQL InjectionSQL Injection

SQL Injection

Page 44: Documentación – Web Attack

44 | Web Attacks

SQL Injection

' union all select user,password from mysql.user #' union all select user,password from mysql.user #

Page 45: Documentación – Web Attack

45 | Web Attacks

Blind SQL Injection

DemoDemoBlind SQL InjectionBlind SQL Injection

Page 46: Documentación – Web Attack

46 | Web Attacks

Blind SQL Injection

' and '1'='1' union select version(),null #' and '1'='1' union select version(),null #

Page 47: Documentación – Web Attack

47 | Web Attacks

File Upload

File UploadFile Upload

Page 48: Documentación – Web Attack

48 | Web Attacks

Mayormente hoy en día las aplicaciones contiene un file upload, el cual sino cuenta

con una validación puede ser utilizado para que una persona mal intencionada

suba archivos con secuencias de comandos y con esto tomar control de nuestro

servidor.

Como principales contramedidas podes tener en cuenta:

- Verificación del tamaño del archivo.

- Denegar permiso de ejecución en el directorio donde se suben los archivos.

- Verificar MIME-TYPE.

- Verificar la extension del archivo.

.

File Upload

Page 49: Documentación – Web Attack

49 | Web Attacks

DemoDemoFile UploadFile Upload

File Upload

Page 50: Documentación – Web Attack

50 | Web Attacks

Shell.phpShell.php

File Upload

Page 51: Documentación – Web Attack

51 | Web Attacks

http://192.168.2.103/hackable/uploads/shell.php?cmd=lshttp://192.168.2.103/hackable/uploads/shell.php?cmd=ls

File Upload

Page 52: Documentación – Web Attack

52 | Web Attacks

http://www.owasp.org

http://www.clubdelprogramador.com.ar

http://proyects.webappsec.org

http://www.google.com.ar

- Referencias -

Page 53: Documentación – Web Attack

53 | Web Attacks

Preguntas?

- Final -

@artsweb