😎
WEB
YouTubeTwitterLinkedIn
  • La Biblia del Hacking en Web
    • ADVERTENCIA
    • Conoce a tu academia
    • Conoce a tu instructor
    • Aprende Hacking Web con los laboratorios de PortSwigger
  • SQL Injection
    • ¿SQL Injection?
    • Lab 1: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
    • Lab 2: SQL injection vulnerability allowing login bypass
    • Lab 3: SQL injection attack, querying the database type and version on Oracle
    • Lab 4: SQL injection attack, querying the database type and version on MySQL and Microsoft
    • Lab 5: SQL injection attack, listing the database contents on non-Oracle databases
    • Lab 6: SQL injection attack, listing the database contents on Oracle
  • Cross Site Scripting
    • ¿XSS?
    • Lab 1: Reflected XSS into HTML context with nothing encoded
    • Lab 2: Stored XSS into HTML context with nothing encoded
    • Lab 3: DOM XSS in document.write sink using source location.search
    • Lab 4: DOM XSS in innerHTML sink using source location.search
    • Lab 5: DOM XSS in jQuery anchor href attribute sink using location.search source
  • ClickJacking
    • ¿Clickjacking?
    • Lab 1: Basic clickjacking with CSRF token protection
  • Access control vulnerabilities
    • ¿Control de Acceso?
    • Lab 1: Unprotected admin functionality
    • Lab 3: User role controlled by request parameter
  • Path traversal
    • ¿Path Traversal?
    • Lab 1: File path traversal, simple case
    • Lab 2: File path traversal, traversal sequences blocked with absolute path bypass
    • Lab 3: File path traversal, traversal sequences stripped non-recursively
  • XML external entity (XXE) injection
    • ¿XML external entity?
    • Lab 1: Exploiting XXE using external entities to retrieve files
    • Lab 2: Exploiting XXE to perform SSRF attacks
    • Lab 3: Blind XXE with out-of-band interaction
  • JWT
    • ¿JWT?
    • Lab 1: JWT authentication bypass via unverified signature
    • Lab 2: JWT authentication bypass via flawed signature verification
    • Lab 3: JWT authentication bypass via weak signing key
    • Lab 4: JWT authentication bypass via jwk header injection
    • Lab 5: JWT authentication bypass via jku header injection
  • Server-side request forgery (SSRF)
    • ¿SSRF?
    • Lab 1: Basic SSRF against the local server
  • OS command injection
    • ¿OS Command Injection?
    • Lab 1: OS command injection, simple case
  • Authentication
    • ¿Authentication?
    • Lab 1: Username enumeration via different responses
  • HTTP request smuggling
    • ¿HTTP request smuggling?
    • Lab 1: HTTP request smuggling, confirming a CL.TE vulnerability via differential responses
  • Server-side template injection
    • ¿Server-side template injection?
    • Lab 1: Basic server-side template injection
  • DOM-based vulnerabilities
    • Lab 1: DOM XSS using web messages
    • Lab 2: DOM XSS using web messages and a JavaScript URL
  • WebSockets
    • Lab #1: Manipulating WebSocket messages to exploit vulnerabilities
  • Prototype pollution
    • ¿Prototype Pollution?
    • Lab 1: Client-side prototype pollution via browser APIs
      • Utilizando DOM Invader
    • Lab 2: DOM XSS via client-side prototype pollution
    • Lab 3: DOM XSS via an alternative prototype pollution vector
      • Utilizando DOM Invader
    • Lab 4: Client-side prototype pollution via flawed sanitization
    • Lab 5: Client-side prototype pollution in third-party libraries
    • Lab 6: Privilege escalation via server-side prototype pollution
    • Lab 7: Detecting server-side prototype pollution without polluted property reflection
    • Lab 8: Bypassing flawed input filters for server-side prototype pollution
    • Lab 9: Remote code execution via server-side prototype pollution
    • Lab 10: Exfiltrating sensitive data via server-side prototype pollution
  • GraphQL
    • Lab 1: Accessing private GraphQL posts
  • Web cache poisoning
    • Lab 1: Web cache poisoning with an unkeyed header
  • CORS
    • Lab #2 - CORS vulnerability with trusted null origin
    • Lab 3: CORS vulnerability with trusted insecure protocols
  • API testing
    • Lab #1: Exploiting an API endpoint using documentation
    • Lab #2: Exploiting server-side parameter pollution in a query string
    • Lab #3: Finding and exploiting an unused API endpoint
    • Lab #4: Exploiting a mass assignment vulnerability
    • Lab #5: Exploiting server-side parameter pollution in a REST URL
Con tecnología de GitBook
En esta página
  • ¿Qué es el Cross-Site Scripting (XSS)?
  • ¿Cómo funciona el XSS?
  • Pasos del proceso de un ataque XSS:
  • Prueba de Concepto de XSS
  • Tipos de ataques XSS
  • XSS Reflejado:
  • XSS Almacenado:
  • XSS Basado en DOM:
  • Consideraciones Adicionales

¿Te fue útil?

  1. Cross Site Scripting

¿XSS?

¿Qué es el Cross-Site Scripting (XSS)?

El Cross-Site Scripting (XSS) es una vulnerabilidad de seguridad que permite a un atacante inyectar scripts maliciosos en contenido que otros usuarios verán. Los scripts maliciosos se ejecutan en el contexto del navegador de la víctima, lo que puede permitir al atacante robar cookies, sesiones, credenciales, realizar acciones en nombre del usuario y otros actos maliciosos. XSS es una de las vulnerabilidades más comunes en aplicaciones web y se encuentra catalogada en el OWASP Top Ten.

¿Cómo funciona el XSS?

El XSS explota la confianza que un navegador tiene en el contenido que recibe de un sitio web. Los atacantes inyectan código JavaScript malicioso en una página web que posteriormente será vista por otros usuarios. Cuando estos usuarios acceden a la página comprometida, el código malicioso se ejecuta en sus navegadores, teniendo acceso a la información sensible y a la interacción del usuario con la página web.

Pasos del proceso de un ataque XSS:

  1. Identificación de una entrada vulnerable: El atacante encuentra un campo de entrada o URL en la aplicación web que no valida ni escapa adecuadamente las entradas del usuario.

  2. Inyección del script malicioso: El atacante inyecta un payload de JavaScript en el campo de entrada o URL vulnerable.

  3. Ejecución del script en el navegador de la víctima: Cuando un usuario legítimo accede a la página web que contiene la entrada manipulada, el navegador ejecuta el script malicioso.

  4. Robo de información o ejecución de acciones maliciosas: El script malicioso puede robar cookies, sesiones, credenciales, modificar la apariencia de la página, o redirigir a la víctima a sitios maliciosos.

Prueba de Concepto de XSS

Una prueba de concepto simple de XSS reflejado puede ser una URL manipulada con un payload inyectado:

http://victima.com/search?q=<script>alert('XSS')</script>

Cuando un usuario hace clic en este enlace, el navegador ejecutará el código JavaScript alert('XSS'), demostrando la existencia de la vulnerabilidad.

Tipos de ataques XSS

XSS Reflejado:

El XSS reflejado ocurre cuando el payload malicioso se inyecta en una solicitud HTTP y el servidor web refleja este contenido directamente en la respuesta. Es más común en formularios de búsqueda y parámetros de URL.

Ejemplo:

http://victima.com/search?q=<script>alert('XSS')</script>

En este caso, si la aplicación no maneja correctamente la entrada del usuario, el script se reflejará en la respuesta y se ejecutará en el navegador de la víctima.

XSS Almacenado:

El XSS almacenado (también conocido como persistente) se produce cuando el payload malicioso se almacena en el servidor, normalmente en una base de datos, y luego se muestra a otros usuarios sin la adecuada sanitización. Este tipo es más peligroso porque cualquier usuario que visite la página afectada ejecutará el script malicioso.

Ejemplo: Un atacante inserta un comentario en un foro con el siguiente contenido:

<script>alert('XSS Almacenado')</script>

Cuando otros usuarios ven ese comentario, el script se ejecuta en sus navegadores.

XSS Basado en DOM:

El XSS basado en DOM (Document Object Model) ocurre cuando el payload malicioso se ejecuta como resultado de modificaciones en el DOM en el lado del cliente, sin interacción directa con el servidor. Este tipo de XSS se origina y se ejecuta completamente en el navegador del cliente.

Ejemplo:

// Una página web tiene el siguiente código JavaScript
var search = document.location.hash.substring(1);
document.getElementById('result').innerHTML = search;

Si un atacante manipula la URL para incluir un hash malicioso:

http://victima.com/#<script>alert('XSS Basado en DOM')</script>

El script se ejecutará cuando la página procese el hash de la URL y lo inserte en el DOM.

Consideraciones Adicionales

Para mitigar los ataques XSS, es crucial implementar una serie de prácticas de seguridad:

  1. Validación y escape de entrada: Validar y escapar adecuadamente todas las entradas del usuario antes de utilizarlas.

  2. Content Security Policy (CSP): Implementar CSP para restringir la ejecución de scripts no confiables.

  3. Sanitización del contenido: Usar bibliotecas de sanitización para limpiar las entradas antes de almacenarlas o mostrarlas.

  4. HTTPOnly y Secure cookies: Configurar cookies con atributos HttpOnly y Secure para evitar el acceso a cookies desde scripts y asegurar su transmisión.

AnteriorLab 6: SQL injection attack, listing the database contents on OracleSiguienteLab 1: Reflected XSS into HTML context with nothing encoded

Última actualización hace 11 meses

¿Te fue útil?