Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this documentunder the terms of the OWASP License.
The OWASP Foundationhttp://www.owasp.org/
OWASP Top 10 – 2010Los Diez Riesgos más importantes en Aplicaciones Web
Miguel GuiraoLinux+, GCIH, ITILOWASP México
OWASP - 2010
¿Que ha cambiado?
OWASP - 2010
Metodologia de Valoración
1.66 valoración de riesgo
Ejemplo de Inyección
123
OWASP - 2010
OWASP Top Diez (Edición 2010)
http://www.owasp.org/index.php/Top_10
OWASP - 2010
OWASP Top Diez (Edición 2010)
http://www.owasp.org/index.php/Top_10
OWASP - 2010
A1 – Inyección
OWASP - 2010
A1 – Inyección
OWASP - 2010
Inyección SQL – Ilustrado
Fire
wal
l
Hardened OS
Web Server
App ServerFi
rew
all
Dat
abas
esLe
gacy
Sys
tem
sW
eb S
ervi
ces
Dire
ctor
ies
Hum
an R
esrc
sB
illin
g
Custom Code
APPLICATIONATTACK
Net
wor
k La
yer
App
licat
ion
Laye
r
Acc
ount
sFi
nanc
eA
dmin
istra
tion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
tE-
Com
mer
ceB
us. F
unct
ions
SolicitudH
TTP SQL
queryTabla DB
Respuesta HTTP
"SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’"
1. La aplicación presenta una forma al atacante2. El atacante envía un ataque a traves de los datos de la forma3. La aplicación reenvía el ataque a la base de datos por medio de una consulta SQL
Account Summary
Acct:5424-6066-2134-4334Acct:4128-7574-3921-0192Acct:5424-9383-2039-4029Acct:4128-0004-1234-0293
4. La base de datos ejecuta la consulta que contiene el ataque y envía los resultados cifrados a la aplicación5. La aplicación descifra los datos como normales y envía los resultados al usuario
Account:
SKU:
Account:
SKU:
OWASP - 2010
A2 – Secuencia de Comandos en Sitios Cruzados (XSS)
OWASP - 2010
A2 –Secuencia de Comandos en Sitios Cruzados (XSS)
OWASP - 2010
XSS Ilustrado
App con vuln. XSS almacenado
3
2
Atacante coloca la trampa – actualiza perfil
Atacante ingresa script malicioso en sitio web que guarda los datos en el servidor
1
La victima consulta la página – ve el perfil del atacante
Silenciosamente el script envía las cookies de sesión de la victima
El script se ejecuta en el browser de la victima con acceso completo al DOM y cookies
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istra
tion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
tE-
Com
mer
ceB
us. F
unct
ions
OWASP - 2010
A3 – Perdida de Autenticación y Gestión de Sesiones
OWASP - 2010
A3 – Perdida de Autenticación y Gestión de Sesiones
OWASP - 2010
Perdida de Autenticación Ilustrado
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istr
atio
nTr
ansa
ctio
nsC
omm
unic
atio
nK
now
ledg
e M
gmt
E-C
omm
erce
Bus
. Fun
ctio
ns
1 Usuario envía credenciales
2El sitio usa reescritura de URL(coloca la sesión en el URL)
3 Usuario da click en un link a http://www.hacker.com en un foro
www.boi.com?JSESSIONID=9FA1DB9EA...
4
Hacker verifica las bitacoras de referencia en www.hacker.com y encuentra la JSESSIONID del usuario
5 Hacker usa JSESSIONID y se apodera de la cuenta de la victima
OWASP - 2010
A4 – Referencia Directa Insegura a Objetos
OWASP - 2010
A4 – Referencia Directa Insegura a Objetos
OWASP - 2010
Referencia Directa Insegura a Objetos Ilustrado
Atacante se da cuenta que su parametro acct es 6065
?acct=6065
Lo modifica a un número cercano
?acct=6066
Atacante ve la información de la cuenta de la victima
https://www.onlinebank.com/user?acct=6065
OWASP - 2010
A5 – Falsificación de Peticiones en Sitios Cruzados (CSRF)
OWASP - 2010
A5 – Falsificación de Peticiones en Sitios Cruzados (CSRF)
OWASP - 2010
Patrón de la Vulnerabilidad CSRF El Problema
Los navegadores web incluyen automaticamente las credenciales en cada consulta
Aún para consultas generadas por una forma, script, o imagen en otro sitio
Todos los sitios que emplean unicamente en credenciales automaticas son vulnerables! (y la gran mayoria de los sitios son así)
Credenciales Enviadas Automaticamente Cookies de sesión Encabezado basico de autenticación Dirección IP Certificados SSL de lado del cliente Autenticación de dominio Windows
OWASP - 2010
CSRF Ilustrado
3
2
Atacante coloca la trampa en algún sitio de Internet(o incluso vía e-mail)1
Mientras está firmado en el sitio vulnerable,la victima consulta el sitio del atacante
El sitio vulnerable ve la consulta legitima de la victima y ejecuta la acción solicitada
La etiqueta <img> cargada por el navegador – envía la solicitud GET (incluyendo credenciales) al sitio vulnerable
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istr
atio
nTr
ansa
ctio
nsC
omm
unic
atio
nK
now
ledg
e M
gmt
E-C
omm
erce
Bus
. Fun
ctio
ns
La etiqueta oculta <img> contiene el ataque contra el sitio vulnerable
App con la vulnerabilidad CSRF
OWASP - 2010
A6 – Defectuosa Configuración de Seguridad
OWASP - 2010
A6 – Defectuosa Configuración de Seguridad
OWASP - 2010
Hardened OS
Web Server
App Server
Framework
Defectuosa Configuración de Seguridad Ilustrado
App Configuration
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istra
tion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
tE-
Com
mer
ceB
us. F
unct
ions
Test Servers
QA Servers
Source Control
Development
Database
Insider
OWASP - 2010
A7 – Almacenamiento Criptográfico Inseguro
OWASP - 2010
A7 – Almacenamiento Criptográfico Inseguro
OWASP - 2010
Almacenamiento Criptográfico Inseguro Ilustrado
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istr
atio
nTr
ansa
ctio
nsC
omm
unic
atio
nK
now
ledg
e M
gmt
E-C
omm
erce
Bus
. Fun
ctio
ns
1
Victima ingresa número de TDC en la forma
2El manejador de errores registra en la bitacora el
número de TDC porque el sistema del vendedor no
está disponible
4 El atacante malicioso se rroba 4 millones de números de TDC
Log files
3Las bitacoras son accesibles por todos los miembros del staff de TI para propositos
de correción de errores
OWASP - 2010
A8 – Falla de Restricción de Acceso a URL
OWASP - 2010
A8 – Falla de Restricción de Acceso a URL
OWASP - 2010
Falla de Restricción de Acceso a URL Ilustrado
Atacante nota que el URL indica su rol
/user/getAccounts
Lo modifica a otro directorio (rol)
/admin/getAccounts, o /manager/getAccounts
Atacante consulta más cuentas que solo la propia
https://www.onlinebank.com/user/getAccountshttps://www.onlinebank.com/user/getAccounts
OWASP - 2010
A9 – Protección Insuficiente en la Capa de Transporte
OWASP - 2010
A9 – Protección Insuficiente en la Capa de Transporte
OWASP - 2010
Protección Insuficiente en la Capa de Transporte Ilustrado
Custom Code
Empleados
Socios de NegocioVictima Externa
Backend Systems
Atacante Externo
1Atacante externo roba las credenciales y datos de la red
2
Atacante interno roba las credenciales y datos de la red
Atacante Interno
OWASP - 2010
A10 – Redirecciones y reenvíos no validados
OWASP - 2010
A10 – Redirecciones y reenvíos no validados
OWASP - 2010
Redirecciones no validados Ilustrado
3
2
Atacante envía el ataque a la victima a traves de un sitio o email
De: Secretaría de HaciendaTema: Su Retorno de Impuestos No ReclamadosNuestros registros indican que no ha reclamado el regreso de sus impuestos. De click aquí para iniciar el tramite.
1
Aplicación redirecciona a la victima al sitio del atacante
Solicitud enviada al sitio vulnerable, incluyendo el sitio destino del atacante como un parametro. El redireccionamiento envía a la victima al sitio del atacante.
Custom Code
Acc
ount
s
Fina
nce
Adm
inis
trat
ion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
t
E-C
omm
erce
Bus
. Fun
ctio
ns
4 El sitio malicioso instala malware en la victima, o busca información privada con phishing
La victima da clic en el enlace que contiene parametros no validados
Evil Site
http://www.irs.gov/taxrefund/claim.jsp?year=2006&
… &dest=www.evilsite.com
OWASP - 2010
Reenvíos no validados Ilustrado
2
Atacante envía ataque a la página vulnerable a la cual tiene acceso1
Aplicación autoriza la solicitud, la cual continua a la página vulnerable
La solicitud enviada a la página vulnerable a la cual el usuario tiene acceso. El reenvío toma al usuario directamente a la página privada, pasando por alto los controles de acceso.
3 La página de reenvío falla en validar el parametro, enviando al atacante a una página no autorizada, pasando por alto los controles de accesopublic void doPost( HttpServletRequest request,
HttpServletResponse response) {try {
String target = request.getParameter( "dest" ) );
...
request.getRequestDispatcher( target ).forward(request, response);
}catch ( ...
Filtro
public void sensitiveMethod( HttpServletRequest request, HttpServletResponse response) {
try {//
Do sensitive stuff here....
}catch ( ...
OWASP - 2010
Resumén: ¿Cómo solucionamos estos problemas? Desarrollemos Código Seguro
Sigamos las mejores practicas en la Guía para Construir Aplicaciones Web Seguras de OWASP
http://www.owasp.org/index.php/Guide Utilicemos el Estandar de Verificación de la Seguridad de Aplicaciones de OWASP
como una guía de lo que una aplicación requiere para ser segura http://www.owasp.org/index.php/ASVS
Utilicemos componentes de seguridad estandar que encajen en tu organización Utilicemos ESAPI de OWASP como una base para nuestros compoenentes
estandar http://www.owasp.org/index.php/ESAPI
Auditemos nuestras aplicaciones Que un equipo experno audite nuestra aplicación Revicemos nosotros mismos nuestras aplicaciones siguiendo los lineamientos de
OWASP Guía de Auditoria de Código de OWASP:
http://www.owasp.org/index.php/Code_Review_Guide Guía de Pruebas de OWASP:
http://www.owasp.org/index.php/Testing_Guide
OWASP - 2010
Reconocimientos
Documento Original Dave Wichers
COO, Aspect SecurityOWASP Board Member
[email protected]@owasp.org
Adaptación y Traducción al Español Mtro. Miguel Guirao, MGTI, Linux+, GCIH, ITIL OWASP Capitulo México [email protected]