😎
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 Path Traversal?
  • Funcionamiento del Path Traversal
  • Pasos del ataque:
  • Ejemplo de Path Traversal
  • Lectura de Archivos Arbitrarios mediante Path Traversal
  • Ejemplos de archivos críticos que podrían ser leídos:
  • Mitigación del Path Traversal
  • Ejemplo de Mitigación en PHP
  • Conclusión

¿Te fue útil?

  1. Path traversal

¿Path Traversal?

¿Qué es el Path Traversal?

El Path Traversal, también conocido como Directory Traversal, es una vulnerabilidad de seguridad que permite a un atacante acceder a archivos y directorios que están fuera del directorio raíz de la aplicación web. Esta vulnerabilidad ocurre cuando la aplicación no valida o sanitiza correctamente las entradas del usuario, permitiendo que el atacante manipule las rutas de archivo para acceder a ubicaciones restringidas del sistema de archivos del servidor.

Funcionamiento del Path Traversal

El ataque de Path Traversal se basa en la manipulación de las rutas de archivo usando secuencias como ../ para retroceder en la estructura de directorios. Por ejemplo, si una aplicación permite a los usuarios acceder a archivos a través de una URL como http://example.com/view?file=report.txt, un atacante puede intentar acceder a otros archivos del sistema proporcionando rutas maliciosas como ../../etc/passwd.

Pasos del ataque:

  1. Identificación de una entrada vulnerable: El atacante encuentra un campo de entrada (por ejemplo, un parámetro en la URL) que se utiliza para especificar rutas de archivo.

  2. Manipulación de la ruta: El atacante modifica el valor del campo de entrada para incluir secuencias de Path Traversal como ../.

  3. Acceso a archivos arbitrarios: El servidor interpreta la ruta manipulada y permite al atacante acceder a archivos fuera del directorio permitido.

Ejemplo de Path Traversal

Considere una aplicación web con el siguiente código en PHP que lee el contenido de un archivo:

<?php
$file = $_GET['file'];
include("/var/www/html/" . $file);
?>

Un atacante podría explotar esta vulnerabilidad proporcionando la siguiente URL:

http://example.com/view?file=../../../../etc/passwd

En este ejemplo, el servidor interpretará la ruta como /var/www/html/../../../../etc/passwd, lo que resultará en la lectura del archivo /etc/passwd, que contiene información sensible del sistema.

Lectura de Archivos Arbitrarios mediante Path Traversal

El acceso a archivos arbitrarios a través de Path Traversal permite a un atacante leer archivos sensibles del sistema, como archivos de configuración, archivos de contraseñas, y otros datos críticos. Esto puede tener graves implicaciones de seguridad, incluyendo la exposición de credenciales, configuraciones del sistema, y otra información confidencial.

Ejemplos de archivos críticos que podrían ser leídos:

  • /etc/passwd: Contiene información de usuarios en sistemas Unix/Linux.

  • /etc/shadow: Contiene hashes de contraseñas en sistemas Unix/Linux.

  • C:\Windows\system32\config\SAM: Contiene información de cuentas de usuario en sistemas Windows.

  • Archivos de configuración de la aplicación (config.php, .env, etc.).

Mitigación del Path Traversal

Para proteger las aplicaciones contra ataques de Path Traversal, se deben implementar varias estrategias de mitigación:

  1. Validación y Sanitización de Entradas: Validar y sanitizar todas las entradas del usuario para asegurarse de que solo se aceptan rutas permitidas. Por ejemplo, se puede verificar que la ruta solicitada no contenga secuencias como ../.

  2. Uso de Rutas Absolutas y Permitidas: Limitar el acceso a una lista específica de rutas permitidas. En lugar de permitir rutas arbitrarias proporcionadas por el usuario, se debe trabajar con rutas absolutas que estén controladas y verificadas por el servidor.

  3. Configuración de Permisos Adecuados: Configurar el sistema de archivos del servidor de manera que los archivos sensibles no sean accesibles a través del servidor web. Esto incluye ajustar los permisos de archivos y directorios para limitar el acceso.

  4. Uso de Funciones Seguras: Utilizar funciones seguras y bibliotecas que proporcionen protección contra Path Traversal. Por ejemplo, en PHP, se puede usar realpath() para resolver y validar rutas de archivos.

Ejemplo de Mitigación en PHP

Un ejemplo de cómo mitigar Path Traversal en PHP utilizando realpath():

<?php
$base_dir = "/var/www/html/";
$file = $_GET['file'];
$requested_path = realpath($base_dir . $file);

if (strpos($requested_path, $base_dir) !== 0 || !$requested_path) {
    die("Acceso denegado.");
}

include($requested_path);
?>

En este ejemplo, realpath() resuelve la ruta completa del archivo solicitado y se verifica que la ruta resultante esté dentro del directorio base permitido.

Conclusión

El Path Traversal es una vulnerabilidad crítica que puede permitir a un atacante acceder a archivos y datos sensibles en el servidor. Implementar una adecuada validación y sanitización de entradas, así como el uso de funciones seguras y la configuración correcta de permisos, es esencial para proteger las aplicaciones contra este tipo de ataques. La comprensión y la mitigación de Path Traversal son fundamentales para asegurar la integridad y la confidencialidad de los datos en una aplicación web.

AnteriorLab 3: User role controlled by request parameterSiguienteLab 1: File path traversal, simple case

Última actualización hace 11 meses

¿Te fue útil?