Directory Traversal: ¿Qué efecto tiene esto '?' y '.' tener en la url?

6

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.

    
pregunta Batman 08.09.2016 - 15:00
fuente

1 respuesta

3

En la URL de HTTP, todo después del símbolo ? es parte de datos GET request .

  • Entonces, en http://127.0.0.1:80/??/etc/issue y http://127.0.0.1:80/.?/etc/issue la parte ?/etc/issue es esencialmente un dato en la solicitud GET a la URL http://127.0.0.1:80/ .

Tenga en cuenta que ?/etc/issue no es una ruta de archivo válida.

  • En http://127.0.0.1:80/?./etc/issue , la parte ./etc/issue son esencialmente los datos en la solicitud GET a la URL http://127.0.0.1:80/ .

Tenga en cuenta que ./etc/issue es una ruta válida. (puede ser ./etc/passwd es mejor)

En el último caso, dado que el escáner obtuvo un (HTTP/1.1 200) , asumió que había leído el archivo en el servidor y lo había marcado como vulnerable.

El escáner está esperando algo como HTTP/1.1 404 (No encontrado) o HTTP/1.1 302 (redirección de URL) para que esa página no sea vulnerable.

    
respondido por el Sravan 08.09.2016 - 19:01
fuente

Lea otras preguntas en las etiquetas