🐈‍⬛
H4CKdotCL
Laboratorio
  • 🪅Bienvenidos al Book
  • Certificaciones
    • ⏳Junior Penetration Tester - eJPTv2
    • 🥉Ethical Hacking Professional Certification - CEHPC
    • 🥉Cybersecurity Awareness Professional Certification - CAPC
  • Metodología y Fases de Hacking Ético
    • Metodologías
      • Metodología OWASP (Open Web Application Security Project)
      • Metodología PTES
      • Metodología ISSAF
      • Metodología OSSTMM
    • Recopilación Pasiva de Información
      • Sublist3r
      • Httpx
      • theHarvester
      • Google Dorks
      • Wafw00f
      • Shodan
      • Whatweb
    • Recopilación Activa de Información
      • enum4linux
      • Guía de uso para Gobuster
      • Nmap (Network Mapper)
      • Wfuzz
      • SecList
      • FFUF
      • SMBClient
      • CrackMapExec
      • SMBMap
      • WPScan
      • Steghide
      • subfinder
    • SQLMap
    • Hydra
  • Utilidades
    • Docker: Potenciando Laboratorios de Pentesting
    • 📖Ejemplos de informes de Hacking Ético y auditoría de seguridad
  • Vulnerabilidades Web
    • IDOR (Insecure Direct Object Reference)
    • SSRF (Server-Side Request Forgery)
    • CSRF (Cross-Site Request Forgery)
    • File Upload Vulnerabilities
    • LFI (Local File Inclusion)
    • RFI (Remote File Inclusion)
    • XSS (Cross-Site Scripting)
    • XXE (XML External Entity)
    • Template Injections
    • Clickjacking
    • Broken Access Control
    • SQL Injection (Inyección SQL)
    • NoSQL Injection (Inyección NoSQL)
    • LDAP Injection (Inyección LDAP)
    • Log Poisoning
    • Open Redirect Bypass
Con tecnología de GitBook
En esta página

¿Te fue útil?

  1. Vulnerabilidades Web

XSS (Cross-Site Scripting)

🌐 Vulnerabilidad: Cross-Site Scripting (XSS)


🕵️‍♂️ ¿Qué es XSS?

La vulnerabilidad Cross-Site Scripting (XSS) ocurre cuando una aplicación permite inyectar scripts maliciosos (generalmente JavaScript) en el navegador de otros usuarios. Esto permite a un atacante manipular la interacción del usuario con la aplicación, robar información confidencial o ejecutar acciones no autorizadas.


⚙️ ¿Cómo se produce?

El problema surge por una sanitización inadecuada de las entradas de usuario, permitiendo que código malicioso sea procesado y devuelto al navegador del usuario como parte del contenido legítimo.

Existen tres tipos principales de XSS:

  1. XSS Reflejado: El script malicioso se inyecta a través de una solicitud (como un parámetro en la URL).

  2. XSS Persistente: El script malicioso se almacena en el servidor y afecta a múltiples usuarios.

  3. XSS Basado en DOM: El script se ejecuta manipulando el DOM del lado del cliente.


🛠️ Mecanismo de ataque

  1. XSS Reflejado: El atacante envía una URL maliciosa que ejecuta un script:

    http://victim.com/search?q=<script>alert('Hacked!');</script>

    Si la aplicación no valida la entrada, el script será ejecutado en el navegador de la víctima.

  2. XSS Persistente: El atacante inserta un script en un campo que se almacena en la base de datos (por ejemplo, comentarios).

    <script>document.cookie = 'XSS=' + document.cookie;</script>
  3. XSS DOM: La vulnerabilidad está en el lado del cliente, manipulando el DOM dinámicamente:

    var userInput = location.hash.substring(1); 
    document.body.innerHTML = userInput; // Sin sanitización

🎯 Impacto

  • Robo de datos confidenciales: Cookies de sesión, tokens CSRF, credenciales.

  • Falsificación de acciones: Forzar a los usuarios a realizar acciones no deseadas.

  • Propagación de malware: Inyectar scripts que instalan software malicioso.

  • Desfiguración de páginas: Manipulación de contenido visible por otros usuarios.


📉 Puntaje CVSS v3

  • Vector de ataque: Red (Explota mediante un navegador web)

  • Complejidad del ataque: Baja (requiere que la víctima visite un enlace o interactúe con contenido)

  • Impacto en la confidencialidad: Alto

  • Impacto en la integridad: Alto

  • Impacto en la disponibilidad: Bajo

  • Puntaje CVSS v3: 6.1 a 8.8 (Según el tipo) ⚠️


🧑‍💻 Ejemplo práctico

Código vulnerable (XSS Reflejado):

<?php
    $search = $_GET['q'];
    echo "Resultados para: " . $search; // ¡Sin sanitización!
?>

Ataque:

http://victim.com/search?q=<script>alert('Hacked!');</script>

📌 Esto ejecutará el alert en el navegador del usuario.


🛡️ ¿Cómo prevenir XSS?

1️⃣ Escapar el contenido antes de mostrarlo

Siempre escapa las entradas del usuario al renderizarlas:

<?php
    $search = htmlspecialchars($_GET['q'], ENT_QUOTES, 'UTF-8');
    echo "Resultados para: " . $search;
?>

2️⃣ Validación de entradas

Acepta solo entradas que cumplan con un formato esperado (por ejemplo, solo texto o números):

if (preg_match('/^[a-zA-Z0-9\s]+$/', $input)) {
    echo $input;
} else {
    echo "Entrada inválida.";
}

3️⃣ Uso de Content Security Policy (CSP)

Configura un CSP para limitar los scripts que pueden ejecutarse:

Content-Security-Policy: default-src 'self'; script-src 'self';

4️⃣ Evitar eval y métodos peligrosos

No uses funciones que ejecuten código directamente desde entradas de usuario.

5️⃣ Uso de frameworks seguros

Frameworks como AngularJS y React previenen XSS automáticamente al escapar las variables que se muestran en el DOM.


💡 Dato extra: El XSS es una de las vulnerabilidades más comunes del OWASP Top 10, pero es fácilmente prevenible si se siguen buenas prácticas. 🚀

AnteriorRFI (Remote File Inclusion)SiguienteXXE (XML External Entity)

Última actualización hace 6 meses

¿Te fue útil?