03-owasp top 2013
DESCRIPTION
03-OWASP 03-OWASP 03-OWASP top 2013TRANSCRIPT
![Page 1: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/1.jpg)
Lic. Cristian Borghello, CISSP – MVP
www.segu-info.com.ar
@seguinfo
@CursosSeguInfo
Desarrollo Seguro Orientado a OWASP Top 10
![Page 2: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/2.jpg)
OWASP
![Page 3: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/3.jpg)
• Basado en The OWASP Risk Rating Methodology
• El objetivo principal de OWASP Top 10 es educar desarrolladores, diseñadores, arquitectos, gerentes, y organizaciones sobre las consecuencias de las vulnerabilidades de seguridad en aplicaciones web
• Provee información sobre cómo evaluar los riesgos en las aplicaciones web
• Describe la probabilidad general de ocurrencia y sus consecuencias
• Presenta una orientación sobre cómo verificar los problemas y cómo evitarlos
OWASP Top 10 (I)
http://segu.info/otophttp://segu.info/guia
![Page 4: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/4.jpg)
Enfoque de Riesgo de OWASP
![Page 5: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/5.jpg)
Enfoque de Riesgo de OWASP 2013
![Page 6: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/6.jpg)
Errorescomunes
![Page 7: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/7.jpg)
Validación incorrecta de parámetros• Conocido como el “Software’s Killer”• No se valida ni la entrada ni la salida de
variables• No se inicializan variables ni se validan sus tipos• Los atacantes pueden modificar sus entradas y
producir valores inesperados
![Page 8: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/8.jpg)
Todas las validaciones se deben realizar en
ambos lados:cliente y servidor
![Page 9: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/9.jpg)
Information Disclosure• Política de publicación de información contraria
a la seguridad por oscuridad• Publicación de información que afecta a una
aplicación o que brinda información excesiva sobre la misma y que podría ser aprovechada en forma dañina
![Page 10: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/10.jpg)
Information Disclosure
![Page 11: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/11.jpg)
![Page 12: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/12.jpg)
Archivos con información• Sitemap: archivos con “mapas” del sitio, contienen sus
directorios y páginas e indican cada cuánto deben ser indexados• Robots: archivos que brindan información a los buscadores para
permitir/negar la indexación• .listing: generado localmente por la herramienta WGETPueden ser utilizados por robots ilícitos para recolectar información para un ataque
![Page 13: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/13.jpg)
Lista incompleta de parámetros
validados
Codificación incorrecta
Nota: si bien es recomendado, en .NET validateRequest=“true” puede dar falsos positivos
![Page 14: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/14.jpg)
Todo lo que viene del usuario es DA-ÑI-NO
Todo lo que viene del usuario es DA-ÑI-NO
Todo lo que viene del usuario es DA-ÑI-NO
Todo lo que viene del usuario es DA-ÑI-NO
DA ÑI NO
</paranoico>
<paranoico>
![Page 15: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/15.jpg)
OWASPTop 10
![Page 16: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/16.jpg)
Inyección
Una inyección ocurre cuando datos no validados (ni confiables) son
enviados a un interprete como parte de un comando o consulta. Los datos hostiles del atacante pueden engañar
al interprete, ejecutar comandos, o acceder datos no autorizados
¡Todo lo que viene del usuario debeser considerado dañino!
![Page 17: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/17.jpg)
Inyecciones• Las fallas de inyección son muy comunes, sobre
todo en código legado• Es frecuente encontrarlo en consultas SQL, LDAP,
XPath, comandos de SO, parámetros, etc…• Las inyecciones son fáciles de descubrir por
WhiteBox (y también por BlackBox)
![Page 18: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/18.jpg)
Inyecciones
![Page 19: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/19.jpg)
Voto Electrónico en AR
![Page 20: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/20.jpg)
DemoInyecciones
![Page 21: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/21.jpg)
XSS (Cross Site Scripting)
• Cross Site Scripting (XSS): ejecución de scripts y comandos no deseados a través de aplicaciones web, explotando la confianza del usuario
• Se originan por la validación incorrecta de variables que permiten ejecutar scripts en campos de entrada
• El atacante inyecta código malicioso (HTML y scripts) que son ejecutados en el entorno del navegador del cliente afectado
Confused Deputy Program: realizar acciones en nombre de otros programas o personas
![Page 22: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/22.jpg)
• Mediante el control del navegador del usuario es posible realizar ataques de: Robo de sesión e identidad, mediante la
manipulación de las cookies Phishing, mediante la modificación de la
interface normal del sitio Redirección a sitios dañinos
• Existen tres tipo de XSS: Reflejados/No almacenados Almacenados DOM-XSS
XSS (Cross Site Scripting)
![Page 23: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/23.jpg)
XSS Reflejados
Reflejados (no persistente): los datos (sin sanitizar) proporcionados por el cliente generan contenido HTML que es ejecutado en el browser, y luego puede ser multiplicado a otros usuarios (víctimas)
![Page 24: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/24.jpg)
Cualquier dato no validado, suministrado por el usuario, es incluido en la página resultante sin codificación previa
XSS Reflejados
![Page 25: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/25.jpg)
Un vector potencial de ataque es enviar la URL generada por correo electrónico
XSS Reflejados
Al hacer clic, el ataque se refleja en el browser del usuario víctima, y se ejecuta con sus permisos
http://bit.ly/xssreflected
<img src="http://URL" onerror=alert(document.cookie);>
![Page 26: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/26.jpg)
XSS y Phishing
![Page 27: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/27.jpg)
DemoXSS Reflejado
![Page 28: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/28.jpg)
Detección de XSS• Pixy: pruebas para aplicaciones PHP• FxCop: parte de Visual Studio 2010 Premium para
detectar vulnerabilidades• AntiXSSLibrary: plugin para Visual Studio que ayuda
a detectar XSS en el código• Nikto, Wapiti y Arachni: scaners de vulnerabilidades
web• XSS-Me: extensión de FF para probar XSS reflejados• Fortify, NetSparker, Checkmarx (pagos): detectan
cualquier tipo de vulnerabilidad en muchos lenguajeshttp://bit.ly/xsspixy http://bit.ly/xssniktohttp://bit.ly/xsslibrary http://bit.ly/xssfortifyhttp://bit.ly/xssfxcop http://bit.ly/xssnersparkerhttp://bit.ly/xsswapiti http://bit.ly/xssffmehttp://bit.ly/arachni j.mp/1KhQr7x
![Page 29: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/29.jpg)
XSS Almacenado
• Es posible almacenar el código del XSS en la base de datos del servidor
• Una vez almacenado, cada usuario que visualice la página, será víctima del código
• Un vector potencial de ataque es dejar comentarios en forma de scripts
1. A través de un formulario, el atacante almacena el script dañino
2. Sin saberlo, la víctima ingresa a visualizar la información y el script se ejecuta en el entorno de su navegador
![Page 30: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/30.jpg)
XSS Almacenado
![Page 31: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/31.jpg)
Evitar XSS
• En PHP, usar las funciones filter_var, urlencode, HtmlEncode, htmlentities en todos las variables tipo texto de entrada/salida
• OWASP Java Encoder Project y ESAPI
• En NET Utilizar Microsoft Web Protection Library (antes conocida como AntiXSS). Incluída dentro del framework (v4.0+)
• Consultar Cheat Sheet de OWASPhttps://wpl.codeplex.com/
https://www.owasp.org/index.php/OWASP_Java_Encoder_Projecthttps://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API/es
![Page 32: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/32.jpg)
DemoXSS Almacenado
![Page 33: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/33.jpg)
• Para mantener el estado de la sesión se provee un identificador (Session_ID o Token) que es compartido entre el usuario y la aplicación web
• Los atacantes pueden ejecutar dos tipos de Session Hijacking (secuestro de sesión):
• Orientados: el atacante impersonaliza a un usuario específico y privilegiado
• Genérico: impersonaliza a un usuario genérico del cual desconoce sus accesos
Sesiones
https://www.owasp.org/index.php/Session_Management https://www.owasp.org/index.php/Authentication_Cheat_Sheet
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet
![Page 34: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/34.jpg)
Nombre de la Sesión de las aplicaciones• PHP PHPSESSID• J2EE JSESSIONID• ColdFusion CFID y CFTOKEN• ASP ASPSESSIONID• ASP .NET ASP.NET_SessionId
Longitud de la sesiónUna Session_ID debe tener al menos 128 bits (16 bytes) para evitar que sea predecibleAlmacenamientoLa sesión no debe tener información sensible (o debe estar cifrada) y debe ser almacenada en el servidorPuede contener dirección IP, User-Agent, e-mail, nombre de usuario, rol, privilegio, preferencias del usuario, último acceso, timeouts, etc.
Sesiones
![Page 35: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/35.jpg)
Session PredictionLas aplicaciones vulnerables generan credenciales predecibles
Host: http://www.foo.bar
User-Agent: Mozilla/5.0
Cookie: ID=usuario1segu-info
Host: http://www.foo.bar
User-Agent: Mozilla/5.0
Cookie: ID=usuario2segu-info
Se debería generar una sesión no predecible, mediante el uso de hash y variables no repetibles (timestamp)
Host: http://www.foo.bar
User-Agent: Mozilla/5.0
Cookie: ID=2074c519d665f5cf9eb3c52abd97865223f65b70
SHA1: usuarioXsegu-info20150810120945-ClaveSecreta
https://www.owasp.org/index.php/Session_Prediction
![Page 36: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/36.jpg)
Session Expiration
Las aplicaciones vulnerables no hacen caducar la sesión y la misma se puede aprovechar hasta la fecha de caducidad
https://www.owasp.org/index.php/Argument_Injection_or_Modificationhttp://php.net/manual/es/ini.core.php
Host: http://www.foo.bar
User-Agent: Mozilla/5.0
Cookie: ID=2074c519d665f5cf9eb3c52abd97865223f65b70;
Expires=Wed, 08 Sep 2015 23:59:00 GMT
“Obligar” el log-out y hacer que las sesiones caduquen, respetando las regulaciones vigentes
![Page 37: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/37.jpg)
https://www.owasp.org/index.php/Session_Fixationhttp://www.worldofasp.net/tut/SessionHijack/Securing_Session_In_ASPNET_793.aspx
http://alexsmolen.com/blog/?p=17http://www.acros.si/papers/session_fixation.pdf
Session FixationUna aplicación vulnerable permite que un atacante“fije” una sesión y que el usuario la utilice
• Una aplicación web autentica a un usuario sin validar la sesión existente y por lo tanto la sesión esasociada al usuario real anterior
• Un atacante es capaz de forzar un identificador de sesión de un usuario conocido y tiene acceso a la sesión autenticada
• Se asigna un identificador de sesión conocido a un usuario, antes de que se autentique
![Page 38: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/38.jpg)
Ingeniería Socialhttp://seguro.com/
login.xxx?SessionID=1234
seguro.com
1
23
4
5
http://www.acrossecurity.com/papers/session_fixation.pdfhttp://shiflett.org/articles/session-fixation
http://projects.webappsec.org/w/page/13246960/Session%20Fixationhttp://software-security.sans.org/blog/2009/06/14/session-attacks-and-aspnet-part-1/http://software-security.sans.org/blog/2009/06/24/session-attacks-and-aspnet-part-2/
![Page 39: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/39.jpg)
• Si se envía (fija) al usuario una sessionid, se comprueba la existencia de la sesión y, si no existe, se crea y se asigna al usuario
• Si este se autentica, el atacante, que conoce su sessionid, puede impersonarlo
Session Fixation (otros)
http://www.foo.bar/login.php?PHPSESSID=123456 (123456 valor conocido)
http://www.foo.bar/login.jsp?JSESSIONID=123456
http://www.foo.bar/login.aspx?ASP_NETSESSIONID=123456
http://www.codeproject.com/KB/session/SessionFixation.aspx
![Page 40: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/40.jpg)
Evitar Session Fixation
Para evitarlo• Evitar las sesiones por querystring
(session_less)• En aplicaciones críticas, utilizar SSL/TLS• Obligar los Time-out y log-out (relogin del
usuario)• Manejar otro ID propio (Token extra a la
sesión)• Regenerar la sesión una vez que el usuario es
autenticadohttp://www.codeproject.com/KB/session/SessionFixation.aspx
![Page 41: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/41.jpg)
• CAPTCHA (Completely Automated Public Turingtest to Tell Computers and Humans Apart -Prueba de Turing pública y automática para diferenciar a máquinas y humanos): método que genera una prueba desafío-respuesta que sólo los humanos deberíamos ser capaces de resolver (las máquinas/bot no deberían)
• Útil para evitar el spam, ataques de DoS (bloqueo de cuentas por intentos), el registro masivo de cuentas y el abuso de los recursos ajenos por partes de personas inescrupulosas
CAPTCHA (I)
http://www.segu-info.com.ar/articulos/62-captcha.htm
![Page 43: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/43.jpg)
Captcha predecible
![Page 44: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/44.jpg)
Otro ejemplo
![Page 45: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/45.jpg)
Referencia directa a objetosSe expone una referencia hacia un objeto interno de la aplicación, archivo, directorio, registro de base de datos, códigos, URL, etc.
![Page 46: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/46.jpg)
![Page 47: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/47.jpg)
![Page 48: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/48.jpg)
![Page 49: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/49.jpg)
URL RedirectPara controlar los “abandonos” de la página web, se redirecciona a sitios externos mediante un script o página de salida (mal validada)
OK
![Page 50: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/50.jpg)
Bad URL Redirect (I)OK
ERROR
![Page 51: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/51.jpg)
Bad URL Redirect (II)
ERROR
![Page 52: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/52.jpg)
Control de URL (I)
ERROR
La solicitud de URLs vulnerables se puederealizar en forma manual y/o automática
![Page 53: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/53.jpg)
• El “secreto” radica en la administración de permisos
• Registrar y administrarlas URL del sitio
• Controlar que cadausuario tenga acceso al recurso solicitado
• Prestar especial atención en registropor pasos
Con conocer el nombre del PHP y el parámetro
es suficiente para descargar la BD completa
![Page 54: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/54.jpg)
Path Traversal• Vulnerabilidad que permite acceder a objetos
fuera del ámbito de la aplicación web• Dependiendo del sistema operativo, el servidor
web y la codificación empleada, se podrán escribir rutas de distintas maneras
• Se basan en permisos de archivos incorrectos y los errores de validación de entradas
../ %2e%2e%2f ..%2f ../
..\ %2e%2e%5c ..%5c
..\ %252e%252e%255c
?file=/etc/passwd
?file=../../../etc/passwd
https://www.owasp.org/index.php/Path_Traversal
Al utilizar codificación se pueden saltear los filtros de lasaplicaciones y los WAF (Web App Firewall)
![Page 55: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/55.jpg)
![Page 56: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/56.jpg)
Codificación de URL
![Page 57: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/57.jpg)
Evitar Path Traversal
• Controlar y validar las funciones de inclusión de archivos include(), include_once(), require(), require_once()
• En php.ini, utilizar open_basedir
• Limitar el acceso a archivos críticos
• Utilizar ACL y permisos en File-System
• IIS es seguro por defecto out-the-box
http://programming4.us/security/598.aspx
![Page 58: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/58.jpg)
DemoPath Traversal
![Page 59: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/59.jpg)
LFI y RFI• Vulnerabilidades que se hacen presentes cuando se
permite que el usuario incluya archivos en la aplicación
• Local File Inclusion (LFI): inclusión de archivos locales, donde se encuentre el sitio web vulnerable
• Remote File Inclusion (RFI): permite la inclusión de archivos que se encuentran en servidores externos
• Principalmente presentes en PHP por la configuración incorrecta de la variables: allow_url_fopen y allow_url_include = OFF
register_globals = OFF
Use E_STRICT (PHP >= 5.0)
http://www.php.net/manual/en/errorfunc.configuration.php
![Page 60: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/60.jpg)
LFI y RFI
![Page 61: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/61.jpg)
LFI y RFI
![Page 62: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/62.jpg)
LFI y RFI
![Page 63: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/63.jpg)
Otro ejemplo
![Page 64: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/64.jpg)
“Validación” al subir archivos
![Page 65: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/65.jpg)
Inclusión de Archivos
![Page 66: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/66.jpg)
DemoLFI y RFI
![Page 67: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/67.jpg)
Evitar RFI y LFI
• UrlScan por defecto bloquea: exe, bat, cmd, com, htw, ida, idq, htr, idc, printer, ini, pol, dat, etc.
• En PHP se puede utilizar Mod_Securityy/o Suhosin
Todas las validaciones se deben realizar en ambos lados: cliente y servidor
![Page 68: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/68.jpg)
CSRF
• Cross Site Request Forgery (CSRF): se 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, que explotan la confianza del usuario, el CSRF explota la confianza que el sitio tiene en el usuario
• Se realiza una petición a nombre del usuario (víctima)
![Page 69: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/69.jpg)
Asumiendo que Alice está autenticada en su cuenta,si hace clic en el enlace, la transferencia se realizará
POST http://bank.com/transfer.do HTTP/1.1
...
Content-Length: 19;
acct=BOB&amount=100
Alice realiza una transferencia de $100 a Bob (vía POST)
Pero, esa transacción también puede realizarse vía GETGET http://bank.com/transfer.do?acct=BOB&amount=100 HTTP/1.1
http://bank.com/transfer.do?acct=CHARLES&amount=1000
Entonces, Charles construye una URL pero con una transferencia de $1000 desde la cuenta de Alice:
Charles engaña a Alice para que haga clic en un enlace dañino<a href="http://bank.com/transfer.do?acct=CHARLES&amount=1000">
Viste lo que han publicado de tí en Facebook?
</a>
<img src="http://bank.com/transfer.do?acct=CHARLES&amount=1000"
width="1" height="1" border="0">
![Page 70: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/70.jpg)
Prevención de CSRF
• Aceptar POST: se pueden falsificar (no confiable)
• Transacciones multi-pasos: se pueden predecir los pasos (no confiable)
• Reescritura de URL: se puede predecir la URL (no confiable)
• Comprobación del HTTP_Referer (manipulable)
• Usar una “cookie secreta”, token o variable de sesión: una vez que la variable es establecida es enviada en todas las peticiones hasta que la sesión se cierre
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29 http://shiflett.org/articles/foiling-cross-site-attacks
http://bit.ly/o2Azp4
![Page 71: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/71.jpg)
Prevención de CSRF• En Java utilizar librerías como ESAPI y CSRF Guard
de OWASP
• En PHP existen decenas de clases: NoCSRF PHP
• .NET incorpora Viewstate (no desactivar) y AntiForgeryToken
• En ASP 3.0 existen librerías de OWASP
• Probar el Tester de CSRF de OWASPhttps://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project
https://www.owasp.org/index.php/Esapihttp://bkcore.com/blog/code/nocsrf-php-class.html
https://www.owasp.org/index.php/PHP_CSRF_Guardhttp://j.mp/VTY0Wy
https://www.owasp.org/index.php/.Net_CSRF_Guardhttps://www.owasp.org/index.php/Classic_ASP_Security_Project
https://www.owasp.org/index.php/Category:OWASP_CSRFTester_Project
![Page 72: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/72.jpg)
![Page 73: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/73.jpg)
SQL Injection (I)• SQL Injection: ejecución de sentencias SQL
inyectadas y no deseadas a través de aplicaciones mal validadas
• Se originan por la validación incorrecta de variables que permiten ingresar sentencias SQL
• La sentencia SQL que genera la aplicación es controlada por el atacante
• El atacante puede:
Descargar BD completas
Añadir o eliminar información a la BD
Ejecutar comandos de SO
Comprometer la BD o el servidor
Imaginación…
![Page 74: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/74.jpg)
SQL Injection (II)
Aplicación (servidor)
Solicitud numérica (cliente)
http://www.foo.bar/ver_productos.XXX?id=
select * from productos where prod_id =
Solicitud Alfanumérica (cliente)
http://www.foo.bar/ver_productos.XXX?nombre=
select * from productos where prod_nombre = ‘
Aplicación (servidor)
X
X’
Azucar
1
’
![Page 75: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/75.jpg)
SQL Injection (III)
Aplicación (servidor)
Solicitud numérica (cliente)
http://www.foo.bar/ver_productos.XXX?id=
select * from productos where prod_id =
Solicitud alfanumérica (cliente)
http://www.foo.bar/ver_productos.XXX?nombre=
select * from productos where prod_nombre = ‘
Aplicación (servidor)
X
X’
nada’ or ‘a’=‘a
1 or 1=1
’
![Page 76: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/76.jpg)
SQL Injection (IV)
• Cualquier motor de BD pueden ser afectado• Cualquier punto de entrada de la aplicación
puede ser utilizado para inyectar sentencias• Las sentencias pueden ser inyectadas a través de
cualquier comando del Header (GET, POST, cookies, etc.)
• Se debe realizar filtrado de caracteres como:* ‘ , ; : & % “ - ( ) / < > + \
Todas las validaciones se deben realizar en ambos lados: cliente y servidor
![Page 77: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/77.jpg)
Ejemplo SQL Injection
select * from tabla_usuario where
nombre_usuario = md5(‘a’) or 1=1 #
![Page 78: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/78.jpg)
PHP / MySQL
Lenguajes y motores de BD
![Page 79: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/79.jpg)
.NET / SQL
.NET / Store Procedure
JAVA / SQL
Lenguajes y motores de BD
MVC / SQL
![Page 80: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/80.jpg)
![Page 81: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/81.jpg)
Ejemplo de inyección
PHP / MySQL
![Page 82: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/82.jpg)
Information Disclosure y SQLiLos errores no controlados permiten Information Disclosure que facilitan el SQLi
![Page 83: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/83.jpg)
Information Disclosure y SQLi
![Page 84: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/84.jpg)
Information Disclosure y SQLi
![Page 85: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/85.jpg)
Obtener login
1. SELECT * FROM u WHERE id=1 (ok)
2. SELECT * FROM u WHERE id=1 or 1=1 --
Devuelve todos los usuarios o el 1er registro
3. SELECT * FROM u WHERE id=a’ or ‘a’=‘a
Devuelve todos los usuarios o el 1er registro
A partir de las consultas adecuadas es posible adquirir conocimiento acerca de la estructura de la base de datos
![Page 86: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/86.jpg)
Enumeración de Base de Datos
1. SELECT * FROM u WHERE id=1 (ok)
2. SELECT * FROM u WHERE id=1 HAVING 1=1 --
Devuelve el nombre de la tabla y el 1er campo
3. SELECT * FROM u WHERE id=1 GROUP BY
tabla.id HAVING 1=1 --
Devuelve el nombre del 2do campo
4. SELECT * FROM u WHERE id=1 GROUP BY u.id,
u.nombre HAVING 1=1 --
Devuelve el nombre del 3er campo
5. …
La enumeración consiste en obtener el nombre de cada una de las tablas utilizadas por la aplicación así como sus campos y tipos
![Page 87: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/87.jpg)
Obtener tipos de datos
1. SELECT * FROM u WHERE n=‘seguinfo’ (ok)
2. SELECT * FROM u WHERE n=’ UNION SELECT
SUM(n) FROM u –-
Si el dato es Char, devuelve error de cast -
conversión de tipo
3. SELECT * FROM u WHERE n=’ UNION SELECT
MIN(n) FROM u --
Idem
4. SELECT * FROM u WHERE n=’ UNION SELECT
MAX(n) FROM u -–
Idem
![Page 88: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/88.jpg)
Tablas y variables de MySQLinformation_schema
character_sets
collations
collation_character_set_applicability
columns
column_privileges
key_column_usage
profiling
routines
schemata
schema_privileges
statistics
tables
table_constraints
table_privileges
triggers
user_privileges
views
SELECT * FROM u WHERE id=1
UNION SELECT table_name,
column_name, data_type FROM
information_schema.columns; --
![Page 89: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/89.jpg)
Tablas y variables de SQL Server
SELECT * FROM u WHERE id=1
UNION SELECT name FROM
sysobjects WHERE xtype=‘U’; --
Vistas del sistema (compatibilidad)
master.dbo.sysdatabases tabla.dbo.sysobjects
master.dbo.sysobjects tabla.dbo.syscolumns
master.dbo.syscolumns tabla.dbo.syspermissions
master.dbo.sysxlogins tabla.dbo.systypes
master.dbo.sysservers tabla.dbo.sysindexes
master.dbo.sysservers tabla.dbo.sysindexes
master.dbo.* tabla.dbo.sysfiles
http://msdn.microsoft.com/en-us/library/aa260604%28v=SQL.80%29.aspxhttps://msdn.microsoft.com/en-us/library/ms187376.aspx
![Page 90: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/90.jpg)
Store Procedure del sistemaStore Función
SP_makewebtask Crea un archivo con el resultado de la consulta
SP_addlogin Agrega un usuario
SP_addsrvrolemember Agrega un usuario al rol
XP_logininfo Información del login del usuario
XP_fileexist Verifica la existencia de un archivo
XP_sendmail Envía un correo con el resultado de la consulta
XP_ActiveDirectory Control del Active Directory
XP_regXXX (R/W/D) Controla el registro (XXX es la función Read/Write/Delete, etc.)
XP_servicecontrol Controla servicios del sistema
XP_cmdshell Ejecuta comandos del sistema (desactivado en SQL Server 2005+
SELECT * FROM u WHERE id=1; exec master.dbo.xp_cmdshell
‘dir c:\’--
‘type c:\inetpub\sitio\conexion.asp’
‘net user seguinfo /add’
![Page 91: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/91.jpg)
Ejemplo de inyección
![Page 92: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/92.jpg)
Inyección en Oracle
![Page 93: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/93.jpg)
¡Se encuentran en Google!
![Page 94: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/94.jpg)
Todos los registros
![Page 95: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/95.jpg)
Otras técnicas
SELECT * FROM u WHERE id=1 UNION SELECT * FROM u WHERE
user = char(39) + char(115) + char(101) + char(103) +
char(117) + char(39)
Uso de Char para evitar escapes “\”
Uso de HexadecimalSELECT * FROM u WHERE id=1;
DECLARE @x AS VARCHAR(400);
SELECT @x=0x73656c656374202a2066726f6d207379736f626a65637473;
EXEC (@x);--
SELECT * FROM sysobjects (en hexadecimal)
Uso de comentarios para evitar BlacklistSELECT * FROM u WHERE id=1 UN/**/ION SELE/**/CT * FROM u
![Page 96: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/96.jpg)
• Inyección que se realiza “a ciegas” porque la aplicación no brinda información o mensajes de error
• La aplicación también filtra el UNION y otras sentencias SQL
• El atacante puede obtener información en base a consultas por TRUE o FALSE
Blind SQL Injection
SELECT * FROM u WHERE id=1 AND 1=1-- TRUE (Tautología)
SELECT * FROM u WHERE id=1 AND 2=1-- FALSE
![Page 97: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/97.jpg)
Uso de tautologíasSELECT * FROM u WHERE id=1 AND if ((select user) = 'sa')
select ‘OK’ else select 1/0--
Si usuario es ‘sa’, devuelve ‘OK’ sino un error
SELECT * FROM u WHERE id=1 AND SELECT
ascii(substring((SELECT TOP 1 name FROM sysobjects WHERE
xtype = 'U'),1,1))) > 96--
SELECT * FROM u WHERE id=1 AND SELECT
ascii(substring((SELECT TOP 1 name FROM sysobjects WHERE
xtype = 'U'),1,1))) < 122--
Obtiene si existen tablas cuyo nombre comienzan entre ‘a’
(96) y ‘z’ (122). Luego se debe acotar y comenzar a
obtener el nombre de cada usuario
SELECT * FROM u WHERE id=1 AND if ((select user) = ‘dbo')
WAITFOR DELAY ‘0:0:10’--
Si usuario es ‘dbo’, espera 10 segundos
Más inormación: http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/
![Page 98: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/98.jpg)
Entonces, ¿Cómo se hace?
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet userDataset = new DataSet();
SqlDataAdapter myCommand = new SqlDataAdapter("SP_Login", connection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
myCommand.SelectCommand.Parameters.Add("@user", SqlDbType.VarChar, 11);
myCommand.SelectCommand.Parameters["@user"].Value = usuario.Text;
myCommand.Fill(userDataset);
}
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet userDataset = new DataSet();
SqlDataAdapter myDataAdapter = new SqlDataAdapter("SELECT nombre FROM
autores WHERE autor = @autor", connection);
myCommand.SelectCommand.Parameters.Add("@autor", SqlDbType.VarChar, 11);
myCommand.SelectCommand.Parameters["@autor"].Value = autor.Text;
myDataAdapter.Fill(userDataset);
}
.Net - Store Procedure parametrizado (3 capas)
.Net - Query parametrizada (2 capas)
![Page 99: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/99.jpg)
Entonces, ¿Cómo se hace?
//Conexión PDO a BD
$db = new PDO('mysql:host=' . $host . ';dbname=' . $db, $user, $pass);
$db->query('SET NAMES UTF8');
//Preparar consulta
$query= $db->prepare('SELECT nombre FROM autores WHERE autor = :valor');
//Parametrización
$consulta->bindValue(':valor', $autor, PDO::PARAM_STR);
//Ejecutar consulta
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC))
PDO es una extensión de acceso a datos para PHP 5 y que permite parametrizaciónQuery parametrizada en PHP 5
http://www.php.net/manual/en/class.pdostatement.php
Query q=em.createQuery("SELECT nombre FROM autores WHERE autor = :autor");
q.setParameter("autor", autor);
List autores = q.getResultList();
Query parametrizada en JAVA
![Page 100: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/100.jpg)
Uso de herramientas (I)
![Page 101: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/101.jpg)
Uso de herramientas (II)
![Page 102: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/102.jpg)
![Page 103: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/103.jpg)
![Page 104: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/104.jpg)
DemoSQL Injection
![Page 105: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/105.jpg)
Configuración defectuosa• La configuración defectuosa de aplicaciones,
permisos, usuarios y base de datos permite al atacante obtener información (InformationDisclosure) y realizar un ataque efectivo
HTTP - Puerto 80 HTTPS (Puerto 443)
![Page 106: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/106.jpg)
Configuración defectuosa
![Page 107: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/107.jpg)
Hardening de aplicaciones
• Cambiar directorios de instalación por defecto
• Cambiar configuraciones por defecto
• Utilizar contraseñas fuertes
• NO utilizar protocolos inseguros (FTP, Telnet, POP, SMTP, etc). Utilizar SSH
• Al hacer Upload de archivos, configurar directorios y permisos adecuados
• Utilizar mensajes de errores genéricos y no brindar información del servidor/aplicación
Validar, validar, validar…
![Page 108: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/108.jpg)
Almacenamiento criptográfico inapropiado
El uso inseguro de métodos criptográficos representa la principal vulnerabilidad relacionada a la privacidad y al cumplimiento de normativas (Ej: conformidad con PCI DSS)
¡Han pasado más de 2000 años!
![Page 109: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/109.jpg)
Pequeña guía criptográfica
• Cifrar todos los datos sensibles (en tráfico, almacenamiento, y backups)
• NO utilizar algoritmos propios (seguridad por oscuridad). ¡No crear algoritmos propios!
• Cuidar la implementación de algoritmos seguros
• NO utilizar algoritmos antiguos o con probadas vulnerabilidades
• NO “Hardcodear” claves en el código fuente o almacenar las claves en forma insegura
• NO utilizar cifrado de dos vías en contraseñas (utilizar hashing)
![Page 110: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/110.jpg)
Hashing y HMAC• HMAC (Hash-based Message Authentication
Code): generar un valor (MAC) en base a un Hash cifrado con una clave secreta (conocida como Salt)
• Utilizado para verificar la integridad (hash) y autenticidad (cifrado) del mensaje
Mensaje MD5 SHA1
password 5f4dcc3b5aa765d61d8327deb882cf99 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
Mensaje HMAC-MD5 HMAC-SHA1 SALT
password 5F4DCC3B5AA765D61D8327DEB882CF99 7DB5EEFE8BD10447855265E8EACB6F0BFDC59CFC rnd(1)
password A85A10CDE2C1852DBBD1FB1D670AB939 34FD02E4C516DE4760BACDB86FDDBC1DBC22B524 rnd(2)
![Page 111: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/111.jpg)
Hashing ¿Para qué?
![Page 112: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/112.jpg)
Control de URL y SaltUtilizar HMAC para generar datos codificados y checksum en información sensible
En PHP >= 5.5:http://www.php.net/manual/en/function.password-hash.phphttp://www.php.net/manual/en/function.password-verify.php
![Page 113: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/113.jpg)
Protección insuficiente en la Capa de Transporte
• La aplicación no utiliza SSL para las páginas que requieren autenticación o transmisión de datos sensibles
• Se transmiten cookies por canales inseguros
• Se utilizan protocolos no seguros o débiles
• La aplicación utiliza un certificado SSL configurado incorrectamente, vencido o revocado. Al mostrarse la advertencia los usuarios la ignoran
• Se utilizan back-ends públicos y sin cifrado
![Page 114: 03-OWASP top 2013](https://reader033.vdocuments.site/reader033/viewer/2022050723/563db7e7550346aa9a8f092c/html5/thumbnails/114.jpg)
¡Gracias!
Lic. Cristian Borghello, CISSP – MVP
www.segu-info.com.ar
@seguinfo