
Exploit de prueba de concepto para CVE-2022-48429, una vulnerabilidad de cross-site scripting almacenado en los paneles de JetBrains YouTrack que permite a un usuario de bajo privilegio tomar el control de administrador mediante la inyección de widgets maliciosos.
La descripción reportada del CVE en la base de datos NVD carece de precisión. Esta es una descripción más exacta:
Youtrack (versión <= 2022.3.65373) tiene una vulnerabilidad de Cross-Site Scripting (XSS) almacenado en los paneles de control. Un usuario malicioso con pocos privilegios puede crear y compartir un panel malformado enviándolo a otros usuarios (por ejemplo, administradores). Esto puede llevar a la toma de control de la cuenta del administrador.
Autor original: echo-devim
Mientras investigaba problemas de seguridad en Youtrack versión 2022.3.65373 encontré un XSS en los paneles de control.
Un usuario sin privilegios puede crear un nuevo panel con un widget malicioso que contiene Javascript inyectado. El panel se puede compartir con otros usuarios, como administradores, enviándoles el código malicioso.
Este XSS puede apuntar solo a los usuarios especificados y es muy fácil engañar a la víctima para que abra el panel malicioso. De hecho, el nuevo panel se notificará en la página de inicio de la víctima. Noté que la vulnerabilidad está presente desde la versión 2021.4.38425, pero podría ser anterior.
El parámetro vulnerable es "directive" cuando el usuario agrega un nuevo widget.
Ejemplo de solicitud maliciosa para inyectar el XSS:
POST /hub/api/rest/dashboards/39ecb0a3-4bb5-45de-9616-9945fd284886 HTTP/1.1
Host: localhost:8081
User-Agent: Mozilla/5.0 (X11; Windows x86_64; rv:105.0) Gecko/20100101 Firefox/105.0
Content-Type: application/json;charset=utf-8
Content-Length: 1214
{"type":"DashboardJSON","id":"39ecb0a3-4bb5-45de-9616-9945fd284886","name":"testxss","owner":{"type":"user","id":"58a24bf5-53ad-4966-9b5d-63cb8dbfef0a","login":"test"},"data":{"widgets":[{"id":"youtrack-activities-widget","directive":"","grid":{"width":2,"height":2,"y":0,"x":0},"config":{"created":"2023-03-17T10:04:50.590Z","customWidgetConfig":{"filter":{"title":null,"query":"by: me","author":null,"categoriesIds":["IssueCreatedCategory","ProjectCategory","SummaryCategory","DescriptionCategory","CustomFieldCategory","AttachmentsCategory","LinksCategory","CommentsCategory"],"youTrack":{"id":"731f4f21-b0f9-42bd-9509-127b2d0585e1","homeUrl":"/"},"refreshPeriod":240}}}}]},"permission":"OWNER","access":"OWNER","favorite":true,"ordinal":0,"permissions":[{"type":"UserDashboardPermissionJSON","id":"42e794d7-0009-4b00-83f4-45991a0392f0","permission":"VIEW","user":{"type":"user","id":"fcbf85ca-4ea9-4b2e-b750-59b08df9c24a"},"personality":{"type":"user","id":"fcbf85ca-4ea9-4b2e-b750-59b08df9c24a","name":"admin","login":"admin","profile":{"avatar":{"type":"defaultavatar","url":"http://localhost:8081/hub/api/rest/avatar/fcbf85ca-4ea9-4b2e-b750-59b08df9c24a"}}}}]}
Luego, al refrescar la página se ejecutará el XSS:

Este XSS puede permitir a un usuario con pocos privilegios realizar phishing a través de formularios de inicio de sesión falsos, redirigir el navegador del usuario o incluso realizar operaciones de administrador.
Aún peor si la plataforma tiene el registro de usuarios habilitado, esto puede permitir que un atacante externo registre un nuevo usuario y realice el ataque.
Como PoC utilicé un usuario de prueba con pocos privilegios para cambiar el nombre completo de la cuenta del administrador.
Código del PoC:
Este gif animado muestra los efectos. La ventana izquierda es la página relacionada con el usuario sin privilegios y la ventana derecha es la del administrador.
