Quiero crear un sitio web que sea vulnerable a un ataque XSS en el que el atacante intente inyectar un registrador de teclas que registre las pulsaciones de teclas de cada víctima en este sitio web.
Aquí está el sitio web implementado y siguiendo el código:
function submitted(){ alert("Submitted!"); } <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="index.js"></script> </head> <body> <h1>XSS keylogger test website</h1> <form id="form"> <input type="text" id="fname" name="fname"> <input type="submit" value="Submit" onclick="submitted()"> </form> </body> </html>Un ejemplo de un script JS que contiene código para un registrador de teclado que podría inyectarse:
<script> function keyPressed(){ alert("key pressed"); } window.captureEvents (Event.KEYPRESS); window.onkeypress=keyPressed; </script>Si solo pongo el código en el campo de entrada, no pasa nada. ¿Cómo puedo incrustar el código en el sitio web para que realmente funcione?
INFORMACIÓN
El proyecto solo se utiliza con fines de demostración y aprendizaje.
keylogger que registra las pulsaciones de teclas de cada víctima en este sitio web.
Dada su configuración, no es realmente así como funciona XSS. XSS funciona ya sea:
const fname = document.querySelector('#fname'); function submitted(){ document.querySelector('.current-input-text').innerHTML = 'You submitted: ' + fname.value; fname.value = ''; } fname.value = ` <img src="bad" onerror='window.onkeypress = (e) => console.log(e.key + " PRESSED");'>`; <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="index.js"></script> </head> <body> <h1>XSS keylogger test website</h1> <form id="form" onsubmit="return false;"> <input type="text" id="fname" name="fname"> <input type="submit" value="Submit" onclick="submitted()"> </form> <div class="current-input-text"></div> </body> </html>La carga útil que se envía no se devuelve en la página, lo que podría causar un xss.
Me parece que el cambio que tendrías que hacer sería del lado del servidor.