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.