Сегодня мы выпускаем новый инструмент под названием SharpConflux — приложение .NET, созданное для облегчения исследования Confluence. Это позволяет операторам Red Team легко исследовать экземпляры Confluence с целью поиска учетных данных и документации, относящейся к целям, без необходимости полагаться на проксирование SOCKS.
SharpConflux доступен для загрузки из репозитория GitHub ниже:
GitHub: https://github.com/nettitude/SharpConflux/
Для этой цели существует множество инструментов, таких как SharpSocks и встроенная команда Socks Cobalt Strike . Однако этот подход создает две проблемы:
Контент организован в пространствах, которые предназначены для облегчения обмена информацией между командами (например, ИТ-отделом) или сотрудниками, ответственными за конкретные проекты. Кроме того, пользователи могут создавать свои собственные личные пространства, куда они могут загружать общедоступные или частные данные.
В этих пространствах пользователи могут публиковать и редактировать веб-страницы и сообщения в блогах с помощью веб- редактора , а также прикреплять к ним любые соответствующие файлы. Кроме того, пользователи могут добавлять комментарии к страницам и сообщениям в блогах.
Диаграмма ниже, взятая со страницы поддержки Confluence, лучше иллюстрирует структуру, используемую платформой:
С точки зрения Red Teamer, Confluence особенно полезен в двух сценариях:
Некоторые атрибуты и конечные точки API немного различаются между экземплярами облака и сервера/центра обработки данных. Что еще более важно, методы аутентификации существенно отличаются. SharpConflux был разработан с учетом совместимости и поддерживает различные методы аутентификации для разных типов экземпляров.
Ниже описаны наиболее подходящие методы аутентификации.
Confluence Cloud: адрес электронной почты + аутентификация по паролю
Пользователи могут проходить аутентификацию в экземплярах Confluence Cloud, используя комбинацию адреса электронной почты и пароля. При просмотре https://companysubdomain.atlassian.net/wiki/ неаутентифицированные пользователи перенаправляются на https://id.atlassian.com/login , где публикуются следующие данные формы:
{
"имя пользователя" : "EMAILVALUE" ,
"пароль" : "ЗНАЧЕНИЕ ПАРОЛЬ" ,
"состояние" :
{
"csrfToken" : "CSRFTOKENVALUE" ,
"anonymousId" : "ANONYMOUSIDVALUE"
} ,
"токен" : "ЗНАЧЕНИЕ ТОКЕНА"
}
Если предоставленные учетные данные в параметрах usernameи passwordв дополнение к параметрам csrfTokenи токену верны, сервер вернет URI перенаправления. Последующий доступ к этому URI приведет к тому, что сервер установит cloud.session.tokenфайл cookie сеанса.
Этот метод аутентификации не поддерживается SharpConflux. С точки зрения состязательности, компании очень редко полагаются на этот механизм аутентификации, поскольку большинство из них будут использовать аутентификацию SAML SSO для экземпляров Cloud.
Облако Confluence: адрес электронной почты + токен API
Пользователи могут создавать свои собственные токены API и управлять ими, посетив https://id.atlassian.com/manage-profile/security/api-tokens :
Для аутентификации адрес электронной почты пользователя и токен API передаются через Authentication: Basicзаголовок в каждом HTTP-запросе.
Этот метод аутентификации поддерживается SharpConflux. Однако сбор действительных токенов API происходит редко.
Confluence Cloud: сторонний вход и единый вход SAML
Confluence Cloud позволяет пользователям входить в систему с помощью учетных записей третьих сторон (например, Apple, Google, Microsoft, Slack). Обычно компании настраивают экземпляры Confluence Cloud для аутентификации через службы федерации Active Directory (ADFS) или Azure AD.
После завершения обмена SAML сервер вернет URI перенаправления на https://id.atlassian.com/login/authorize . Последующий доступ к этому URI приведет к тому, что сервер установит cloud.session.tokenфайл cookie сеанса.
На момент выпуска этот метод аутентификации не поддерживается SharpConflux. Хотя это наиболее часто используемый метод аутентификации организациями, использующими Confluence Cloud, они также часто применяют многофакторную аутентификацию (MFA), что делает аутентификацию на основе файлов cookie гораздо более интересным методом с точки зрения состязательности.
Confluence Cloud: аутентификация на основе файлов cookie
Если вам удалось сбросить файлы cookie Confluence Cloud (например, через DPAPI ), вы можете использовать SharpConflux для аутентификации на целевом экземпляре. Обратите внимание, что включения одного действительного cloud.session.tokenфайла tenant.session.tokencookie должно быть достаточно для аутентификации, но вы можете указать любое количество файлов cookie, если хотите.
Сервер Confluence/Центр обработки данных: имя пользователя + пароль (базовая аутентификация)
По умолчанию установки Confluence Server/Data Center поддерживают аутентификацию по имени пользователя и паролю через Authorization: Basicзаголовок HTTP-запроса. Однако базовая аутентификация может быть отключена целевой организацией с помощью параметра «Разрешить базовую аутентификацию при вызовах API»:
Этот метод аутентификации поддерживается SharpConflux. С точки зрения состязательности, поиск комбинации имени пользователя и пароля для локального экземпляра Confluence является одним из наиболее распространенных сценариев.
Сервер Confluence/Центр обработки данных: имя пользователя + пароль (через данные формы)
Пользователи могут посетить локальный веб-сайт Confluence (например, http://myconfluence.internal.local:8090 ) и войти в систему, используя действующую комбинацию имени пользователя и пароля. В результате будет отправлен следующий HTTP POST-запрос:
ПОСТ/дологин. действие HTTP/ 1 . 1
[ ... ]
os_username=USERNAMEVALUE&os_password=PASSWORDVALUE&login=Войти+ в &os_destination=%2Findex. действие
Если предоставленные учетные данные в параметрах os_usernameи os_passwordверны, сервер установит файл JSESSIONIDcookie сеанса.
Этот метод аутентификации поддерживается SharpConflux. Как и в предыдущем методе, поиск комбинации имени пользователя и пароля является одним из наиболее распространенных сценариев. Обратите внимание, что этот метод аутентификации по-прежнему будет работать, даже если параметр «Разрешить базовую аутентификацию при вызовах API» отключен.
Сервер Confluence/центр обработки данных: токен личного доступа (PAT)
В установках Confluence Server/Data Center пользователям разрешено создавать и управлять своими собственными токенами личного доступа (PAT), которые будут соответствовать их текущему уровню разрешений. PAT могут быть созданы из /plugins/personalaccesstokens/usertokens.action:
Для аутентификации PAT передается через Authentication: Bearerзаголовок в каждом HTTP-запросе.
Хотя этот метод аутентификации поддерживается SharpConflux, он был добавлен только для полноты и поддержки крайних случаев, поскольку я никогда не сталкивался с PAT.
Сервер Confluence/центр обработки данных: единый вход
Подобно экземплярам Confluence Cloud, варианты Confluence Server/Data Center поддерживают аутентификацию через различных поставщиков удостоверений (IdP), включая ADFS, Azure AD, Bitium, Okta, OneLogin и PingIdentity. Однако в этом случае редко можно встретить локальные экземпляры Confluence, использующие единый вход. По этой причине этот метод аутентификации не поддерживается SharpConflux на момент выпуска.
Сервер Confluence/Центр обработки данных: аутентификация на основе файлов cookie
Если вам удалось сбросить файлы cookie сервера / центра обработки данных Confluence (например, через DPAPI), вы можете использовать SharpConflux для аутентификации на целевом экземпляре. Обратите внимание, что включения одного действительного JSESSIONIDфайла seraph.confluencecookie должно быть достаточно для аутентификации, но вы можете указать любое количество файлов cookie, если хотите.
SharpConflux был протестирован на последних поддерживаемых версиях на момент разработки (Cloud 8.3.2, Data Center 7.19.10 LTS и Data Center 8.3.2). Полный список функций, рекомендации по использованию и примеры можно найти в указанном проекте GitHub.
GitHub: https://github.com/nettitude/SharpConflux/
SharpConflux доступен для загрузки из репозитория GitHub ниже:
Фон
Операторы Red Team обычно взаимодействуют с сетью целевой организации через имплант в памяти, поддерживаемый структурой управления и контроля (C2), такой как Cobalt Strike от Fortra , Nighthawk от MDSec или PoshC2 от Nettitude . Прямой доступ к корпоративной сети через виртуальную частную сеть (VPN) или графический доступ к хосту инфраструктуры виртуальных рабочих столов (VDI) является необычным, а это означает, что для взаимодействия с внутренними корпоративными веб-сайтами операторы должны туннелировать трафик из своих систем во внутренние. сети через имплант в памяти.Для этой цели существует множество инструментов, таких как SharpSocks и встроенная команда Socks Cobalt Strike . Однако этот подход создает две проблемы:
- Во-первых, его сложно настроить. Хотя опытный оператор сможет сделать это за считанные минуты, я еще не знаю участника Red Team, которому нравится процесс настройки и медленный просмотр. Фактически, этот инструмент был создан в результате недавнего учения Red Team, в ходе которого ни один из операторов не захотел настраивать прокси для исследования внутреннего экземпляра Confluence.
- Во-вторых, чтобы обеспечить стабильную и удобную работу, операторы вынуждены устанавливать время сигнала имплантата на небольшое значение (почти всегда менее 100 миллисекунд, а часто и 0 миллисекунд). Это значительно увеличивает количество HTTP-запросов, передаваемых по существующему каналу C2, создавая аномальные объемы трафика и, следовательно, предоставляя возможности обнаружения. Кроме того, это препятствует правильному функционированию некоторых методов уклонения в памяти (например, масок сна Cobalt Strike), что потенциально может привести к обнаружению с помощью уже установленного решения Endpoint Detection & Response (EDR).
Введение в слияние
Confluence — это платформа обмена данными, разработанная Atlassian и обычно используемая организациями в качестве корпоративной вики.Контент организован в пространствах, которые предназначены для облегчения обмена информацией между командами (например, ИТ-отделом) или сотрудниками, ответственными за конкретные проекты. Кроме того, пользователи могут создавать свои собственные личные пространства, куда они могут загружать общедоступные или частные данные.
В этих пространствах пользователи могут публиковать и редактировать веб-страницы и сообщения в блогах с помощью веб- редактора , а также прикреплять к ним любые соответствующие файлы. Кроме того, пользователи могут добавлять комментарии к страницам и сообщениям в блогах.
Диаграмма ниже, взятая со страницы поддержки Confluence, лучше иллюстрирует структуру, используемую платформой:
С точки зрения Red Teamer, Confluence особенно полезен в двух сценариях:
- На ранних этапах работы в Confluence обычно можно найти всевозможные учетные данные. Это может способствовать повышению привилегий и горизонтальному перемещению.
- Чтобы обнаружить документацию, имена хостов и даже учетные данные, относящиеся к целевым системам, которые обычно подвергаются атаке после достижения высокого уровня привилегий и, следовательно, на поздних стадиях цепочки кибер-убийств.
Типы экземпляров Confluence и аутентификация
Atlassian предлагает три варианта хостинга Confluence, соответствующие требованиям различных организаций:- Экземпляры Confluence Cloud обслуживаются Atlassian и размещаются в собственных арендаторах AWS. Это предпочтительный вариант для новых клиентов Atlassian. Доступ к экземплярам Confluence Cloud осуществляется как поддомен atlassian.net . Например, https://companysubdomain.atlassian.net/wiki/ .
- Экземпляры Confluence Server и Confluence Data Center обслуживаются соответствующей организацией и, следовательно, размещаются на ее серверах. Это может быть полностью локально или в любом облачном клиенте, управляемом организацией (например, Azure, AWS, GCP). Оба типа экземпляров похожи, но Data Center включает в себя дополнительные функции . Следует отметить, что Atlassian приняла решение прекратить поддержку Confluence Server, и поддержка закончилась в феврале 2024 года. Однако у компании все еще есть планы по поддержке Confluence Data Center в обозримом будущем. Эти типы экземпляров по умолчанию работают через TCP-порт 8090, и обычно к ним можно получить доступ через внутреннее полное доменное имя (например, http://myconfluence.internal.local:8090 ). Для целей этого инструмента сервер Confluence и центр обработки данных Confluence считаются эквивалентными.
Некоторые атрибуты и конечные точки API немного различаются между экземплярами облака и сервера/центра обработки данных. Что еще более важно, методы аутентификации существенно отличаются. SharpConflux был разработан с учетом совместимости и поддерживает различные методы аутентификации для разных типов экземпляров.
Ниже описаны наиболее подходящие методы аутентификации.
Confluence Cloud: адрес электронной почты + аутентификация по паролю
Пользователи могут проходить аутентификацию в экземплярах Confluence Cloud, используя комбинацию адреса электронной почты и пароля. При просмотре https://companysubdomain.atlassian.net/wiki/ неаутентифицированные пользователи перенаправляются на https://id.atlassian.com/login , где публикуются следующие данные формы:
{
"имя пользователя" : "EMAILVALUE" ,
"пароль" : "ЗНАЧЕНИЕ ПАРОЛЬ" ,
"состояние" :
{
"csrfToken" : "CSRFTOKENVALUE" ,
"anonymousId" : "ANONYMOUSIDVALUE"
} ,
"токен" : "ЗНАЧЕНИЕ ТОКЕНА"
}
Если предоставленные учетные данные в параметрах usernameи passwordв дополнение к параметрам csrfTokenи токену верны, сервер вернет URI перенаправления. Последующий доступ к этому URI приведет к тому, что сервер установит cloud.session.tokenфайл cookie сеанса.
Этот метод аутентификации не поддерживается SharpConflux. С точки зрения состязательности, компании очень редко полагаются на этот механизм аутентификации, поскольку большинство из них будут использовать аутентификацию SAML SSO для экземпляров Cloud.
Облако Confluence: адрес электронной почты + токен API
Пользователи могут создавать свои собственные токены API и управлять ими, посетив https://id.atlassian.com/manage-profile/security/api-tokens :
Для аутентификации адрес электронной почты пользователя и токен API передаются через Authentication: Basicзаголовок в каждом HTTP-запросе.
Этот метод аутентификации поддерживается SharpConflux. Однако сбор действительных токенов API происходит редко.
Confluence Cloud: сторонний вход и единый вход SAML
Confluence Cloud позволяет пользователям входить в систему с помощью учетных записей третьих сторон (например, Apple, Google, Microsoft, Slack). Обычно компании настраивают экземпляры Confluence Cloud для аутентификации через службы федерации Active Directory (ADFS) или Azure AD.
После завершения обмена SAML сервер вернет URI перенаправления на https://id.atlassian.com/login/authorize . Последующий доступ к этому URI приведет к тому, что сервер установит cloud.session.tokenфайл cookie сеанса.
На момент выпуска этот метод аутентификации не поддерживается SharpConflux. Хотя это наиболее часто используемый метод аутентификации организациями, использующими Confluence Cloud, они также часто применяют многофакторную аутентификацию (MFA), что делает аутентификацию на основе файлов cookie гораздо более интересным методом с точки зрения состязательности.
Confluence Cloud: аутентификация на основе файлов cookie
Если вам удалось сбросить файлы cookie Confluence Cloud (например, через DPAPI ), вы можете использовать SharpConflux для аутентификации на целевом экземпляре. Обратите внимание, что включения одного действительного cloud.session.tokenфайла tenant.session.tokencookie должно быть достаточно для аутентификации, но вы можете указать любое количество файлов cookie, если хотите.
Сервер Confluence/Центр обработки данных: имя пользователя + пароль (базовая аутентификация)
По умолчанию установки Confluence Server/Data Center поддерживают аутентификацию по имени пользователя и паролю через Authorization: Basicзаголовок HTTP-запроса. Однако базовая аутентификация может быть отключена целевой организацией с помощью параметра «Разрешить базовую аутентификацию при вызовах API»:
Этот метод аутентификации поддерживается SharpConflux. С точки зрения состязательности, поиск комбинации имени пользователя и пароля для локального экземпляра Confluence является одним из наиболее распространенных сценариев.
Сервер Confluence/Центр обработки данных: имя пользователя + пароль (через данные формы)
Пользователи могут посетить локальный веб-сайт Confluence (например, http://myconfluence.internal.local:8090 ) и войти в систему, используя действующую комбинацию имени пользователя и пароля. В результате будет отправлен следующий HTTP POST-запрос:
ПОСТ/дологин. действие HTTP/ 1 . 1
[ ... ]
os_username=USERNAMEVALUE&os_password=PASSWORDVALUE&login=Войти+ в &os_destination=%2Findex. действие
Если предоставленные учетные данные в параметрах os_usernameи os_passwordверны, сервер установит файл JSESSIONIDcookie сеанса.
Этот метод аутентификации поддерживается SharpConflux. Как и в предыдущем методе, поиск комбинации имени пользователя и пароля является одним из наиболее распространенных сценариев. Обратите внимание, что этот метод аутентификации по-прежнему будет работать, даже если параметр «Разрешить базовую аутентификацию при вызовах API» отключен.
Сервер Confluence/центр обработки данных: токен личного доступа (PAT)
В установках Confluence Server/Data Center пользователям разрешено создавать и управлять своими собственными токенами личного доступа (PAT), которые будут соответствовать их текущему уровню разрешений. PAT могут быть созданы из /plugins/personalaccesstokens/usertokens.action:
Для аутентификации PAT передается через Authentication: Bearerзаголовок в каждом HTTP-запросе.
Хотя этот метод аутентификации поддерживается SharpConflux, он был добавлен только для полноты и поддержки крайних случаев, поскольку я никогда не сталкивался с PAT.
Сервер Confluence/центр обработки данных: единый вход
Подобно экземплярам Confluence Cloud, варианты Confluence Server/Data Center поддерживают аутентификацию через различных поставщиков удостоверений (IdP), включая ADFS, Azure AD, Bitium, Okta, OneLogin и PingIdentity. Однако в этом случае редко можно встретить локальные экземпляры Confluence, использующие единый вход. По этой причине этот метод аутентификации не поддерживается SharpConflux на момент выпуска.
Сервер Confluence/Центр обработки данных: аутентификация на основе файлов cookie
Если вам удалось сбросить файлы cookie сервера / центра обработки данных Confluence (например, через DPAPI), вы можете использовать SharpConflux для аутентификации на целевом экземпляре. Обратите внимание, что включения одного действительного JSESSIONIDфайла seraph.confluencecookie должно быть достаточно для аутентификации, но вы можете указать любое количество файлов cookie, если хотите.
Краткое содержание
Confluence — наиболее широко используемая корпоративная вики-платформа, часто хранящая конфиденциальные данные, которые могут в значительной степени облегчить повышение привилегий и действия по горизонтальному перемещению. Хотя в этом сообщении блога не раскрыто никаких новых методов атаки, выпуск SharpConflux призван помочь операторам Red Team, предоставляя простой способ взаимодействия со всеми типами экземпляров Confluence.SharpConflux был протестирован на последних поддерживаемых версиях на момент разработки (Cloud 8.3.2, Data Center 7.19.10 LTS и Data Center 8.3.2). Полный список функций, рекомендации по использованию и примеры можно найти в указанном проекте GitHub.