
PoC pour CVE-2022-48429 - XSS stocké dans Youtrack
La description rapportée du CVE sur la base NVD manque de précision. Voici une description plus précise :
Youtrack (version <= 2022.3.65373) présente un Cross-Site Scripting (XSS) stocké dans les tableaux de bord. Un utilisateur malveillant à faibles privilèges peut créer et partager un tableau de bord malformé en l'envoyant à d'autres utilisateurs (par exemple des administrateurs). Cela peut conduire à la prise de contrôle d'un compte administrateur.
Auteur original : echo-devim
Lors de mes recherches sur les problèmes de sécurité dans Youtrack version 2022.3.65373, j'ai trouvé un XSS dans les tableaux de bord.
Un utilisateur non privilégié peut créer un nouveau tableau de bord avec un widget malveillant contenant du Javascript injecté. Le tableau de bord peut être partagé avec d'autres utilisateurs, comme les administrateurs, en leur envoyant le code malveillant.
Ce XSS peut cibler uniquement les utilisateurs spécifiés et il est très facile de tromper la victime pour qu'elle ouvre le tableau de bord malveillant. En effet, le nouveau tableau de bord sera notifié sur la page d'accueil de la victime. J'ai remarqué que la vulnérabilité est présente depuis la version 2021.4.38425, mais elle pourrait être plus ancienne.
Le paramètre vulnérable est "directive" lorsque l'utilisateur ajoute un nouveau widget.
Exemple de requête malveillante pour injecter le 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"}}}}]}
Ensuite, en rafraîchissant la page, nous obtenons le XSS :

Ce XSS peut permettre à un utilisateur à faibles privilèges de réaliser du hameçonnage via de faux formulaires de connexion, de rediriger le navigateur de l'utilisateur voire même d'effectuer des opérations d'administration.
Pire encore, si la plateforme a l'inscription d'utilisateurs activée, cela peut permettre à un attaquant externe de s'inscrire comme nouvel utilisateur et d'effectuer l'attaque.
Comme preuve de concept, j'ai utilisé un utilisateur de test à faibles privilèges pour modifier le nom complet du compte administrateur.
Code du PoC :
Ce GIF animé montre les effets. La fenêtre de gauche est la page relative à l'utilisateur non privilégié et la fenêtre de droite est celle de l'administrateur.
