Este documento habla sobre la seguridad en la web. Explica que la web es omnipresente y tiene una gran superficie de ataque debido a su complejidad y flexibilidad. Detalla posibles vulnerabilidades como ataques a la autenticación, autorización, validación de entrada y cross-site scripting. También cubre temas como sesiones, cookies, inyección SQL y recomendaciones para desarrollar sitios web seguros.
El documento describe el uso de sesiones en PHP para mantener el estado de los usuarios entre páginas web. Explica cómo iniciar sesiones con session_start(), almacenar información en la variable $_SESSION, y proporciona ejemplos de autenticación de usuarios y redireccionamiento entre páginas protegidas mediante el uso de sesiones.
El documento habla sobre el uso de sesiones en PHP para identificar usuarios que acceden a un sitio web. Explica cómo iniciar una sesión utilizando session_start(), cómo almacenar información en la variable $_SESSION, y cómo destruir una sesión. También incluye varios ejemplos de código que muestran cómo implementar el inicio de sesión, el almacenamiento y recuperación de datos, y la protección de páginas.
Seguridad en Aplicaciones Web y Comercio ElectrónicoRené Olivo
Este documento discute varios temas relacionados con la seguridad en aplicaciones web y comercio electrónico. Explica mitos comunes sobre la seguridad, cómo documentarse sobre seguridad, y cómo analizar vulnerabilidades en un sitio web. También recomienda implementar pruebas unitarias y minimizar el uso de componentes externos de baja confianza para mejorar la seguridad.
El documento describe varios métodos de pagos electrónicos como Cardnet, Visanet, PayPal y Authorize.net. Explica sus características principales como la facilidad de implementación, soporte para tarjetas locales y métodos de integración como pagos integrados y SOAP. También analiza ventajas como SDK para diferentes lenguajes y desventajas como interfaces poco personalizables y costos elevados para pequeñas empresas.
Este documento habla sobre el análisis web mediante Google Analytics. Explica cómo configurar objetivos medibles, agregar código de seguimiento a las páginas, y configurar perfiles y cuentas para recopilar y analizar datos sobre el tráfico y conversión en un sitio web. También cubre conceptos como fuentes de tráfico, informes básicos sobre visitantes, y optimizar la configuración para diferentes tipos de sitios como e-commerce.
Taller evento TestingUY 2017 - Incorporando Seguridad a las Tareas de TestingTestingUy
Este documento presenta una introducción a las pruebas de abuso como una actividad dentro del ciclo de testing para verificar aspectos de seguridad en las aplicaciones. Se discuten algunas áreas clave para realizar pruebas de abuso como el manejo de sesiones, la lógica de negocio y el control de acceso. El objetivo es detectar vulnerabilidades de seguridad manipulando las funcionalidades de la aplicación de manera no esperada para explotar controles deficientes y obtener beneficios no pensados.
El documento describe el uso de sesiones en PHP para mantener el estado de los usuarios entre páginas web. Explica cómo iniciar sesiones con session_start(), almacenar información en la variable $_SESSION, y proporciona ejemplos de autenticación de usuarios y redireccionamiento entre páginas protegidas mediante el uso de sesiones.
El documento habla sobre el uso de sesiones en PHP para identificar usuarios que acceden a un sitio web. Explica cómo iniciar una sesión utilizando session_start(), cómo almacenar información en la variable $_SESSION, y cómo destruir una sesión. También incluye varios ejemplos de código que muestran cómo implementar el inicio de sesión, el almacenamiento y recuperación de datos, y la protección de páginas.
Seguridad en Aplicaciones Web y Comercio ElectrónicoRené Olivo
Este documento discute varios temas relacionados con la seguridad en aplicaciones web y comercio electrónico. Explica mitos comunes sobre la seguridad, cómo documentarse sobre seguridad, y cómo analizar vulnerabilidades en un sitio web. También recomienda implementar pruebas unitarias y minimizar el uso de componentes externos de baja confianza para mejorar la seguridad.
El documento describe varios métodos de pagos electrónicos como Cardnet, Visanet, PayPal y Authorize.net. Explica sus características principales como la facilidad de implementación, soporte para tarjetas locales y métodos de integración como pagos integrados y SOAP. También analiza ventajas como SDK para diferentes lenguajes y desventajas como interfaces poco personalizables y costos elevados para pequeñas empresas.
Este documento habla sobre el análisis web mediante Google Analytics. Explica cómo configurar objetivos medibles, agregar código de seguimiento a las páginas, y configurar perfiles y cuentas para recopilar y analizar datos sobre el tráfico y conversión en un sitio web. También cubre conceptos como fuentes de tráfico, informes básicos sobre visitantes, y optimizar la configuración para diferentes tipos de sitios como e-commerce.
Taller evento TestingUY 2017 - Incorporando Seguridad a las Tareas de TestingTestingUy
Este documento presenta una introducción a las pruebas de abuso como una actividad dentro del ciclo de testing para verificar aspectos de seguridad en las aplicaciones. Se discuten algunas áreas clave para realizar pruebas de abuso como el manejo de sesiones, la lógica de negocio y el control de acceso. El objetivo es detectar vulnerabilidades de seguridad manipulando las funcionalidades de la aplicación de manera no esperada para explotar controles deficientes y obtener beneficios no pensados.
Argentesting 2018 - Incorporando seguridad a las tareas de testingArgentesting
Taller ofrecido por Gastón Marichal y Marcos Manicera (ambos de Uruguay) durante la 3ra edición del Argentesting 2018
En este taller discutiremos por qué es importante verificar la seguridad y cómo se pueden incorporar tareas de seguridad dentro del testing funcional. Presentaremos cómo se relaciona la seguridad con la lógica de negocio, tan conocida por los testers y qué aspectos deberíamos verificar para disminuir los posibles puntos de vulnerabilidad de la misma.
El taller tiene como objetivo presentar un enfoque de pruebas funcionales relacionado a verificar ciertos aspectos de seguridad de nuestros sistemas.
Basado en las guías del OWASP, en el taller se muestran que posibles vulnerabilidades relacionadas a la lógica de negocios que de no ser controladas, podría generar grandes problemas de seguridad.
Conocimientos previos requeridos
Conocimientos básicos de desarrollo de software como HTML, HTTP, Arquitectura básica de sistemas. Conocimiento básico de testing.
Requerimientos
Este taller no requiere computadora.
Gastón Marichal
https://www.linkedin.com/in/gmarichal/
Marcos Manicera
https://www.linkedin.com/in/mmanicera/
Los JSON Web Tokens son una forma muy práctica de asegurar nuestras APIs.
En esta charla veremos cuáles son sus propiedades fundamentales, cómo trabajar con ellos y qué opciones tenemos en Symfony, tanto con librerías, como con LexikJWTAuthenticationBundle y su uso del componente Guard.
Este documento describe brevemente a OWASP y el OWASP Top 10. OWASP es una comunidad abierta dedicada a ayudar a organizaciones a desarrollar, comprar y mantener aplicaciones seguras. Produce herramientas, literatura y controles de seguridad. El OWASP Top 10 es una lista de los 10 vulnerabilidades más críticas reportadas frecuentemente por empresas de seguridad, con el objetivo de educar a desarrolladores sobre las consecuencias de estas debilidades.
Este documento describe varias formas en que un atacante puede robar la sesión de un usuario en un sitio web PHP. Estas incluyen ataques por fuerza bruta, robo mediante sniffing de la red, propagación del identificador de sesión en la URL y robo en servidores compartidos. El documento también proporciona varias técnicas para prevenir estos ataques, como usar solo cookies para el identificador de sesión, guardar sesiones en una base de datos y establecer un tiempo de inactividad.
Potencia Tu Sitio Web De La Mano De Internet Explorer 8Andrés Iturralde
Internet Explorer 8 ofrece nuevas características como compatibilidad mejorada con estándares, Web Accelerators, SearchProviders y Web Slices. También cubre cómo prevenir fraudes comunes como conexiones inseguras, malware, phishing y cross-site scripting. El documento presenta estas características a través de demos y recomendaciones para desarrolladores.
Este documento proporciona una introducción a los conceptos y protocolos clave de seguridad en internet, incluyendo HTTP, cookies, SSL, ataques como inyección de código y SQL, y técnicas de defensa. Explica protocolos como HTTP, cookies y sesiones para mantener el estado, y SSL y certificados para cifrado. También cubre técnicas de ataque como inyección, CSRF, robo de sesiones, y ataques MITM usando ARP spoofing.
Google Analytics permite medir el tráfico y uso de un sitio web. Se instala un código de seguimiento que recoge datos sobre las visitas y comportamiento de los usuarios. Esto permite configurar objetivos de conversión, crear informes y segmentar la información para optimizar el sitio y mejorar los resultados.
Este documento resume 7 pecados comunes en el desarrollo web y seguridad de aplicaciones móviles. Describe inyección SQL, fallos de autenticación, cross-site scripting (XSS), referencias directas a objetos, configuraciones defectuosas, protección insuficiente del transporte (TLS) y vulnerabilidades de inclusión y revelación de archivos locales (LFI y LFD). Para cada problema, explica cómo pueden explotarlos los atacantes y ofrece consejos sobre cómo prevenirlos mediante la validación de entradas, listas blancas, mape
Implementar la seguridad en el acceso a datosHelmilpa
El documento describe cómo implementar un sistema de autenticación de usuarios en PHP para proteger el acceso a datos confidenciales. Explica el esquema general del sistema, incluyendo una página de inicio de sesión, una página de control que verifica las credenciales y establece variables de sesión, y una capa de seguridad que se incluye en las páginas protegidas para comprobar la autenticación. También cubre cómo cerrar la sesión cuando el usuario finaliza su sesión o la sesión expira por inactividad
Cuando una aplicación web contiene vulnerabilidades, es hora de llamar a la caballería; pero, si nosotros somos los desarrolladores, nosotros somos la caballería, somos quienes debemos resolver las vulnerabilidades y entregar aplicaciones confiables. La lista OWASP Top 10 2013 es un proyecto que tiene el objetivo de que los desarrolladores tomemos conciencia de la seguridad en las aplicaciones al identificar los principales riesgos que enfrentan las organizaciones. El entender cómo ocurren las vulnerabilidades más comúnmente encontradas nos ayudará a mejorar nuestros hábitos al desarrollar aplicaciones.
Seguridad en los videojuegos - GoD ModeZink Security
El documento presenta una agenda sobre seguridad en videojuegos que incluye una presentación, antecedentes, distintos ámbitos (web y escritorio) y recomendaciones para el desarrollo seguro. Se analizan amenazas comunes como suplantación de identidad, robo de cuentas y trampas. También se discuten medidas para proteger juegos web como validación de parámetros en el servidor y para juegos de escritorio como protección contra vulnerabilidades de código.
Introducción a la analítica web - Menorca 2013Iván de León
Este documento presenta nuevas técnicas para la evaluación de procesos en salud pública, como el análisis web y el monitoreo de redes sociales. Se discuten conceptos básicos de analítica web como métricas e indicadores y herramientas disponibles. También se explican conceptos de monitoreo de redes sociales como indicadores y herramientas. Finalmente, se compara la analítica web con metodologías cualitativas.
El documento describe los conceptos clave de seguridad en aplicaciones .NET. Explica el proceso de desarrollo seguro, incluyendo la identificación de amenazas, el modelado de amenazas, y diseñar la aplicación considerando mecanismos de autenticación, autorización y otras tecnologías de seguridad. También cubre amenazas comunes como inyección SQL, denegación de servicio, y cómo abordar la seguridad a nivel de componentes, base de datos y servicios.
Este documento presenta Visual Studio .NET y las plataformas de desarrollo Web ASP.NET. Explica las diferencias entre el desarrollo Web y Windows, introduce conceptos como Web Forms, controles de servidor, estado y validación. También cubre temas como el modelo de ejecución de ASP.NET, el uso de controles, enlace a datos y plantillas para personalizar interfaces. El objetivo es construir aplicaciones Web con Visual Studio que resuelvan problemas reales accediendo a datos.
Open platform - Hernan Di Chello / José Garciafsolari
Este documento presenta la nueva plataforma abierta de MercadoPago, la cual ofrece mayor flexibilidad y personalización para los vendedores. La plataforma incluye APIs completas, SDKs, sandbox para pruebas, y cumple con los requisitos de PCI. Se explican los conceptos clave como credenciales públicas y privadas, y cómo integrar pagos con tarjeta, clientes, tarjetas almacenadas y otros medios de pago. También cubre MercadoPago Connect y webhooks para notificaciones de eventos.
Fernando Tellado & Fernando Puente: WPO y optimización de resultados de tu Wo...SiteGround España
Adictos al Marketing llega a Barcelona organizado por SiteGround con el objetivo de compartir las últimas tendencias que unen la tecnología y el marketing compartiendo experiencias, conocimiento y estrategias que utilizan los mejores profesionales del sector.
A lo largo de la jornada pudimos ver que pasos deberías seguir en el diseño de tu página web, que deberías estar revisando en tu ecommerce para asegurar el máximo de ventas, cómo utilizar el design thinking y el inbound marketing en la estrategia de tu negocio… y también tuvimos tiempo de hablar de SEO y hacer networking.
Fernando Tellado y Fernando Puente nos ofrecieron un Workshop donde se juntan el WPO y la optimización de resultados en WooCommerce.
No te pierdas los vídeos de las charlas en nuestro canal de YouTube.
Puedes ver todas las ponencias en nuestra playlist aquí
👇👇
https://bit.ly/2BxlVaz
Obtén más info y descarga las presentaciones de los ponentes en nuestro blog
👇👇
https://bit.ly/2BB6luq
Una mirada diferente a Google Analytics, enfocada a los desarrolladores. Esta fue mi presentación en Google DevFest Montevideo, Uruguay el 25 de octubre de 2013.
Vulnerabilidades en Aplicaciones Web PHPMoises Silva
Este documento presenta una introducción a las vulnerabilidades comunes en aplicaciones web desarrolladas en PHP, incluyendo inyección SQL, inyección de código y secuestro de sesiones. Explica brevemente cómo funcionan estos ataques y formas de protegerse, como validar todos los datos de entrada, usar prepared statements en PHP, y configurar sesiones para evitar su fijación.
Este documento describe las principales vulnerabilidades de seguridad en sitios web como la inyección y el scripting entre sitios, y explica cómo CodeIgniter aborda estas preocupaciones a través de funciones como la validación de formularios, la encriptación de cookies, y el uso de Active Records para consultas de bases de datos. También proporciona consejos sobre seguridad como validar los datos enviados, encriptar contraseñas, y almacenar sesiones en la base de datos.
Asegúr@IT III - Ataques SQL Injection masivosChema Alonso
Este documento describe los ataques de inyección SQL y cómo pueden ocurrir ataques masivos automatizados. Explica cómo los atacantes pueden identificar de forma programática URLs vulnerables y luego ejecutar ataques independientes de los datos y tablas de la base de datos. También proporciona consejos sobre cómo protegerse contra la inyección SQL mediante la validación de entradas, el uso de parámetros y cuentas con permisos limitados.
Argentesting 2018 - Incorporando seguridad a las tareas de testingArgentesting
Taller ofrecido por Gastón Marichal y Marcos Manicera (ambos de Uruguay) durante la 3ra edición del Argentesting 2018
En este taller discutiremos por qué es importante verificar la seguridad y cómo se pueden incorporar tareas de seguridad dentro del testing funcional. Presentaremos cómo se relaciona la seguridad con la lógica de negocio, tan conocida por los testers y qué aspectos deberíamos verificar para disminuir los posibles puntos de vulnerabilidad de la misma.
El taller tiene como objetivo presentar un enfoque de pruebas funcionales relacionado a verificar ciertos aspectos de seguridad de nuestros sistemas.
Basado en las guías del OWASP, en el taller se muestran que posibles vulnerabilidades relacionadas a la lógica de negocios que de no ser controladas, podría generar grandes problemas de seguridad.
Conocimientos previos requeridos
Conocimientos básicos de desarrollo de software como HTML, HTTP, Arquitectura básica de sistemas. Conocimiento básico de testing.
Requerimientos
Este taller no requiere computadora.
Gastón Marichal
https://www.linkedin.com/in/gmarichal/
Marcos Manicera
https://www.linkedin.com/in/mmanicera/
Los JSON Web Tokens son una forma muy práctica de asegurar nuestras APIs.
En esta charla veremos cuáles son sus propiedades fundamentales, cómo trabajar con ellos y qué opciones tenemos en Symfony, tanto con librerías, como con LexikJWTAuthenticationBundle y su uso del componente Guard.
Este documento describe brevemente a OWASP y el OWASP Top 10. OWASP es una comunidad abierta dedicada a ayudar a organizaciones a desarrollar, comprar y mantener aplicaciones seguras. Produce herramientas, literatura y controles de seguridad. El OWASP Top 10 es una lista de los 10 vulnerabilidades más críticas reportadas frecuentemente por empresas de seguridad, con el objetivo de educar a desarrolladores sobre las consecuencias de estas debilidades.
Este documento describe varias formas en que un atacante puede robar la sesión de un usuario en un sitio web PHP. Estas incluyen ataques por fuerza bruta, robo mediante sniffing de la red, propagación del identificador de sesión en la URL y robo en servidores compartidos. El documento también proporciona varias técnicas para prevenir estos ataques, como usar solo cookies para el identificador de sesión, guardar sesiones en una base de datos y establecer un tiempo de inactividad.
Potencia Tu Sitio Web De La Mano De Internet Explorer 8Andrés Iturralde
Internet Explorer 8 ofrece nuevas características como compatibilidad mejorada con estándares, Web Accelerators, SearchProviders y Web Slices. También cubre cómo prevenir fraudes comunes como conexiones inseguras, malware, phishing y cross-site scripting. El documento presenta estas características a través de demos y recomendaciones para desarrolladores.
Este documento proporciona una introducción a los conceptos y protocolos clave de seguridad en internet, incluyendo HTTP, cookies, SSL, ataques como inyección de código y SQL, y técnicas de defensa. Explica protocolos como HTTP, cookies y sesiones para mantener el estado, y SSL y certificados para cifrado. También cubre técnicas de ataque como inyección, CSRF, robo de sesiones, y ataques MITM usando ARP spoofing.
Google Analytics permite medir el tráfico y uso de un sitio web. Se instala un código de seguimiento que recoge datos sobre las visitas y comportamiento de los usuarios. Esto permite configurar objetivos de conversión, crear informes y segmentar la información para optimizar el sitio y mejorar los resultados.
Este documento resume 7 pecados comunes en el desarrollo web y seguridad de aplicaciones móviles. Describe inyección SQL, fallos de autenticación, cross-site scripting (XSS), referencias directas a objetos, configuraciones defectuosas, protección insuficiente del transporte (TLS) y vulnerabilidades de inclusión y revelación de archivos locales (LFI y LFD). Para cada problema, explica cómo pueden explotarlos los atacantes y ofrece consejos sobre cómo prevenirlos mediante la validación de entradas, listas blancas, mape
Implementar la seguridad en el acceso a datosHelmilpa
El documento describe cómo implementar un sistema de autenticación de usuarios en PHP para proteger el acceso a datos confidenciales. Explica el esquema general del sistema, incluyendo una página de inicio de sesión, una página de control que verifica las credenciales y establece variables de sesión, y una capa de seguridad que se incluye en las páginas protegidas para comprobar la autenticación. También cubre cómo cerrar la sesión cuando el usuario finaliza su sesión o la sesión expira por inactividad
Cuando una aplicación web contiene vulnerabilidades, es hora de llamar a la caballería; pero, si nosotros somos los desarrolladores, nosotros somos la caballería, somos quienes debemos resolver las vulnerabilidades y entregar aplicaciones confiables. La lista OWASP Top 10 2013 es un proyecto que tiene el objetivo de que los desarrolladores tomemos conciencia de la seguridad en las aplicaciones al identificar los principales riesgos que enfrentan las organizaciones. El entender cómo ocurren las vulnerabilidades más comúnmente encontradas nos ayudará a mejorar nuestros hábitos al desarrollar aplicaciones.
Seguridad en los videojuegos - GoD ModeZink Security
El documento presenta una agenda sobre seguridad en videojuegos que incluye una presentación, antecedentes, distintos ámbitos (web y escritorio) y recomendaciones para el desarrollo seguro. Se analizan amenazas comunes como suplantación de identidad, robo de cuentas y trampas. También se discuten medidas para proteger juegos web como validación de parámetros en el servidor y para juegos de escritorio como protección contra vulnerabilidades de código.
Introducción a la analítica web - Menorca 2013Iván de León
Este documento presenta nuevas técnicas para la evaluación de procesos en salud pública, como el análisis web y el monitoreo de redes sociales. Se discuten conceptos básicos de analítica web como métricas e indicadores y herramientas disponibles. También se explican conceptos de monitoreo de redes sociales como indicadores y herramientas. Finalmente, se compara la analítica web con metodologías cualitativas.
El documento describe los conceptos clave de seguridad en aplicaciones .NET. Explica el proceso de desarrollo seguro, incluyendo la identificación de amenazas, el modelado de amenazas, y diseñar la aplicación considerando mecanismos de autenticación, autorización y otras tecnologías de seguridad. También cubre amenazas comunes como inyección SQL, denegación de servicio, y cómo abordar la seguridad a nivel de componentes, base de datos y servicios.
Este documento presenta Visual Studio .NET y las plataformas de desarrollo Web ASP.NET. Explica las diferencias entre el desarrollo Web y Windows, introduce conceptos como Web Forms, controles de servidor, estado y validación. También cubre temas como el modelo de ejecución de ASP.NET, el uso de controles, enlace a datos y plantillas para personalizar interfaces. El objetivo es construir aplicaciones Web con Visual Studio que resuelvan problemas reales accediendo a datos.
Open platform - Hernan Di Chello / José Garciafsolari
Este documento presenta la nueva plataforma abierta de MercadoPago, la cual ofrece mayor flexibilidad y personalización para los vendedores. La plataforma incluye APIs completas, SDKs, sandbox para pruebas, y cumple con los requisitos de PCI. Se explican los conceptos clave como credenciales públicas y privadas, y cómo integrar pagos con tarjeta, clientes, tarjetas almacenadas y otros medios de pago. También cubre MercadoPago Connect y webhooks para notificaciones de eventos.
Fernando Tellado & Fernando Puente: WPO y optimización de resultados de tu Wo...SiteGround España
Adictos al Marketing llega a Barcelona organizado por SiteGround con el objetivo de compartir las últimas tendencias que unen la tecnología y el marketing compartiendo experiencias, conocimiento y estrategias que utilizan los mejores profesionales del sector.
A lo largo de la jornada pudimos ver que pasos deberías seguir en el diseño de tu página web, que deberías estar revisando en tu ecommerce para asegurar el máximo de ventas, cómo utilizar el design thinking y el inbound marketing en la estrategia de tu negocio… y también tuvimos tiempo de hablar de SEO y hacer networking.
Fernando Tellado y Fernando Puente nos ofrecieron un Workshop donde se juntan el WPO y la optimización de resultados en WooCommerce.
No te pierdas los vídeos de las charlas en nuestro canal de YouTube.
Puedes ver todas las ponencias en nuestra playlist aquí
👇👇
https://bit.ly/2BxlVaz
Obtén más info y descarga las presentaciones de los ponentes en nuestro blog
👇👇
https://bit.ly/2BB6luq
Una mirada diferente a Google Analytics, enfocada a los desarrolladores. Esta fue mi presentación en Google DevFest Montevideo, Uruguay el 25 de octubre de 2013.
Vulnerabilidades en Aplicaciones Web PHPMoises Silva
Este documento presenta una introducción a las vulnerabilidades comunes en aplicaciones web desarrolladas en PHP, incluyendo inyección SQL, inyección de código y secuestro de sesiones. Explica brevemente cómo funcionan estos ataques y formas de protegerse, como validar todos los datos de entrada, usar prepared statements en PHP, y configurar sesiones para evitar su fijación.
Este documento describe las principales vulnerabilidades de seguridad en sitios web como la inyección y el scripting entre sitios, y explica cómo CodeIgniter aborda estas preocupaciones a través de funciones como la validación de formularios, la encriptación de cookies, y el uso de Active Records para consultas de bases de datos. También proporciona consejos sobre seguridad como validar los datos enviados, encriptar contraseñas, y almacenar sesiones en la base de datos.
Asegúr@IT III - Ataques SQL Injection masivosChema Alonso
Este documento describe los ataques de inyección SQL y cómo pueden ocurrir ataques masivos automatizados. Explica cómo los atacantes pueden identificar de forma programática URLs vulnerables y luego ejecutar ataques independientes de los datos y tablas de la base de datos. También proporciona consejos sobre cómo protegerse contra la inyección SQL mediante la validación de entradas, el uso de parámetros y cuentas con permisos limitados.
ESPERAMOS QUE ESTA INFOGRAFÍA SEA UNA HERRAMIENTA ÚTIL Y EDUCATIVA QUE INSPIRE A MÁS PERSONAS A ADENTRARSE EN EL APASIONANTE CAMPO DE LA INGENIERÍA CIVIŁ. ¡ACOMPAÑANOS EN ESTE VIAJE DE APRENDIZAJE Y DESCUBRIMIENTO
3. ¿Por qué la web?
●
Omnipresente
●
Gran superficie de ataque
– servidores de empresas
– servidores personales
– clientes en todas las plataformas
– dispositivos móviles
– configuración de equipos vía web
4. ¿Por qué la web?
●
Muy flexible = muy complejo = hay muchos elementos
– Se puede romper por muchas partes
●
Cliente
●
Servidor
●
código dinámico en el cliente
●
código dinámico en el servidor
●
comunicaciones con base de datos
●
Es difícil verificarlos todos
●
Cualquiera puede = lenguajes fáciles
– programados de forma casual
– se verifican hasta conseguir que la pagina funcione
●
que haga lo que yo quiero que haga
●
Pero no me importa si se rompe por mil partes
●
Nadie se preocupa por que no haga lo que no debe
5. ¿Por qué la web?
●
Porque existe gente a la que no se le debería
dejar programar ni el fin de semana
7. El modelo de la web
●
Clientes y servidores
●
Protocolo HTTP
●
Código en servidor (PHP, ASP, CGI...)
●
Peticiones a bases de datos
●
Dibujo HTML
●
Código en cliente (Java, Javascript...)
●
Formularios
Cliente
Navegador
Servidor
Web
php...
ficheros
DB
js...
motor
dibujo
HTML
HTTP
formularios
8. El modelo de la web
●
Esencialmente es sin estado
– ¡¡Sin embargo se usa para tener sesiones de usuarios con contraseña !!
●
Como se hacen sesiones en un sistema sin estado?
– Cookies
– otros tokens
●
Se permite al servidor almacenar variables en el cliente
Cliente
Navegador
Servidor
Web
php...
ficheros
DB
js...
motor
dibujo
HTML
HTTP
formularios
10. Que puedo atacar?
●
Vulnerabilidades del servidor web
– Cada vez más complejos
– Muy revisados por ser los programas más expuestos
– Sus vulnerabilidades se corrigen rápidamente
●
Vulnerabilidades del navegador
– Programas muy complejos
– Las vulnerabilidades duran más
●
usuarios no siempre actualizan
●
El código generando paginas
– Muchas veces escrito de forma poco profesional
– Normalmente input validation de muchos tipos
11. Que puedo atacar?
●
La autenticación y autorización
– Ataques a los mecanismos de sesiones y autenticación
●
El código en el cliente
– Código inyectado al cliente
●
desde otros sitios
●
en el enlace
●
Gusanos de javascript
●
…
13. Indice de ataque
●
Seguridad en WWW
– Seguridad en la autenticación
– Seguridad en la autorización
– Ataques de validación de entrada
– Cross-site scripting
15. Authorization
●
Usando sesiones en un sistema pensado
para ser “sin estado”
– El usuario se autentifica en una pagina
– a continuación navega por el sitio usando
los privilegios ganados
– El sistema debe recordar que se
autentifico
●
¿Como se sabe que la petición esta
relacionada con la autenticación inicial?
– Estoy enviando la autenticación cada vez?
●
en Basic y Digest: SI
– El cliente consigue algo que puede
presentar cada vez como prueba de
autenticación
●
token
Cliente
Navegador
Servidor
Web
user:
pass:
GET
login page
POST u+p
ok
welcome
[comprar]
GET
compra ok
16. Sesiones
●
3 formas de mantener tokens y sesiones
– Variables de URI
●
Se genera un identificador de sesión aleatorio y en los enlaces de esa sesión se
pasa como variable de GET
– Variables de formularios ocultas (y formularios con POST)
●
Se genera un identificador de sesión aleatorio y en las páginas de esa sesión se
añade una variable oculta a los formularios
– Cookies
●
Permiten almacenar una variable en el cliente que la enviará de vuelta cada vez
que pida una página de ese servidor
http://miweb.com/compras/index.php?session_id=1263716221
<input type=HIDDEN name=session_id value=1263716221>
17. Sesiones: ejemplo
●
Tokens
– Identifican la sesión
a la que pertenece la
petición
●
Autorización
– Procesa las
peticiones de los
tokens establecidos
user+pass+sid=1001
Cliente
Navegador
Servidor
Web
user:
pass:
welcome
[comprar]
welcome
[comprar]
Cliente
Navegador
sid=1001
sid=1001
sin sid
user:
pass:
sid=3106
sid=3106
producto+sid=1001
sid=1001
sin sid
user:
pass:
18. Sesiones: ejemplo en PHP
●
Pagina sencilla con autenticación
●
Si la sesión ya existe la variable $dentro nos dice si el usuario ya ha demostrado su
identidad o no
●
Si vienen datos user, pass de un formulario podemos cambiar el valor de $dentro o bien
apuntar que debemos dar error de intento no valido
●
Si la sesión no existía se generara un id y se guardara en una cookie PHPSESSID
<?php
session_start();
$dentro=$_SESSION['dentro'];
$user=$_POST['user'];
$pass=$_POST['pass'];
if ( isset($user) ) {
if ( $user=="yo" and $pass=="pas" ) {
$dentro=1;
$_SESSION['dentro']=$dentro;
} else {
$wronglogin=1;
}
}
?>
19. Sesiones: ejemplo en PHP
●
El contenido de la página depende de las variables
●
¿Qué problemas tiene esta página?
<?php
if ( $dentro == 1 ) {
?>
<h1>Pagina privada</h1>
No deberias ver esto sin tener la contraseña
...
<?php
} else {
?>
<?php
if ( $wronglogin==1 ) {
echo "<h1 style="color: red;">Error usuario o contraseña incorrecto</h1>";
}
?>
<h2>Demuestre su identidad</h2>
<form method=POST action=./index.php>
User:<br><input type=text name=user><br>
Password:<br><input type=password name=pass>
<br>
<input type=submit name=s value="Enter">
</form>
<?php } ?>
21. Sending cookies
●
Al pedir la primera vez la página anterior
●
Al pedirla otra vez
GET /login.php HTTP/1.1
Host: www.unavarra.es
[...]
HTTP/1.x 200 OK
SetCookie: PHPSESSID=7855b7336334942b8d8e7315eebe57f9; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
ContentLength: 414
ContentType: text/html
[...]
POST /login.php HTTP/1.1
Host: www.unavarra.es
Cookie: PHPSESSID=7855b7336334942b8d8e7315eebe57f9
ContentType: application/xwwwformurlencoded
ContentLength: 28
user=minombre&pass=unapalabra
HTTP/1.x 200 OK
ContentLength: 481
ContentType: text/html
[...]
22. Ataques a los tokens
●
Pero la cookie que se envía esta bajo el control del usuario
– Navegadores que dejan editarlas
– Si envío la cookie de la sesión de otro usuario me convierto en ese usuario
●
Ataques
– Session prediction
●
¿Puedo predecir qué tokens se estarán usando?
– Session hijack
●
secuestro de sesión
●
¿Puedo robar un token a un usuario autentificado?
●
Session fixation
– ¿Puedo imponer un token a un usuario?
●
¿Para qué me vale?
23. Ataques a los tokens
●
Session prediction
– Recoger gran cantidad de tokens
– Análisis estadístico..
●
¿se puede preveer información sobre los siguientes?
– Fuerza bruta sobre los tokens más probables hasta encontrar uno que haya sido asignado a un usuario y se haya
autentificado
●
Session hijack (secuestro de sesión)
– Puedo robar un token a un usuario autentificado?
●
Multiples técnicas. Basadas en web o con técnicas de intrusión
Servidor
Web
token=1001
token=1001
24. Ataques a los tokens
●
Session fixation
– Puedo imponer un token a un usuario?
– Si consigo que un usuario abra la sesión con el token que yo
quiera...
Servidor
Web
token=1001
token=1001
autentificacion
con token=1001
25. Consejos para programar webs
seguras
●
Usar SSL / HTTPS
– Marcar cookies como seguras hace que solo se transmitan a
través de conexiones HTTPS
●
No programar tu sistema de tokens
– Es muy fácil cometer errores de protocolo
– usar los proporcionados por librerías seguras
●
usar sesiones de PHP en lugar de hacerlas yo mismo
●
Regenerar las sesiones con los cambios de privilegios
– Para evitar session fixation
27. Input validation contra Web
●
Ataques básicos
– Canonicalization
●
Añadir ../ para bajar directorios en una variable que acabara siendo
utilizada para calcular un path
●
Uso de caracteres urlencoded %00 %0a para partir cadenas
●
Ejemplo: ${nombre}.jpg puede transformarse en ../../../../../../../etc/passwd
%00.jpg
– Provocar errores con valores inesperados en campos
●
Información en los mensajes de error
●
Ejecución de comandos con | & ;
●
Si los datos acaban formando parte de un comando a ejecutar
– Ejemplo: añadir ; cat /etc/passwd
– SQL injection
29. SQL injection
●
Ataque de validación de entrada típico
– Lo que escribo como usuario y pass en el formulario acabara en
variables y se usara para construir una query a la BBDD
●
Que ocurre si el usuario escribe cosas de este tipo
– Usuario: 1' or '1'='1
– Pass: 1' or '1'='1
SELECT * FROM login WHERE user='1' OR '1'='1' AND pass='1' OR '1'='1';
$user = $_POST['user'];
$pass = $_POST['password'];
SELECT * FROM login WHERE user='$user' AND pass='$pass';
30. ●
Buscando el usuario…
●
Cuidado con los fallos de seguridad de este código…
– Si usáis este cualquiera podrá entrar
$login_usuario_ok=false;
if ($entrada_login) {
$consulta_usuario="select * from Personas where nombre="".$i_nombre."" and
pass="".$i_pass.""";
$result_usuario=mysql_query($consulta_usuario);
if ( $result_usuario==false ) {
print("error al buscar usuario".mysql_error()."n");
exit();
}
if (mysql_num_rows($result_usuario)>0) {
$mi_info=mysql_fetch_assoc($result_usuario);
$login_usuario_ok=true;
print_r($mi_info);
}
}
Ejemplo: chat.php
31. ●
Que pasa si ponemos un usuario como este?
●
La consulta devuelve todos los usuarios !!!
●
Que hace el código anterior si la consulta devuelve todos los usuarios?
simplemente usa el primero !!
usuario: xxx” or “1”=“1
pass: xxx” or “1”=“1
SQL injection
“select * from Personas where nombre="".$i_nombre."" and pass="".$i_pass.""
select * from Personas where nombre="xxx” or “1”=“1" and pass="xxx” or “1”=“1"
32. ●
Si lo que llega del usuario se supone que tiene que ser texto
sin “ ‘ o caracteres raros, asegurare de eliminarlos
– Con str_replace o similares
– Con funciones de mysql que quitan los caracteres peligrosos
●
mysql_real_escape_string()
Recuerda siempre
$i_nombre = mysql_real_escape_string( $i_nombre );
33. ●
Lo mismo ocurre en los campos de entrada
●
Cuidado si el atacante sabe mas SQL que tu :-)
$recibiendo_userid=false;
if ( isset( $_GET["i_userid"] ) ) {
$recibiendo_userid=true;
$i_userid=$_GET["i_userid"];
}
…
$consulta="select * from Mensajes, Personas where Mensajes.src_nia=Personas.nia and
Mensajes.src_nia=".$i_userid;
Mas inyección SQL
i_userid=52403
i_userid=52403+(select+2>1)
i_userid=52403+union+select+pass+from+users;
34. ●
Si lo que llega del usuario se supone que tiene que ser
un número conviértelo a número
– Aunque venga de un menu
Recuerda siempre
$i_userid = intval($i_userid);
35. SQL injection
●
Más variedades
– Poner caracteres con significados para SQL como ' " -- ;
– pueden llegar a romper la query y conseguir cosas
– A veces sólo con producir errores que den información de la
base de datos ya es algo
– Técnicas más sofisticadas que obtienen información incluso
aunque no salgan resultados de la query en la pagina
●
Blind SQL injection
37. HTML injection XSS
●
Insertar código HTML en variables que no esperan HTML, causando que
un atacante tenga control sobre el dibujo de una página ajena
●
Una página que repite la información proporcionada en un campo puede
ser vulnerable
●
¿Qué ocurre si ponemos código HTML?
38. HTML injection XSS
●
Probamos
– <img src=”...”></img>
●
El HTML no se elimina y llega
de vuelta
– Dominando HTML se pueden llegar
a hacer muchas modificaciones
– Incluyendo añadir secciones con
posicionamiento vía CSS que
oculten otras partes de la pagina
original
39. HTML injection XSS
●
Pero es más peligroso si incluimos Javascript
– <script>… document.cookie ...</script>
40. HTML injection XSS
●
Inyectar en un campo
– <script>document.write(document.cookie)</script>
– <script>alert(‘hola’)</script>
– <script src=”http://evilscripts.com/do.js”></script>
– Cualquier cosa que se pueda hacer con javascript puede
hacerse en la página de otro
●
Hasta ahora solo hemos visto como modificar una página
de otro vista en tu navegador.
– ¿Como se puede usar esto para hacer el mal?
41. HTML injection XSS
●
Si los datos que metemos en un formulario pueden pasarse por GET...
●
http://www.unavarra.es/webmail.php?user=<script>...
– Puedo construir una pagina que enlace a otra metiendo datos que la modifiquen (cross-site scripting)
●
Y no hablamos ya de cuando ese HTML es persistente
– Foros
– Weblogs
– Redes sociales
●
Ampliamente usado para ataques a las cookies:
– Hotmail
– Gmail
– facebook
●
Usado robos de identidad
– consiguiendo que la página de una entidad haga algo diferente
– El usuario confia porque ve claramente que es su banco
●
XSS cross site scripting
– Se refiere a cuando cargamos el código javascript de otra pagina
43. File inclusion
●
Y si dejo a un usuario subir un fichero
para que lo sirva el servidor?
– Parecido al HTML mirroring…
●
Es peligroso?
– ¡¡¡Nunca dejar al usuario subir ficheros y que
elija el nombre!!!
– PHP inclusion
– PhpShell !!!
45. Conclusiones
●
Validación de formularios con javascript es inutil
– Se puede hacer por ayudar al usuario pero el servidor
debe volver a validarlo
●
No dar por supuesto nada sobre los datos de
entrada
– Expect the unexpected
●
Limpiar con expresiones regulares
●
Asegurarse de que solo hay lo que queremos
47. Conclusiones
●
Gran variedad de ataques contra la
web
– Contra la autenticación y autorización
– Contra los servidores que alojan las páginas
– Contra otros usuarios de los servidores
●
Es el frente más atacado
– es fundamental comprender en que se basan
para poder defenderse