From 440b8c8a84e559aeb931c507f43efe758aa5431d Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Tue, 13 Feb 2024 01:11:01 +0100 Subject: [PATCH] Add Tema 6 - CrossSite Scripting XSS --- .../02_crosssite_scripting_XSS/email.js | 10 +++++ .../02_crosssite_scripting_XSS/email_pass.js | 19 +++++++++ .../hijacking_cookie.js | 5 +++ .../02_crosssite_scripting_XSS/keylogger.js | 10 +++++ .../server_keylogger.py | 30 ++++++++++++++ .../tema_6_owasp/README.md | 40 +++++++++++++++++++ 6 files changed, 114 insertions(+) create mode 100644 Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/email.js create mode 100644 Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/email_pass.js create mode 100644 Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/hijacking_cookie.js create mode 100644 Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/keylogger.js create mode 100644 Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/server_keylogger.py diff --git a/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/email.js b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/email.js new file mode 100644 index 0000000..7ac1bf8 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/email.js @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/email_pass.js b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/email_pass.js new file mode 100644 index 0000000..fe53e28 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/email_pass.js @@ -0,0 +1,19 @@ +
+ + diff --git a/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/hijacking_cookie.js b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/hijacking_cookie.js new file mode 100644 index 0000000..786b228 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/hijacking_cookie.js @@ -0,0 +1,5 @@ + diff --git a/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/keylogger.js b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/keylogger.js new file mode 100644 index 0000000..a431976 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/keylogger.js @@ -0,0 +1,10 @@ + diff --git a/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/server_keylogger.py b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/server_keylogger.py new file mode 100644 index 0000000..b565194 --- /dev/null +++ b/Introduccion-hacking-hack4u/tema_6_owasp/02_crosssite_scripting_XSS/server_keylogger.py @@ -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() diff --git a/Introduccion-hacking-hack4u/tema_6_owasp/README.md b/Introduccion-hacking-hack4u/tema_6_owasp/README.md index d6f1130..6d500d8 100644 --- a/Introduccion-hacking-hack4u/tema_6_owasp/README.md +++ b/Introduccion-hacking-hack4u/tema_6_owasp/README.md @@ -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: + ``` + + ``` + +- Podemos realizar un hijacking cookie con el script [hijacking_cookie.js](./02_crosssite_scripting_XSS/hijacking_cookie.js) +``` + +``` ## 6.3 XML External Entity Injection (XXE)