
Техническое раскрытие CVE-2018-16987: хранение паролей внешних сервисов в открытом виде в панели администрирования Squash TM, с оценкой CVSS 4.1 и деталями эксплуатации.
Это уязвимость хранения конфиденциальной информации в открытом виде и раскрытия конфиденциальной информации, которую я обнаружил в Squash TM во время пентеста.
Squash TM — это веб-интерфейс для управления тестовыми сценариями. Ссылка на проект
Squash TM, по крайней мере до версии 1.18.0, отображает пароли внешних сервисов в открытом виде в панели администрирования, что демонстрируется полем ta-server-password в исходном HTML-коде.
В панели администрирования SquashTM страница внешних сервисов (также известных как серверы автоматизации) содержит пароль учётной записи сервиса в открытом виде. Этими внешними сервисами может быть что угодно, но популярным примером является сервер Jenkins.
Вот пример URL: http://localhost:8080/squash/administration/test-automation-servers/1
Вот выдержка из исходного кода страницы:
<label for="ta-server-password">Password</label>
<div id="ta-server-password" class="display-table-cell" style="font-weight: bold;">cleartext_password</div>
Это также означает, что пароли внешних сервисов хранятся в открытом виде, что я подтвердил, выполнив grep по базе данных (H2 и PostgreSQL).
Кроме того, эта уязвимость усугубляется тем, что настройки по умолчанию приложения:
Рекомендуемая оценка: 4.1 (CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:N/A:N)
Просто к сведению для будущих исследователей: пароли реальных пользователей хранятся в виде SHA1. Не идеально.
Я кратко проверил кодовую базу, похоже, что все SQL-запросы корректно построены (подготовленные выражения).
Есть некоторые десериализации (генерация отчётов и функция поиска) из нефильтрованного пользовательского ввода (параметры GET) с использованием уязвимой версии компонента Jackson, но они не кажутся эксплуатируемыми, поскольку нет обработки полиморфных типов.