джихад в трубе

джихад в трубе

zer0way

Intro

Практически все мы сталкивались с сервисами туннелирования трафика, ngrok cloudlfared localtonet gsocket и т.п. Кто то их использует для проброса своих ресурсов мимо служб ИБ, кто то просто разработчик и ему удобно через них работать, а кто то ломает чужие сети и использует эти утилиты для закрепления.

Задумывался ли кто нибудь о безопасности сервисов туннелирования?(нет, даже их владельцы не думают о безопасности)

Используя данные сервисы люди дают неизвестному приложению доступ к своему устройству и корпоративной сети. Поговорим сегодня о сервисе localtonet. Я несколько раз пытался наладить контакт с службой поддержки сервиса, но они в глубочайшем обмороке.

localtonet умеет: организовывать туннели через tcp/udp/http, http/socks прокси, file server.

Я начну рассказывать об уязвимостях сервиса, каждая из них не очень то и интересна, но в конце мы соединим все три вулны и придем к rce у клиентов ))

vuln 1.

Управление чужим туннелем при наличии токена.

Токен приложения представляет из себя строку длинной более 30 рандомных символов. Для создания туннеля отправляется post запрос с выбранным токеном и настройками. Если в сервисе отправить чужой токен (его где то нужно взять) то туннель будет создан и им можно будет управлять.

создаем fileserver с чужим токеном
создаем прокси сервер из устройства с чужим токеном
видим у себя в панели созданный туннель с чужим токеном

vuln 2.

Классический idor (Небезопасная прямая ссылка на объект), две штуки. IDOR позволяет, перебирая Id туннеля или токена, менять его отображаемое имя. Перебирая значение параметра userRelayId (см скриншот), мы меняем значение title у чужих туннелей.

ставим свой title на чужой туннель

vuln 3.

При исследовании уязвимости под номером два, выяснилось, что приклад не фильтрует входящие данные и спокойно пропускает html тэги.

Значение title живет вот в такой конструкции

<a href="javascript:;" onclick="editCustomName(111111, 'TITLE')">TITLE <i class="fas fa-edit"></i></a>

Вставив заветный alert('1'); было получено ожидаемое сообщение. Но при добавлении полезной нагрузки возникла проблема:

значение переменной не принимало строку длиннее 30 символов. Используя сервис сокращения url, линк на js нагруз был сокращен и вставлен в конструкции:

принятая конструкция

javascript прекрасно выполнялся, была найдена хранимая XSS.

COMBO

Ну вот и подошли к финальной стадии, где я взял уязвимость два и три, прогнал по id вставив код своего нагруза и получил содержимое чужих страниц управления токенами доступа и туннелями. Используя которые, можно управлять чужими туннелями и получить доступ к чужим устройствам, т.е. банальное rce на устройствах.

fileserver через токен полученный из xss
доступ к рутовому .ssh на чужом устройстве


Доступ к файловой системе чужого устройства


Итоги

Не используйте сервисы туннелирования, блокируйте им доступ на уровне сети. Это не первый и не единственный подобный дырявый сервис. Служба поддержки до сих пор в коме, отвечать не отвечают, но после алларма от клиентов уязвимости исправляют.

Помимо токенов, были получены ip адреса и почты, особо ценная информация в связке с токенами =) Никто не пострадал, злого умысла не имел.













Report Page