Que es XSS , Cross-site scripting


Que es xss
View more presentations from jamesjara.

 GSI-CR XSS
TECNICA XSS
Cross-site scripting

XSS, del inglés Cross-site scripting es un tipo
de inseguridad informática o agujero de
seguridad típico de las aplicaciones Web, que
permite a una tercera parte inyectar código
JavaScript en páginas web vistas por el
usuario, evitando medidas de control como la
Política del mismo origen.

DONDE SE ENCUENTRA ESTOS
ERRORES?

Estos errores se pueden encontrar en cualquier aplicación
que tenga como objetivo final, el presentar la información
en un navegador web. No se limita a sitios web, ya que
puede haber aplicaciones locales vulnerables a XSS, o
incluso el navegador en sí. El problema está en que
usualmente 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).

TIPOS DE XSS

Directa (Persistente): este tipo de XSS comúnmente
filtrado, y consiste en embeber código HTML peligroso en
sitios que lo permitan; incluyendo así etiquetas como
<script> o <iframe>.
Indirecta (Reflejada): este tipo de XSS consiste en
modificar valores que la aplicación web utiliza para pasar
variables entre dos páginas, 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 podría
extenderse al DOM del navegador).

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é pasaría si se pone como URL del frame un código javascript?
javascript:while(1)alert("Este mensaje saldra indefinidamente");
Si este enlace lo pone un atacante hacia una víctima, 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 trataría de colocar un script que robe las cookies de la víctima, para
después poder personificarse como con su sesión, o hacer automático el proceso con el uso de la
biblioteca cURL o alguna similar. De esta forma, al recibir la cookie, el atacante podría ejecutar
acciones con los permisos de la víctima sin siquiera necesitar tu contraseña.
Otro uso común para estas vulnerabilidades es lograr hacer phishing. Quiere ello decir que la
víctima ve en la barra de direcciones un sitio, pero realmente está en otra. La víctima introduce su
contraseña y se la envía al atacante.

XSS Indirecto (reflejado)

Una página como la siguiente:
error.php?error=Usuario%20Invalido
es probablemente vulnerable a XSS indirecto, ya que si escribe en el documento "Usuario Inválido",
esto significa que un atacante podría insertar HTML y JavaScript si así lo desea.
Por ejemplo, un tag como <script> que ejecute código javascript, cree otra sesión bajo otro usuario
y mande la sesión 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. Sólo 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 débiles en la programación 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 están permitidas y es poco conocida su capacidad de ejecutar
código. De esta forma el atacante podría ejecutar código malicioso.

XSS Directo (persistente)
Ejemplos:
Una posibilidad es usar atributos que permiten ejecutar código.
<BR SIZE="&{alert('XSS')}">
<FK STYLE="behavior: url(http://yoursite/xss.htc);">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
También se puede crear un DIV con background-image: url(javascript:eval
(this.fu)) como estilo y añadir al DIV un campo llamado fu que contenga el
código a ejecutar, por ejemplo:
<div fu="alert('Hola mundo');" STYLE="background-image: url(javascript:eval
(this.fu))">

0 pensamientos:

Post a Comment

feedback!