# Path Traversal

Una vulnerabilidad path traversal puede permitir a los atacantes acceder a archivos y directorios almacenados fuera de la carpeta raíz web.

Es posible explotar las vulnerabilidades de cruce de rutas manipulando variables que hacen referencia a archivos con la secuencia punto-punto-barra ( **../** ) y sus variaciones o utilizando rutas absolutas de archivos para acceder a archivos en el sistema vulnerable. Un atacante puede obtener información crítica y confidencial al explotar las vulnerabilidades de cruce de directorios.

La muestra la siguiente URL en uso:

```
http://192.168.78.8:66/vulnerabilities/fi/?page=../../../../../etc/passwd
```

La aplicación vulnerable muestra el contenido del archivo **/etc/passwd** al atacante.

Es posible utilizar la codificación de URL, como se demuestra en el siguiente ejemplo, para explotar las vulnerabilidades de recorrido del directorio (ruta):

```
 %2e%2e%2f = ../
%2e%2e/ = ../
..%2f = ../
%2e%2e%5c = ..\
%2e%2e\ = ..\
..%5c = ..\
%252e%252e%255c = ..\
..%255c = ..\ 
```

Un atacante también puede utilizar otras combinaciones de codificación, por ejemplo, estructuras de ruta específicas del sistema operativo como **/** en sistemas Linux o macOS y **\\** en Windows.

Tambien se pueden realizar otro tipos de pruebas con '.../...//'  un sitio web tal vez no puede neutralizar adecuadamente '.../...//'  que pueden resolverse en una ubicación que está fuera de ese directorio.

Esto permite a los atacantes atravesar el sistema de archivos para acceder a archivos o directorios que están fuera del directorio restringido.

El '.../...//' La manipulación es útil para eludir algunos esquemas de protección de recorrido de ruta. Si "../" se filtra de forma secuencial, como lo hacen algunos motores de expresiones regulares, luego ".../...//" puede colapsar en el directorio "../" valor no seguro . Eliminando el primer "../" produce "....//"; la segunda eliminación produce "../".

## Relative Path Traversal

El producto utiliza entradas externas para construir un nombre de ruta que debería estar dentro de un directorio restringido, pero no neutraliza adecuadamente secuencias como ".." que puede resolverse en una ubicación que está fuera de ese directorio.Esto permite a los atacantes atravesar el sistema de archivos para acceder a archivos o directorios que están fuera del directorio restringido.

## Cada sistema operativo utiliza caracteres diferentes como separador de ruta:

**Sistema operativo tipo Unix:**

* directorio raíz:`/`
* separador de directorios:`/`

**Sistema operativo Windows:**

* directorio raíz:`<drive letter>:`
* separador de directorio: `\` o `/`

**MacOS clásicos:**

* directorio raíz:`<drive letter>:`
* separador de directorios:`:`

##

{% embed url="<https://cwe.mitre.org/data/definitions/59.html>" %}

#### Practicar:

{% embed url="<https://portswigger.net/web-security/file-path-traversal>" %}

{% embed url="<https://portswigger.net/web-security/file-path-traversal>" %}

<mark style="color:red;">**Recursos**</mark>

{% embed url="<https://cwe.mitre.org/data/definitions/22.html>" %}

{% embed url="<https://cwe.mitre.org/data/definitions/23.html>" %}

{% embed url="<https://cwe.mitre.org/data/definitions/35.html>" %}

{% embed url="<https://www.akimbocore.com/article/linux-path-traversal-cheat-sheet/>" %}

{% embed url="<https://owasp.org/www-community/attacks/Path_Traversal>" %}

{% embed url="<https://swisskyrepo.github.io/PayloadsAllTheThingsWeb/Directory%20Traversal/>" %}

{% embed url="<https://book.hacktricks.xyz/pentesting-web/file-inclusion>" %}

{% embed url="<https://portswigger.net/web-security/file-path-traversal>" %}
