Hice una pregunta en este mismo sitio: No se puede entender por qué la aplicación web es vulnerable a un ataque transversal de directorio , donde me dieron un informe que indica que mi aplicación web era vulnerable.
Publiqué algunas muestras del informe, como Testing Path: http://127.0.0.1:80/??/etc/issue <- VULNERABLE!
, ahora me preguntaron cuáles son esos dos /??
en la url publicada.
Hice algunas pruebas:
http://127.0.0.1:80/??/etc/issue
devuelve la página de inicio.
http://127.0.0.1:80/.?/etc/issue
devuelve la página de inicio.
http://127.0.0.1:80/?./etc/issue
devuelve la página de inicio.
Por lo tanto, el patrón siguiente devuelve la página de inicio:
http://127.0.0.1:80/Position1Position2Anything/Anythingcouldbehere
, donde
Si Position1
= ?
, la página de inicio se devuelve independientemente del contenido en Position2
.
Si Position1
= .
entonces Position2
debe ser ?
, para la página de inicio.
Anything
también podría ser una cadena vacía.
Ahora, cualquier cosa que no coincida con el patrón anterior devuelve 400/404.
Y, ejecuté la prueba anterior para security.stackexchange.com/
y también devolvió el mismo resultado (siguió el mismo patrón de .
y ?
) y devolvió su página de inicio en el navegador.
Por favor, explica el rol de ?
y .
en las urls.
EDITAR:
Es solo este patrón (el de arriba, con ?
y .
) lo que hace que la aplicación web sea Vulnerable al ataque de Directory Traversal según el informe enviado por pen-testers.