Seguridad en el desarrollo de
aplicaciones web




                  Juan Eladio Sánchez Rosas
                                Mozilla Perú
Seguridad en el desarrollo de aplicaciones web
¿Seguridad en el desarrollo de
aplicaciones web?
Tres principios, tres


  1    Defensa en profundidad


  2    Menos privilegios


  3    Lo menos complicado
Dos prácticas generales



                 Filtrar entradas
   Asegurarse que los datos de entrada son válidos



                 Escapar salidas
 Asegurar que los datos salientes no se malinterpreten
¿Por dónde empezar?




         https://secure.flickr.com/photos/cdharrison/359763327/
Seguridad en el desarrollo de aplicaciones web
OWASP

●   Proyecto Abierto de Seguridad en
    Aplicaciones Web
●   Comunidad abierta dedicada a habilitar a
    las organizaciones para desarrollar,
    comprar y mantener aplicaciones
    confiables.
OWASP Top 10 2010

●   Diez Riesgos Más Críticos sobre
    Seguridad en Aplicaciones
Inyección




            1
1
Inyección - Ejemplo

●   Efectuar una consulta a partir de un dato
    enviado como parámetro
    ●   http://caralibro.com/usuario.php?id=8262
    ●   $sql = 'SELECT * FROM USERS where id = '.
        $_GET['id'];
●   ¿Qué pasa si ingreso sentencias SQL?
1
Inyección - Riesgos


                      Explotación
                        FÁCIL
                                Prevalencia
                                  COMÚN
                       Detección
                        MEDIA
                                 Impacto
                                 SEVERO
1
Inyección - Nota

●   Inyección no es sólo SQL
    ●   LDAP
    ●   Envío de e-mail
    ●   Comandos de SO
    ●   ...
1
Inyección - Defensa

●   Usar una API segura que evite el uso del
    intérprete o provea una interface
    parametrizada
    ●   $stmt = $dbh->prepare("SELECT * FROM
        USERS where id = ?");
    ●   if ($stmt->execute(array($_GET['id']))) {
1
Inyección - Defensa

●   Si no hay una API segura validar entradas
    ●   if (is_int($_GET['id'])) {
    ●   if
        (filter_var($_GET['id'],FILTER_VALIDATE_IN
        T))
Secuencia de Comandos en Sitios
Cruzados (XSS)




                         2
Secuencia de Comandos en Sitios
                              2

Cruzados (XSS) - Ejemplo
●   El contenido de una página se carga
    imprimiendo un dato ingresado
    previamente
    ●   http://caralibro.com/buscar.php?
        cadena=Equipos
    ●   echo $cadena;
●   ¿Qué pasa si ingreso etiquetas HTML en
    la variable cadena?
Secuencia de Comandos en Sitios
                              2

Cruzados (XSS) - Ejemplo
●   ¿Y si comparto el enlace modificado?
●   ¿Y si vuelvo persistente el dato en la base
    de datos?
Secuencia de Comandos en Sitios
                              2

Cruzados (XSS) - Ejemplo
Secuencia de Comandos en Sitios
                              2

Cruzados (XSS) - Riesgos


                  Explotación
                    MEDIA
                            Prevalencia
                         MUY DIFUNDIDA
                   Detección
                    FÁCIL
                             Impacto
                           MODERADO
Secuencia de Comandos en Sitios
                              2

Cruzados (XSS) - Defensa
●   Escapar todos los datos no confiables
    ●   htmlentities($_GET['cadena']);
    ●   filter_var($_GET['cadena'],
        FILTER_SANITIZE_FULL_SPECIAL_CHAR
        S);
Secuencia de Comandos en Sitios
                              2

Cruzados (XSS) - Defensa
●   Validación de entradas positivas (permitir
    ciertas etiquetas)
    ●   Funciones más complicadas
Pérdida de Autenticación y Gestión
de Sesiones




                           3
Pérdida de Autenticación y Gestión
                                3

de Sesiones - Ejemplo
●   Un usuario mantiene su sesión activa
    siguiendo enlaces que incluyen su
    identificador de sesión
    ●   http://caralibro.com/preferencias.php?
        sessionid=52e83279678a
●   ¿Si copio el enlace en otra PC, ingreso a
    la misma página?
Pérdida de Autenticación y Gestión
                                3

de Sesiones - Ejemplo
●   Un usuario inicia sesión desde una cabina
    de Internet y luego cierra el navegador sin
    cerrar sesión
●   ¿Qué sucede si luego otro usuario entra a
    la misma web?
Pérdida de Autenticación y Gestión
                                3

de Sesiones - Ejemplo
●   Un atacante accede a la base de datos de
    contraseñas SIN CIFRAR
Pérdida de Autenticación y Gestión
                                3

de Sesiones - Riesgos


                   Explotación
                     MEDIA
                             Prevalencia
                               COMÚN
                    Detección
                     MEDIA
                              Impacto
                              SEVERO
Pérdida de Autenticación y Gestión
                                3

de Sesiones - Defensa
●   Un fuerte control de gestión de sesiones
●   Tiempos límites de vigencia
●   ¡¡¡Cifrar las claves de tus usuarios!!!
●   session_regenerate_id(TRUE)
Referencia Directa Insegura
a Objetos




                              4
Referencia Directa Insegura                        4

a Objetos - Ejemplo
●   El usuario accede a información personal
    con una dirección que incluye su
    identificador
    ●   http://caralibro.com/cuenta.php?id=87392
●   ¿Qué pasa si cambio el valor de id?
Referencia Directa Insegura           4

a Objetos - Riesgo


                   Explotación
                     FÁCIL
                             Prevalencia
                               COMÚN
                    Detección
                     FÁCIL
                              Impacto
                            MODERADO
Referencia Directa Insegura                 4

a Objetos - Defensa
●   Comprobar que el usuario tiene los
    privilegios para acceder al recurso
    ●   if ($_GET['id']==$_SESSION['id'])
Falsificación de Peticiones en Sitios
Cruzados (CSRF)




                             5
Falsificación de Peticiones en Sitios
                                   5

Cruzados (CSRF) - Ejemplo
●   Una aplicación de correo electrónico
    permite configurar una cuenta adicional
    para reenviar los mensajes
    ●   http://caralibro.com/reenviar.php?
        mail=root@local.com
●   Qué pasa si creo una página con una
    etiqueta HTML que hace una llamada a la
    URL con otra dirección e-mail
Falsificación de Peticiones en Sitios
                                   5

Cruzados (CSRF) - Riesgos


                    Explotación
                      MEDIA
                              Prevalencia
                             MUY COMÚN
                     Detección
                      FÁCIL
                               Impacto
                             MODERADO
Falsificación de Peticiones en Sitios
                                   5

Cruzados (CSRF) - Defensa
●   Incluir token (testigo) en la petición, de
    preferencia de manera oculta:
    ●   <input type="hidden" name="token"
        value="856c2f50ddc49fd710f14a406ec1fef6
        52d3c9f">
Defectuosa Configuración de
Seguridad (NUEVO)




                          6
Defectuosa Configuración de                     6

Seguridad (NUEVO) - Ejemplo
●   Se descubre una vulnerabilidad
    importante en el framework empleado en
    la aplicación
    ●   Una actualización corrige el problema
●   ¿Qué pasa si nadie actualiza la versión
    en la aplicación?
Defectuosa Configuración de   6

Seguridad (NUEVO) - Ejemplo
Defectuosa Configuración de                  6

Seguridad (NUEVO) - Ejemplo
●   Una herramienta administrativa es
    instalada en el servidor web y se deja
    accesible sin clave
    ●   http://caralibro.com/phpmyadmin
●   ¿Qué sucede si comienzan a adivinar
    URLs?
Defectuosa Configuración de                  6

Seguridad (NUEVO) - Ejemplo
●   Se suben por error carpetas .SVN en el
    servidor de producción
●   ¿Qué sucede si la configuración del
    servidor web permite ver archivos
    ocultos?
Defectuosa Configuración de                                               6

 Seguridad (NUEVO) - Ejemplo
  ●   La aplicación muestra el detalle completo
      de los errores
  ●   ¿Y si el detalle completo muestra
      información relevante del funcionamiento
      de la aplicación?
ERROR [credit-card-db] (MySqlSystem.java:1331) - Invalid column name
java.sql.SQLException: Invalid column name ‘social_security_numbre’: select
username, password, ssn from users where id = ?
sun.jdbc.rowset.CachedRowSet.getColIdxByName(CachedRowSet.java:1383)
     at com.mysql.Driver.MySQLDriver.a(MySQLDriver.java:2531)
     at sun.jdbc.rowset.CachedRowSet.getString(CachedRowSet.java:2167)
     at com.ppe.db.MySqlSystem.getReciPaying(MySqlSystem.java:1318)
     at control.action.FindUserAction.perform(FindKeyUserAction.java:81)
     at org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet)
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1586)
     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
Defectuosa Configuración de   6

Seguridad (NUEVO) - Ejemplo
Defectuosa Configuración de          6

Seguridad (NUEVO) - Riesgos


                  Explotación
                    FÁCIL
                            Prevalencia
                              COMÚN
                   Detección
                    FÁCIL
                             Impacto
                           MODERADO
Defectuosa Configuración de                6

Seguridad (NUEVO) - Defensa
●   Definir procesos para actualizar versiones
    de herramientas empleadas
●   Verificar que herramientas administrativas
    no se encuentren accesibles
●   Proteger la configuración de los
    componentes que usa la aplicación
●   Deshabilitar mensajes de errores,
    advertencias o información
Almacenamiento Criptográfico
Inseguro




                         7
Almacenamiento Criptográfico               7

Inseguro - Ejemplo
●   Una aplicación almacena archivos
    cifrados pero la clave de cifrado es
    accesible.
Almacenamiento Criptográfico                   7

Inseguro - Ejemplo
●   La base de datos de claves usa algún
    algoritmo hash pero sin “sal” (un dato
    adicional que se suma al valor original)
    ●   md5($_POST['clave']);
●   Un ataque de fuerza bruta demora menos
    en encontrar la clave si ésta no está
    sumada a una “sal”
Almacenamiento Criptográfico        7

Inseguro - Riesgos


                  Explotación
                    DIFÍCIL
                            Prevalencia
                          POCO COMÚN
                   Detección
                    DIFÍCIL
                             Impacto
                             SEVERO
Almacenamiento Criptográfico              7

Inseguro - Defensa
●   Asegúrese de que los datos cifrados y la
    clave que los descrifra se encuentran en
    lugares distintos
Almacenamiento Criptográfico                 7

Inseguro - Defensa
●   Utilice una “sal” al usar un algoritmo hash
    ●   md5($sal.$_POST['clave']);
Almacenamiento Criptográfico              7

Inseguro - Defensa
●   Dejar de usar algoritmos MD5, SHA1,
    DES.
Almacenamiento Criptográfico                   7

Inseguro - Nota
●   Usa SHA-256, AES, RSA.
    ●   hash('sha256',$sal.$_POST['clave']);
Falla de Restricción de Acceso a
URL




                            8
Falla de Restricción de Acceso a          8

URL - Ejemplo
●   Generalmente una aplicación web tiene
    una sección administrativa
    ●   http://caralibro.com/admin
●   ¿La sección administrativa requiere
    clave?
Falla de Restricción de Acceso a     8

URL - Riesgos


                   Explotación
                     FÁCIL
                             Prevalencia
                           POCO COMÚN
                    Detección
                     MEDIA
                              Impacto
                            MODERADO
Falla de Restricción de Acceso a               8

URL - Defensa
●   Verificar por cada página que se requiera
    que el usuario tenga los privilegios
    suficientes para acceder a ella.
    ●   if (is_capable($_SESSION['userid'],$page))
Protección Insuficiente en la Capa
de Transporte




                            9
Protección Insuficiente en la Capa
                                 9

de Transporte - Ejemplo
●   Una aplicación no utiliza certificados de
    seguridad en la transmisión de datos
    sensibles
●   ¿Qué sucede si un atacante lee las
    transmisiones del usuario?
Protección Insuficiente en la Capa
                                 9

de Transporte - Ejemplo
●   Una aplicación utiliza certificados de
    seguridad pero han sido mal configurados
    y muestran errores frecuentemente a los
    usuarios
●   ¿Qué sucede si un atacante crea una
    página falsa y que muestra errores
    similares?
Protección Insuficiente en la Capa
                                 9

de Transporte - Riesgos


                   Explotación
                     DIFÍCIL
                             Prevalencia
                               COMÚN
                    Detección
                     FÁCIL
                              Impacto
                             MODERADO
Protección Insuficiente en la Capa
                                 9

de Transporte - Defensa
●   Usar SSL para todas las páginas que
    utilizan datos sensibles
Protección Insuficiente en la Capa
                                 9

de Transporte - Defensa
●   Verificar que el certificado sea válido, no
    se haya vencido y esté configurado para
    todos los dominios usados por la
    aplicación.
Redirecciones y reenvíos no
validados (NUEVO)




                          10
Redirecciones y reenvíos no                         10

validados (NUEVO) - Ejemplo
●   Una aplicación tiene páginas del tipo
    redirect, con un parámetro URL
    ●   http://caralibro.com/ir.php?url=curso.php
●   ¿Qué sucede si coloco una dirección
    externa en url?
Redirecciones y reenvíos no                     10

validados (NUEVO) - Ejemplo
●   Una petición envía, además de los datos
    normales, la url que mostrará al
    confirmarse la transacción
    ●   http://caralibro.com/transaccion.php?
        dato1=cualquiera&exito=inicio.php
●   ¿Qué sucede si cambio el valor de exito?
Redirecciones y reenvíos no         10

validados (NUEVO) - Riesgos


                  Explotación
                    MEDIA
                            Prevalencia
                          POCO COMÚN
                   Detección
                    FÁCIL
                             Impacto
                           MODERADO
Redirecciones y reenvíos no                  10

validados (NUEVO) - Defensa
●   Evitar usar redirecciones.
●   Si se utiliza, evitar que el usuario pueda
    manipular el destino.
●   También se debe asegurar que el destino
    será válido y autorizado.
Y esto es sólo el comienzo
(para ustedes :D)     Clickjacking
                                ●


                                ●   Plugins (Flash,
                                    Acrobat, Java)
                                ●   XSS con CSS
                                ●   JSON con datos
                                    sensibles
                                ●   Remote Code
                                    Injection
                                ●   XSS + Ajax + CSRF
         https://secure.flickr.com/photos/anonymous9000/3644243073/
Referencias bibliográficas
●   OWASP Top Ten Project [Spanish Translation]
    https://www.owasp.org/index.php/Top_10
●   2010: A Web Hacking Odyssey - Top Ten Hacks of the Year
    http://www.slideshare.net/jeremiahgrossman/2010-a-web-hacking-odyssey-
    top-ten-hacks-of-the-year
●   RIA And AJAX Security Workshop, Part 1
    http://www.slideshare.net/astamos/ria-and-ajax-security-workshop-part-1-
    presentation
●   Evolution Of Web Security http://www.slideshare.net/shiflett/evolution-of-web-
    security
●   Rails Security Best Practices http://www.slideshare.net/ihower/rails-security-
    3299368
●   Web Application Security Tutorial
    http://www.slideshare.net/xplodersuv/EducauseAnnualWebAppSecTutorialV3
●   Web Security Horror Stories http://www.slideshare.net/simon/web-security-
    horror-stories-presentation
●   PHP Security Consortium http://phpsec.org/
●   PHP Filtros de saneamiento http://php.net/manual/es/filter.filters.sanitize.php
https://secure.flickr.com/photos/nickstone333/3390456806/




Todo esto … ¿tiene que
ver con Firefox?
Futuras publicaciones de Firefox




Firefox (Estable), Aurora y Mobile
firefox.com/channel


Firefox Portable (ejecutable desde USB)
mozilla.pe/firefox-portable
Complementos en Firefox

●   Hackbar
Complementos en Firefox

●   User Agent RG
Complementos en Firefox

●   PassiveRecon
Complementos en Firefox

●   FoxyProxy Standard
Complementos en Firefox

●   Tamper Data
Advertencia final




    La piratería en redes sin la previa
   autorización se considera un delito
Y una cosa más ...




   https://secure.flickr.com/photos/takomabibelot/2455018965/
Mozilla Perú


      /mozillaperu
Seguridad en el desarrollo de
aplicaciones web




                  Juan Eladio Sánchez Rosas
                    slideshare.net/juaneladio

Más contenido relacionado

PPTX
Seguridad en Aplicaciones Web
PDF
Vulnerabilidades en sitios web(español)
PPTX
Seguridad en sitios web
PPTX
Los 10 principales riesgos en aplicaciones web #CPMX5
PDF
Seguridad web
PPS
Seguridad en Aplicaciones Web
PPT
Vulnerabilidades en Aplicaciones Web PHP
PDF
Seguridad Web
Seguridad en Aplicaciones Web
Vulnerabilidades en sitios web(español)
Seguridad en sitios web
Los 10 principales riesgos en aplicaciones web #CPMX5
Seguridad web
Seguridad en Aplicaciones Web
Vulnerabilidades en Aplicaciones Web PHP
Seguridad Web

La actualidad más candente (20)

PPTX
sistemas de seguridad para desarrollar web
ODP
Seguridad de Aplicaciones Web
PPTX
Argentesting 2017 - Proyecto OWASP Top 10
ODP
Seguridad en aplicaciones web
PPTX
Resumen curso de seguridad para desarrolladores de aplicaciones web y móviles...
PPTX
Temas owasp
PPT
Owasp Top10 Spanish
PPT
Hackers en los sistemas de las administraciones públicas
PDF
Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"
PPTX
Owasp top ten 2019
PDF
Hacking web con OWASP
PPTX
Seguridad web
PDF
Owasp top 10 2010 final (spanish)
PPTX
Cer tuy capacitaciones2011_v1
PDF
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
PDF
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
PPTX
Owasp top 10 2017
PPTX
Seguridad en los sistemas web
PPTX
Owasp top 10
sistemas de seguridad para desarrollar web
Seguridad de Aplicaciones Web
Argentesting 2017 - Proyecto OWASP Top 10
Seguridad en aplicaciones web
Resumen curso de seguridad para desarrolladores de aplicaciones web y móviles...
Temas owasp
Owasp Top10 Spanish
Hackers en los sistemas de las administraciones públicas
Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"
Owasp top ten 2019
Hacking web con OWASP
Seguridad web
Owasp top 10 2010 final (spanish)
Cer tuy capacitaciones2011_v1
10 riesgos más críticos que deben afrontar las organizaciones sobre sus aplic...
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Owasp top 10 2017
Seguridad en los sistemas web
Owasp top 10
Publicidad

Similar a Seguridad en el desarrollo de aplicaciones web (20)

DOCX
Seguridad En Base De Datos
DOCX
Seguridad En Base De Datos
PDF
Web App Security, Ethical hacking for CodeCamp SDQ 5
ODP
Securiza tu red con Snort y sus amigos
PDF
Concientización de Riesgos de Ciberseguridad En Wordpress.
ODP
Seguridad Base de Datos sql injection v1.0
PDF
Seguridad en redes Unidad V
PPT
Cómo realizar un test de intrusión a una aplicación Web
PPTX
Seguridad web para desarrolladores - OWASP
PPT
SEGUIRIDAD DE BASE DE DATOS
PPT
Incorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
PPTX
Los 7 pecados del Desarrollo Web
PPTX
Bajo Ataque 2.pptx
DOCX
UNEG-AS 2012-Inf11: Métodos usados para abusar de las nuevas tecnologías
PPT
Man in the middle aplicado a la seguridad
PDF
Seguridad en Aplicaciones Web y Comercio Electrónico
PPTX
Tolerancia_Fallos_Seguridad_Sistemas_Distribuidos_Investigacion.pptx
PDF
DOC
Investigacion de seguridad
PDF
Base de datos
Seguridad En Base De Datos
Seguridad En Base De Datos
Web App Security, Ethical hacking for CodeCamp SDQ 5
Securiza tu red con Snort y sus amigos
Concientización de Riesgos de Ciberseguridad En Wordpress.
Seguridad Base de Datos sql injection v1.0
Seguridad en redes Unidad V
Cómo realizar un test de intrusión a una aplicación Web
Seguridad web para desarrolladores - OWASP
SEGUIRIDAD DE BASE DE DATOS
Incorporando la Seguridad de la Información en el Desarrollo de Aplicaciones
Los 7 pecados del Desarrollo Web
Bajo Ataque 2.pptx
UNEG-AS 2012-Inf11: Métodos usados para abusar de las nuevas tecnologías
Man in the middle aplicado a la seguridad
Seguridad en Aplicaciones Web y Comercio Electrónico
Tolerancia_Fallos_Seguridad_Sistemas_Distribuidos_Investigacion.pptx
Investigacion de seguridad
Base de datos
Publicidad

Más de Juan Eladio Sánchez Rosas (20)

PDF
Seguridad informatica para docentes
PDF
Introducción a la computación en la nube
PDF
Curso: Diseño de apps y webs móviles - Parte 2
PDF
Curso: Diseño de apps y webs móviles - Parte 1
PDF
Cómo crear comunidades tecnológicas disruptivas - Coneisc Arequipa 2015
PDF
Encuesta Anual: Perfil del Desarrollador Web Perú 2015
PDF
iPhone v Android: Lecciones de la revolución móvil
PDF
App-ocalipsis: El fin de las aplicaciones móviles
PDF
Taller Diseno de apps móviles
PDF
Muchas voces, una Comunidad Mozilla
PDF
Tecnologias Mozilla en la batalla por el futuro de la web
PDF
La web abierta y Mozilla
PDF
Desarrollo de aplicaciones web móviles
PDF
Herramientas de desarrollo en Firefox para la web abierta
PDF
Prueba dos versiones de Firefox al mismo tiempo
PDF
Estudio: Situación de los desarrolladores web en el Perú 2012
PDF
Firefox Next y otras iniciativas de Mozilla
PDF
HTML5 y los desafíos del desarrollo web de HOY
PDF
Buenas prácticas de usabilidad para el desarrollo web
ODP
Mozilla Labs: Reinventando la web
Seguridad informatica para docentes
Introducción a la computación en la nube
Curso: Diseño de apps y webs móviles - Parte 2
Curso: Diseño de apps y webs móviles - Parte 1
Cómo crear comunidades tecnológicas disruptivas - Coneisc Arequipa 2015
Encuesta Anual: Perfil del Desarrollador Web Perú 2015
iPhone v Android: Lecciones de la revolución móvil
App-ocalipsis: El fin de las aplicaciones móviles
Taller Diseno de apps móviles
Muchas voces, una Comunidad Mozilla
Tecnologias Mozilla en la batalla por el futuro de la web
La web abierta y Mozilla
Desarrollo de aplicaciones web móviles
Herramientas de desarrollo en Firefox para la web abierta
Prueba dos versiones de Firefox al mismo tiempo
Estudio: Situación de los desarrolladores web en el Perú 2012
Firefox Next y otras iniciativas de Mozilla
HTML5 y los desafíos del desarrollo web de HOY
Buenas prácticas de usabilidad para el desarrollo web
Mozilla Labs: Reinventando la web

Último (20)

PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PDF
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
PPTX
Presentación final ingenieria de metodos
PPTX
Control de calidad en productos de frutas
PDF
Taller tecnológico Michelle lobo Velasquez
DOCX
Informee_APA_Microbittrabajoogrupal.docx
DOCX
Nombre del estudiante Gabriela Benavides
PPTX
Todas las señales relativas a la seguridad en el trabajo están normalizadas, ...
PDF
Teoría de estadística descriptiva y aplicaciones .pdf
DOCX
orientacion nicol juliana portela jimenez
PDF
Inteligencia_Artificial,_Informática_Básica,_22_06_2025_SO_2.pdf
PDF
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
DOCX
Guía 5. Test de orientación Vocacional 2[1] (Recuperado automáticamente).docx
PPTX
CLASE PRACTICA-- SESION 6 -- FPW -- 04 11 23.pptx
PDF
Guía_de_implementación_Marco_de_gobierno_y_gestión_de_TI_Universidades.pdf
PDF
Estrategia de apoyo valentina lopez/ 10-3
DOCX
Trabajo informatica joel torres 10-.....................
PPTX
TECNOLOGIAS DE INFORMACION Y COMUNICACION
DOCX
tablas tecnologia maryuri vega 1....docx
PPTX
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
Presentación final ingenieria de metodos
Control de calidad en productos de frutas
Taller tecnológico Michelle lobo Velasquez
Informee_APA_Microbittrabajoogrupal.docx
Nombre del estudiante Gabriela Benavides
Todas las señales relativas a la seguridad en el trabajo están normalizadas, ...
Teoría de estadística descriptiva y aplicaciones .pdf
orientacion nicol juliana portela jimenez
Inteligencia_Artificial,_Informática_Básica,_22_06_2025_SO_2.pdf
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
Guía 5. Test de orientación Vocacional 2[1] (Recuperado automáticamente).docx
CLASE PRACTICA-- SESION 6 -- FPW -- 04 11 23.pptx
Guía_de_implementación_Marco_de_gobierno_y_gestión_de_TI_Universidades.pdf
Estrategia de apoyo valentina lopez/ 10-3
Trabajo informatica joel torres 10-.....................
TECNOLOGIAS DE INFORMACION Y COMUNICACION
tablas tecnologia maryuri vega 1....docx
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.

Seguridad en el desarrollo de aplicaciones web

  • 1. Seguridad en el desarrollo de aplicaciones web Juan Eladio Sánchez Rosas Mozilla Perú
  • 3. ¿Seguridad en el desarrollo de aplicaciones web?
  • 4. Tres principios, tres 1 Defensa en profundidad 2 Menos privilegios 3 Lo menos complicado
  • 5. Dos prácticas generales Filtrar entradas Asegurarse que los datos de entrada son válidos Escapar salidas Asegurar que los datos salientes no se malinterpreten
  • 6. ¿Por dónde empezar? https://secure.flickr.com/photos/cdharrison/359763327/
  • 8. OWASP ● Proyecto Abierto de Seguridad en Aplicaciones Web ● Comunidad abierta dedicada a habilitar a las organizaciones para desarrollar, comprar y mantener aplicaciones confiables.
  • 9. OWASP Top 10 2010 ● Diez Riesgos Más Críticos sobre Seguridad en Aplicaciones
  • 11. 1 Inyección - Ejemplo ● Efectuar una consulta a partir de un dato enviado como parámetro ● http://caralibro.com/usuario.php?id=8262 ● $sql = 'SELECT * FROM USERS where id = '. $_GET['id']; ● ¿Qué pasa si ingreso sentencias SQL?
  • 12. 1 Inyección - Riesgos Explotación FÁCIL Prevalencia COMÚN Detección MEDIA Impacto SEVERO
  • 13. 1 Inyección - Nota ● Inyección no es sólo SQL ● LDAP ● Envío de e-mail ● Comandos de SO ● ...
  • 14. 1 Inyección - Defensa ● Usar una API segura que evite el uso del intérprete o provea una interface parametrizada ● $stmt = $dbh->prepare("SELECT * FROM USERS where id = ?"); ● if ($stmt->execute(array($_GET['id']))) {
  • 15. 1 Inyección - Defensa ● Si no hay una API segura validar entradas ● if (is_int($_GET['id'])) { ● if (filter_var($_GET['id'],FILTER_VALIDATE_IN T))
  • 16. Secuencia de Comandos en Sitios Cruzados (XSS) 2
  • 17. Secuencia de Comandos en Sitios 2 Cruzados (XSS) - Ejemplo ● El contenido de una página se carga imprimiendo un dato ingresado previamente ● http://caralibro.com/buscar.php? cadena=Equipos ● echo $cadena; ● ¿Qué pasa si ingreso etiquetas HTML en la variable cadena?
  • 18. Secuencia de Comandos en Sitios 2 Cruzados (XSS) - Ejemplo ● ¿Y si comparto el enlace modificado? ● ¿Y si vuelvo persistente el dato en la base de datos?
  • 19. Secuencia de Comandos en Sitios 2 Cruzados (XSS) - Ejemplo
  • 20. Secuencia de Comandos en Sitios 2 Cruzados (XSS) - Riesgos Explotación MEDIA Prevalencia MUY DIFUNDIDA Detección FÁCIL Impacto MODERADO
  • 21. Secuencia de Comandos en Sitios 2 Cruzados (XSS) - Defensa ● Escapar todos los datos no confiables ● htmlentities($_GET['cadena']); ● filter_var($_GET['cadena'], FILTER_SANITIZE_FULL_SPECIAL_CHAR S);
  • 22. Secuencia de Comandos en Sitios 2 Cruzados (XSS) - Defensa ● Validación de entradas positivas (permitir ciertas etiquetas) ● Funciones más complicadas
  • 23. Pérdida de Autenticación y Gestión de Sesiones 3
  • 24. Pérdida de Autenticación y Gestión 3 de Sesiones - Ejemplo ● Un usuario mantiene su sesión activa siguiendo enlaces que incluyen su identificador de sesión ● http://caralibro.com/preferencias.php? sessionid=52e83279678a ● ¿Si copio el enlace en otra PC, ingreso a la misma página?
  • 25. Pérdida de Autenticación y Gestión 3 de Sesiones - Ejemplo ● Un usuario inicia sesión desde una cabina de Internet y luego cierra el navegador sin cerrar sesión ● ¿Qué sucede si luego otro usuario entra a la misma web?
  • 26. Pérdida de Autenticación y Gestión 3 de Sesiones - Ejemplo ● Un atacante accede a la base de datos de contraseñas SIN CIFRAR
  • 27. Pérdida de Autenticación y Gestión 3 de Sesiones - Riesgos Explotación MEDIA Prevalencia COMÚN Detección MEDIA Impacto SEVERO
  • 28. Pérdida de Autenticación y Gestión 3 de Sesiones - Defensa ● Un fuerte control de gestión de sesiones ● Tiempos límites de vigencia ● ¡¡¡Cifrar las claves de tus usuarios!!! ● session_regenerate_id(TRUE)
  • 30. Referencia Directa Insegura 4 a Objetos - Ejemplo ● El usuario accede a información personal con una dirección que incluye su identificador ● http://caralibro.com/cuenta.php?id=87392 ● ¿Qué pasa si cambio el valor de id?
  • 31. Referencia Directa Insegura 4 a Objetos - Riesgo Explotación FÁCIL Prevalencia COMÚN Detección FÁCIL Impacto MODERADO
  • 32. Referencia Directa Insegura 4 a Objetos - Defensa ● Comprobar que el usuario tiene los privilegios para acceder al recurso ● if ($_GET['id']==$_SESSION['id'])
  • 33. Falsificación de Peticiones en Sitios Cruzados (CSRF) 5
  • 34. Falsificación de Peticiones en Sitios 5 Cruzados (CSRF) - Ejemplo ● Una aplicación de correo electrónico permite configurar una cuenta adicional para reenviar los mensajes ● http://caralibro.com/reenviar.php? mail=root@local.com ● Qué pasa si creo una página con una etiqueta HTML que hace una llamada a la URL con otra dirección e-mail
  • 35. Falsificación de Peticiones en Sitios 5 Cruzados (CSRF) - Riesgos Explotación MEDIA Prevalencia MUY COMÚN Detección FÁCIL Impacto MODERADO
  • 36. Falsificación de Peticiones en Sitios 5 Cruzados (CSRF) - Defensa ● Incluir token (testigo) en la petición, de preferencia de manera oculta: ● <input type="hidden" name="token" value="856c2f50ddc49fd710f14a406ec1fef6 52d3c9f">
  • 38. Defectuosa Configuración de 6 Seguridad (NUEVO) - Ejemplo ● Se descubre una vulnerabilidad importante en el framework empleado en la aplicación ● Una actualización corrige el problema ● ¿Qué pasa si nadie actualiza la versión en la aplicación?
  • 39. Defectuosa Configuración de 6 Seguridad (NUEVO) - Ejemplo
  • 40. Defectuosa Configuración de 6 Seguridad (NUEVO) - Ejemplo ● Una herramienta administrativa es instalada en el servidor web y se deja accesible sin clave ● http://caralibro.com/phpmyadmin ● ¿Qué sucede si comienzan a adivinar URLs?
  • 41. Defectuosa Configuración de 6 Seguridad (NUEVO) - Ejemplo ● Se suben por error carpetas .SVN en el servidor de producción ● ¿Qué sucede si la configuración del servidor web permite ver archivos ocultos?
  • 42. Defectuosa Configuración de 6 Seguridad (NUEVO) - Ejemplo ● La aplicación muestra el detalle completo de los errores ● ¿Y si el detalle completo muestra información relevante del funcionamiento de la aplicación? ERROR [credit-card-db] (MySqlSystem.java:1331) - Invalid column name java.sql.SQLException: Invalid column name ‘social_security_numbre’: select username, password, ssn from users where id = ? sun.jdbc.rowset.CachedRowSet.getColIdxByName(CachedRowSet.java:1383) at com.mysql.Driver.MySQLDriver.a(MySQLDriver.java:2531) at sun.jdbc.rowset.CachedRowSet.getString(CachedRowSet.java:2167) at com.ppe.db.MySqlSystem.getReciPaying(MySqlSystem.java:1318) at control.action.FindUserAction.perform(FindKeyUserAction.java:81) at org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1586) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
  • 43. Defectuosa Configuración de 6 Seguridad (NUEVO) - Ejemplo
  • 44. Defectuosa Configuración de 6 Seguridad (NUEVO) - Riesgos Explotación FÁCIL Prevalencia COMÚN Detección FÁCIL Impacto MODERADO
  • 45. Defectuosa Configuración de 6 Seguridad (NUEVO) - Defensa ● Definir procesos para actualizar versiones de herramientas empleadas ● Verificar que herramientas administrativas no se encuentren accesibles ● Proteger la configuración de los componentes que usa la aplicación ● Deshabilitar mensajes de errores, advertencias o información
  • 47. Almacenamiento Criptográfico 7 Inseguro - Ejemplo ● Una aplicación almacena archivos cifrados pero la clave de cifrado es accesible.
  • 48. Almacenamiento Criptográfico 7 Inseguro - Ejemplo ● La base de datos de claves usa algún algoritmo hash pero sin “sal” (un dato adicional que se suma al valor original) ● md5($_POST['clave']); ● Un ataque de fuerza bruta demora menos en encontrar la clave si ésta no está sumada a una “sal”
  • 49. Almacenamiento Criptográfico 7 Inseguro - Riesgos Explotación DIFÍCIL Prevalencia POCO COMÚN Detección DIFÍCIL Impacto SEVERO
  • 50. Almacenamiento Criptográfico 7 Inseguro - Defensa ● Asegúrese de que los datos cifrados y la clave que los descrifra se encuentran en lugares distintos
  • 51. Almacenamiento Criptográfico 7 Inseguro - Defensa ● Utilice una “sal” al usar un algoritmo hash ● md5($sal.$_POST['clave']);
  • 52. Almacenamiento Criptográfico 7 Inseguro - Defensa ● Dejar de usar algoritmos MD5, SHA1, DES.
  • 53. Almacenamiento Criptográfico 7 Inseguro - Nota ● Usa SHA-256, AES, RSA. ● hash('sha256',$sal.$_POST['clave']);
  • 54. Falla de Restricción de Acceso a URL 8
  • 55. Falla de Restricción de Acceso a 8 URL - Ejemplo ● Generalmente una aplicación web tiene una sección administrativa ● http://caralibro.com/admin ● ¿La sección administrativa requiere clave?
  • 56. Falla de Restricción de Acceso a 8 URL - Riesgos Explotación FÁCIL Prevalencia POCO COMÚN Detección MEDIA Impacto MODERADO
  • 57. Falla de Restricción de Acceso a 8 URL - Defensa ● Verificar por cada página que se requiera que el usuario tenga los privilegios suficientes para acceder a ella. ● if (is_capable($_SESSION['userid'],$page))
  • 58. Protección Insuficiente en la Capa de Transporte 9
  • 59. Protección Insuficiente en la Capa 9 de Transporte - Ejemplo ● Una aplicación no utiliza certificados de seguridad en la transmisión de datos sensibles ● ¿Qué sucede si un atacante lee las transmisiones del usuario?
  • 60. Protección Insuficiente en la Capa 9 de Transporte - Ejemplo ● Una aplicación utiliza certificados de seguridad pero han sido mal configurados y muestran errores frecuentemente a los usuarios ● ¿Qué sucede si un atacante crea una página falsa y que muestra errores similares?
  • 61. Protección Insuficiente en la Capa 9 de Transporte - Riesgos Explotación DIFÍCIL Prevalencia COMÚN Detección FÁCIL Impacto MODERADO
  • 62. Protección Insuficiente en la Capa 9 de Transporte - Defensa ● Usar SSL para todas las páginas que utilizan datos sensibles
  • 63. Protección Insuficiente en la Capa 9 de Transporte - Defensa ● Verificar que el certificado sea válido, no se haya vencido y esté configurado para todos los dominios usados por la aplicación.
  • 64. Redirecciones y reenvíos no validados (NUEVO) 10
  • 65. Redirecciones y reenvíos no 10 validados (NUEVO) - Ejemplo ● Una aplicación tiene páginas del tipo redirect, con un parámetro URL ● http://caralibro.com/ir.php?url=curso.php ● ¿Qué sucede si coloco una dirección externa en url?
  • 66. Redirecciones y reenvíos no 10 validados (NUEVO) - Ejemplo ● Una petición envía, además de los datos normales, la url que mostrará al confirmarse la transacción ● http://caralibro.com/transaccion.php? dato1=cualquiera&exito=inicio.php ● ¿Qué sucede si cambio el valor de exito?
  • 67. Redirecciones y reenvíos no 10 validados (NUEVO) - Riesgos Explotación MEDIA Prevalencia POCO COMÚN Detección FÁCIL Impacto MODERADO
  • 68. Redirecciones y reenvíos no 10 validados (NUEVO) - Defensa ● Evitar usar redirecciones. ● Si se utiliza, evitar que el usuario pueda manipular el destino. ● También se debe asegurar que el destino será válido y autorizado.
  • 69. Y esto es sólo el comienzo (para ustedes :D) Clickjacking ● ● Plugins (Flash, Acrobat, Java) ● XSS con CSS ● JSON con datos sensibles ● Remote Code Injection ● XSS + Ajax + CSRF https://secure.flickr.com/photos/anonymous9000/3644243073/
  • 70. Referencias bibliográficas ● OWASP Top Ten Project [Spanish Translation] https://www.owasp.org/index.php/Top_10 ● 2010: A Web Hacking Odyssey - Top Ten Hacks of the Year http://www.slideshare.net/jeremiahgrossman/2010-a-web-hacking-odyssey- top-ten-hacks-of-the-year ● RIA And AJAX Security Workshop, Part 1 http://www.slideshare.net/astamos/ria-and-ajax-security-workshop-part-1- presentation ● Evolution Of Web Security http://www.slideshare.net/shiflett/evolution-of-web- security ● Rails Security Best Practices http://www.slideshare.net/ihower/rails-security- 3299368 ● Web Application Security Tutorial http://www.slideshare.net/xplodersuv/EducauseAnnualWebAppSecTutorialV3 ● Web Security Horror Stories http://www.slideshare.net/simon/web-security- horror-stories-presentation ● PHP Security Consortium http://phpsec.org/ ● PHP Filtros de saneamiento http://php.net/manual/es/filter.filters.sanitize.php
  • 72. Futuras publicaciones de Firefox Firefox (Estable), Aurora y Mobile firefox.com/channel Firefox Portable (ejecutable desde USB) mozilla.pe/firefox-portable
  • 76. Complementos en Firefox ● FoxyProxy Standard
  • 78. Advertencia final La piratería en redes sin la previa autorización se considera un delito
  • 79. Y una cosa más ... https://secure.flickr.com/photos/takomabibelot/2455018965/
  • 80. Mozilla Perú /mozillaperu
  • 81. Seguridad en el desarrollo de aplicaciones web Juan Eladio Sánchez Rosas slideshare.net/juaneladio