This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Defensa contra Defensa contra ataques web comunesataques web comunes
Securizar una Aplicación: Validación Securizar una Aplicación: Validación de Datos de Entradade Datos de Entrada
Buffer OverrunBuffer Overrun
Inyección SQLInyección SQL
Cross-Site ScriptingCross-Site Scripting
Robo de SesiónRobo de Sesión
Holística de la seguridadHolística de la seguridad
Servidor Servidor WebWeb
Servidor Servidor de de
AplicacionAplicacioneses
Servidor Servidor de BDde BD
Firew
all
Firew
all
Firew
all
Firew
all
ServidorServidor
ParchesServicios
Protocolos
CuentasFicheros y Directorios
Shares
PuertosRegistro
Auditoría y Logging
RedRed
RouterFirewallSwitch
AplicaciónAplicaciónValidación de INput
AutenticaciónAutorización
Gestión de ConfiguraciónDatos Sensibles
Gestión de SesionesCriptografía
Manipulación de ParámetrosGestión de Excepciones
Auditoría y Logging
Securizar la AplicaciónSecurizar la Aplicación
Validación de Datos de EntradaValidación de Datos de Entrada
AutentificaciónAutentificación
AutorizaciónAutorización
Gestión de ConfiguraciónGestión de Configuración
Datos SensiblesDatos Sensibles
Gestión de SesionesGestión de Sesiones
CriptografíaCriptografía
Manipulación de ParámetrosManipulación de Parámetros
Gestión de ExcepcionesGestión de Excepciones
Auditoría y LoggingAuditoría y Logging
Securizar la AplicaciónSecurizar la Aplicación Validación de Datos de Entrada Validación de Datos de Entrada
Ataques posibles:Ataques posibles:Desbordamiento de bufferDesbordamiento de bufferInyección de códigoInyección de códigoInyección SQLInyección SQLCross-Site Scripting (xss)Cross-Site Scripting (xss)
Entrada de datos:Entrada de datos:Cookies, cabeceras, campos html, controles Cookies, cabeceras, campos html, controles Viewstate,QueryStringViewstate,QueryStringServicios Web/Remoting/DCOMServicios Web/Remoting/DCOMDatos de base de datos, ficheros o fuentes Datos de base de datos, ficheros o fuentes remotasremotas
Siempre dudar de su contenido!!Siempre dudar de su contenido!!Validación de datos en servidorValidación de datos en servidor
No volcar mensajes de errorNo volcar mensajes de error
string sqlString="SELECT * FROM Orders WHERE CustomerID=@custID";
SqlCommand cmd = new SqlCommand(sqlString, conn);cmd.Parameters.Add("@custID", idCliente);
Inyección SQLInyección SQL
Validación de la entradaValidación de la entradaCross-site scriptingCross-site scripting
¿Que es XSS?¿Que es XSS?Un agujero de seguridad que permite al Un agujero de seguridad que permite al hacker ejecutar código script en un cliente hacker ejecutar código script en un cliente webweb
Efectos habitualesEfectos habitualesModificación del contenidoModificación del contenido
Envío de informaciónEnvío de información
Robo de sesiónRobo de sesión
Validación de la entradaValidación de la entradaAnatomía de una ataque XSSAnatomía de una ataque XSS
HackerHacker VictimaVictima
Sitio WebSitio Web
1.1. Envia correo al Envia correo al usuario con link a usuario con link a un sitio inocenteun sitio inocente 2. El usuario 2. El usuario
visita el visita el sitio websitio web
3. En el contexto del 3. En el contexto del usuario, el sitio envia usuario, el sitio envia datos a traves de un datos a traves de un
post malformadopost malformado
Validación de la entradaValidación de la entradaTipos de Cross-site scriptingTipos de Cross-site scripting
Tipo 0 – Local ó DOM-basedTipo 0 – Local ó DOM-basedUn script local accede a parametros request de la Un script local accede a parametros request de la
URL y los utiliza para construir código script.URL y los utiliza para construir código script.
Tipo 1 – No Persistente ó ReflejadaTipo 1 – No Persistente ó ReflejadaSe utilizan l os datos de entrada de formularios Se utilizan l os datos de entrada de formularios
para construir scripts, permitiendo la inyección para construir scripts, permitiendo la inyección de código.de código.
Tipo 2 – Persistente ó Segundo OrdenTipo 2 – Persistente ó Segundo OrdenEs la más poderosa. Los datos se almacenan en Es la más poderosa. Los datos se almacenan en
una bbdd y posteriormente se muestran a los una bbdd y posteriormente se muestran a los usuarios, inyectando el código continuamente.usuarios, inyectando el código continuamente.
Cross-site scriptingCross-site scripting
Validación de la entradaValidación de la entradaProtección contra Cross-site scriptingProtección contra Cross-site scripting
Validar y limpiar cualquier entradaValidar y limpiar cualquier entradaVigilar <script>, <object>…Vigilar <script>, <object>…
Especialmente la que es mostrada despuésEspecialmente la que es mostrada después
Utilizar Utilizar HttpOnlyHttpOnly en IE6.1 en IE6.1
Aprovechar ASP.NETAprovechar ASP.NETHTMLEncode para limpiarHTMLEncode para limpiar
ValidateRequest para validar todas las ValidateRequest para validar todas las entradasentradas
Autenticación falseableAutenticación falseableRobos de passwordsRobos de passwords
Nunca enviar por canales insegurosNunca enviar por canales insegurosCuidado con RPC, RemotingCuidado con RPC, Remoting
Proteger su almacenamientoProteger su almacenamientoEstablecer políticasEstablecer políticas
Utilizar hash con Utilizar hash con saltsalt
PasswordPassword
SHA1CryptoServiceProvider.ComputeHash
SaltSalt
HashHash
Autenticación falseableAutenticación falseableModificación de ticketModificación de ticket
ASP.NET utiliza tickets en forma de URL o ASP.NET utiliza tickets en forma de URL o cookiecookie
Robo de cookieRobo de cookieCuidado con XSSCuidado con XSS
Usar Usar RequireSSL y !PersistentRequireSSL y !Persistent
Modificación de cookieModificación de cookieSi contiene información del usuarioSi contiene información del usuario
Utilizar MACUtilizar MAC
Cookie TamperingCookie Tampering
SumarioSumario
La gran mayoría de las aplicaciones La gran mayoría de las aplicaciones tienen agujeros de seguridadtienen agujeros de seguridad
Reglas de protecciónReglas de protecciónValidación de entradaValidación de entrada
Evitar SQL dinámicoEvitar SQL dinámico
Aplicar Encoding a toda la salidaAplicar Encoding a toda la salida
Ejecutar con los mínimos privilegiosEjecutar con los mínimos privilegios
Cifrar los secretos (connstr, pass’s, etc.)Cifrar los secretos (connstr, pass’s, etc.)
Minimizar la superficie de exposiciónMinimizar la superficie de exposición
Y si fallamos, hacerlo de modo privadoY si fallamos, hacerlo de modo privado
Próximas accionesPróximas acciones
8 Junio Evento Windows Workflow 8 Junio Evento Windows Workflow Mad.nugMad.nug
13 Junio. Seguridad Práctica para 13 Junio. Seguridad Práctica para EmpresasEmpresas