Documentación – Web Attack
description
Transcript of Documentación – Web Attack
1 | Web Attacks
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 -
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
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
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
6 | Web Attacks
En el cuadro que exponemos veremos los principales ataques sobre Aplicaciones Web.
Seguridad en Aplicaciones Web
7 | Web Attacks
XSS Cross Site Scripting
XSS Cross Site ScriptingXSS Cross Site Scripting
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
9 | Web Attacks
XSS Cross Site Scripting
Demo - No PersistenteDemo - No PersistenteXSS Cross Site ScriptingXSS Cross Site Scripting
10 | Web Attacks
<script>alert(“xss”)</script><script>alert(“xss”)</script>
XSS Cross Site Scripting
11 | Web Attacks
XSS Cross Site Scripting
Demo - PersistenteDemo - PersistenteXSS Cross Site ScriptingXSS Cross Site Scripting
12 | Web Attacks
<iframe src=“http://www.google.com.ar”> </iframe><iframe src=“http://www.google.com.ar”> </iframe>
XSS Cross Site Scripting
13 | Web Attacks
XSRF / CSRF XSRF / CSRF
XSRF / CSRF Cross Site Scripting
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
15 | Web Attacks
XSRF / CSRF Cross Site Scripting
DemoDemoXSRF / CSRF XSRF / CSRF
16 | Web Attacks
XSRF / CSRF Cross Site Scripting
Sitio Falso!!!Sitio Falso!!!
17 | Web Attacks
Path Traversal
Path Traversal Path Traversal
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
19 | Web Attacks
Path Traversal
DemoDemoPath Traversal Path Traversal
20 | Web Attacks
Path Traversal
../../../path.txt../../../path.txt
21 | Web Attacks
Null Byte
Null ByteNull Byte
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
23 | Web Attacks
Null Byte
DemoDemoNull Byte Null Byte
24 | Web Attacks
/etc/hosts%00/etc/hosts%00
Null Byte
25 | Web Attacks
OS Commanding
OS Commanding OS Commanding
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
27 | Web Attacks
OS Commanding
DemoDemoOS Commanding OS Commanding
28 | Web Attacks
127.0.0.1;w127.0.0.1;w
OS Commanding
29 | Web Attacks
Local File Inclusion
Local File InclusionLocal File Inclusion
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
31 | Web Attacks
Local File Inclusion
DemoDemoLocal File InclusionLocal File Inclusion
32 | Web Attacks
Local File Inclusion
/etc/passwd/etc/passwd
33 | Web Attacks
Remote File Inclusion
Remote File InclusionRemote File Inclusion
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
35 | Web Attacks
Remote File Inclusion
DemoDemoRemote File InclusionRemote File Inclusion
36 | Web Attacks
Remote File Inclusion
http://192.168.2.103/shell.php?http://192.168.2.103/shell.php?
37 | Web Attacks
Information Disclosure
Information DisclosureInformation Disclosure
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
39 | Web Attacks
Information Disclosure
DemoDemoInformation Disclosure Information Disclosure
40 | Web Attacks
Information Disclosure
phpinfo.phpphpinfo.php
41 | Web Attacks
SQL Injection
SQL InjectionSQL Injection
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
43 | Web Attacks
DemoDemoSQL InjectionSQL Injection
SQL Injection
44 | Web Attacks
SQL Injection
' union all select user,password from mysql.user #' union all select user,password from mysql.user #
45 | Web Attacks
Blind SQL Injection
DemoDemoBlind SQL InjectionBlind SQL Injection
46 | Web Attacks
Blind SQL Injection
' and '1'='1' union select version(),null #' and '1'='1' union select version(),null #
47 | Web Attacks
File Upload
File UploadFile Upload
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
49 | Web Attacks
DemoDemoFile UploadFile Upload
File Upload
50 | Web Attacks
Shell.phpShell.php
File Upload
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
52 | Web Attacks
http://www.owasp.org
http://www.clubdelprogramador.com.ar
http://proyects.webappsec.org
http://www.google.com.ar
- Referencias -
53 | Web Attacks
Preguntas?
- Final -
@artsweb