Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
gha-lab-ed7a1740c4 — Лаборатория исследований безопасности: контролируемое воспроизведение GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (инъекция shell-команд через входные данные workflow_dispatch в GitHub Actions) против зафиксированного снимка NationalSecurityAgency/emissary | Kitploit
Инструменты/GitHubGitHub/pvharmo2/gha-lab-ed7a1740c4
Анализ уязвимостейЭксплуатацияОбучение и ОбразованиеПодобранные Ресурсы
GitHubpvharmo2/gha-lab-ed7a1740c4

gha-lab-ed7a1740c4

Лаборатория исследований безопасности: контролируемое воспроизведение GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580 (инъекция shell-команд через входные данные workflow_dispatch в GitHub Actions) против зафиксированного снимка NationalSecurityAgency/emissary

Репозиторий
3 ч 34 мин назадЕщё не проверено

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Автоматизированный исследовательский артефакт — не вышестоящий проект.

Этот репозиторий — одноразовая лаборатория, созданная автоматизированной системой для магистерской диссертации в Université Laval по воспроизведению опубликованных уязвимостей рабочих процессов GitHub Actions. Это точный снимок NationalSecurityAgency/emissary на коммите 898488b489615581ea66d17954742c8e4ffb0323 (2026-01-09), распространяемый под собственной лицензией этого проекта, файл которой включён без изменений в этот снимок.

Вышестоящий проект не участвует, никогда не является целью, и изучаемая здесь уязвимость уже является публичной. Каждый секрет и переменная в этом репозитории — случайно сгенерированное фиктивное значение — никаких реальных учётных данных здесь нет. Ссылки на действия и образы исполнителей закреплены на те, которые они разрешались на 2026-01-09; см. pinning.md в выводе системы для каждого изменения, внесённого в снимок.

Вопросы или возражения: [email protected]


Emissary Dark Knight - some code just wants to watch the core burn

License

Maven Central
Java CI with Maven
CodeQL
Lint Codebase

Содержание

  • Введение
  • Минимальные требования
  • Начало работы
  • Свяжитесь с нами

Введение

Emissary — это P2P-ориентированный управляемый данными механизм рабочих процессов, который работает в гетерогенной, возможно широко распределённой, многоуровневой P2P-сети вычислительных ресурсов. Маршруты рабочих процессов не планируются заранее, как в обычных механизмах рабочих процессов, а обнаруживаются по мере получения дополнительной информации о данных. Обычно в рабочем процессе Emissary нет взаимодействия с пользователем; вместо этого данные обрабатываются целенаправленно, пока не достигнут состояния завершения.

Emissary является высококонфигурируемым, но в этой базовой реализации почти ничего не делает. Ожидается, что пользователи этого фреймворка предоставят классы, расширяющие emissary.place.ServiceProviderPlace, для выполнения работы над полезными нагрузками emissary.core.IBaseDataObject.

Можно выполнять различные действия, и рабочий процесс управляется по этапам, например STUDY, ID, COORDINATE, TRANSFORM, ANALYZE, IO, REVIEW.

Классами, отвечающими за управление рабочим процессом, являются emissary.core.MobileAgent и производные от него классы, которые управляют путём набора связанных объектов полезной нагрузки через рабочий процесс, и emissary.directory.DirectoryPlace, который управляет доступными сервисами, их стоимостью и качеством и поддерживает связь P2P-сети.

Сайт Maven и Javadoc, размещённые на GitHub Pages: https://code.nsa.gov/emissary/

Минимальные требования

  • Операционная система Linux или MacOSX
  • JDK 11
  • Apache Maven 3.6.3+

Начало работы

Прочитайте руководство DEVELOPING.md для получения информации об установке необходимых компонентов, получении исходного кода, сборке и запуске Emissary.

Сборка

Выполните mvn clean package для компиляции, тестирования и упаковки Emissary

root@kitploit:~
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.132 s
[INFO] Finished at: 2022-01-10T22:31:05Z
[INFO] ------------------------------------------------------------------------

Запуск

В Emissary есть один bash-скрипт, который запускает всё. Он находится в верхнем уровне каталога Emissary. Скрипт запускает класс emissary.Emissary, который имеет несколько команд Picocli, доступных для обработки различных функций.

Без аргументов

Если скрипт emissary запущен без каких-либо аргументов, вы получите список всех подкоманд конфигурации и краткое описание.

root@kitploit:~
./emissary

Справка

Запуск ./emissary help даст вам тот же вывод, что и запуск без аргументов. Если вы хотите увидеть более подробную информацию о команде, добавьте имя команды после help. Например, чтобы увидеть все аргументы с описаниями для команды server, выполните:

root@kitploit:~
./emissary help server

Общие параметры

Остальные команды имеют аргументы (-b или --projectBase), которые можно задать, но они должны соответствовать PROJECT_BASE.

Каталог конфигурации по умолчанию — /config, но его также можно передать с помощью (-c или --config). При запуске из git-клона следует использовать target в качестве projectBase. Не стесняйтесь изменять файлы конфигурации в target/config перед запуском.

Журналирование обрабатывается logback. Вы можете указать пользовательский файл с помощью аргумента --logbackConfig.

См. help -c для каждой команды, чтобы получить дополнительную информацию.

Сервер (автономный)

Эта команда запустит сервер Emissary и инициализирует все настроенные места (places), место приёма (pickup place) и фильтры сдачи (drop off filters). Он запустится в автономном режиме, если -m или --mode не указан. По умолчанию количество MobileAgents рассчитывается на основе характеристик машины. На современных компьютерах это число может быть высоким. Вы можете управлять количеством агентов с помощью -a или --agents. Вот пример запуска.

root@kitploit:~
./emissary server -a 2

Без дополнительной настройки он запустится на http://localhost:8001. Если вы перейдёте по этому адресу, вам потребуется ввести имя пользователя и пароль, определённые в target/config/jetty-users.properties, а именно emissary и emissary123.

Место приёма по умолчанию (PickUpPlace) настроено на чтение файлов из target/data/InputData. Если вы скопируете файлы в этот каталог, вы увидите, как Emissary обрабатывает их. Имейте в виду, что настроены только toUpper и toLower, поэтому вывод не будет слишком интересным.

Пауза

Остановить приём работы сервисом

root@kitploit:~
./emissary server --pause
Снятие паузы

Разрешить приостановленному сервису принимать работу

root@kitploit:~
./emissary server --unpause
Инвалидация

Инвалидировать сервисы, которые поддерживают обновление. Это «лёгкое» обновление, подход без простоя, который инвалидирует ServiceProviderRefreshablePlace. Когда место затем извлекается из DirectoryPlace, место пересоздаётся с использованием тех же ключей для DirectoryPlace и Namespace, но конфигуратор перезагружается, и место может перезагрузить подмножество своих конфигураций.

root@kitploit:~
./emissary server --invalidate
Обновление

Принудительное обновление сервисов. Это «жёсткое» обновление: сервер ставится на паузу, и происходит ожидание, пока MobileAgents завершат работу. Когда сервер полностью простаивает, все существующие ключи ServiceProviderRefreshablePlace удаляются из DirectoryPlace и Namespace, и места полностью пересоздаются. Это позволяет вносить изменения в имена сервисов, прокси, списки запретов и т.д. Затем сервер снимается с паузы для возобновления обработки. Любой сбой при обновлении может привести сервер в нерабочее состояние, поэтому сервер завершает работу.

root@kitploit:~
./emissary server --refresh
Остановка

Завершить работу сервиса

root@kitploit:~
./emissary server --stop
Принудительное завершение

Принудительное завершение работы сервиса

root@kitploit:~
./emissary server --kill

Агенты (автономный режим)

Команда agents показывает количество MobileAgents для настроенного хоста и то, чем эти агенты занимаются. По умолчанию порт — 9001, но вы можете использовать -p или --port для его изменения.
Предполагая, что вы работаете на порту 8001 из команды server выше, попробуйте:

root@kitploit:~
./emissary agents -p 8001

Пул (автономный режим)

Pool — это свёрнутое представление агентов для узла. Он также по умолчанию использует порт 9001. Чтобы запустить его для автономного сервера, запущенного выше, выполните

root@kitploit:~
./emissary pool -p 8001

Эта команда более полезна для кластера, так как она даёт более удобоваримое представление каждого узла.

Env

Команда Env требует запущенного сервера. Она запросит у сервера некоторые значения конфигурации, такие как PROJECT_BASE и BIN_DIR. Без аргументов она выведет неформатированный json-ответ.

root@kitploit:~
./emissary env

Но вы также можете вывести ответ, пригодный для использования в bash.

root@kitploit:~
./emissary env --bashable

При запуске сервера Emissary фактически вызывается эта конечная точка и выводится $PROJECT_BASE}/env.sh с настроенными переменными. Это сделано для того, чтобы shell-скрипты могли выполнить source $PROJECT_BASE}/env.sh и затем иметь эти переменные доступными без необходимости настраивать их где-либо ещё.

Config

Команда config позволяет увидеть эффективную конфигурацию для указанного места/сервиса/класса. Поскольку Emissary использует флейворы (flavors), эта команда покажет результирующую конфигурацию класса после применения всех флейворов. Эту команду можно использовать для подключения к работающему узлу Emissary, указав -h для хоста (по умолчанию localhost) и -p для порта (по умолчанию 8001). Для подключения к локально запущенному Emissary на порту 8001 подойдёт любая из следующих команд:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace
./emissary config --place emissary.place.sample.ToLowerPlace -h localhost -p 8001

При желании вы можете указать автономный режим с помощью --offline, чтобы использовать файлы конфигурации, указанные в вашем локальном CONFIG_DIR:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace --offline

В автономном режиме вы можете указать флейворы, чтобы увидеть различия в конфигурациях:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace --offline --flavor STANDALONE,TESTING

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

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace --detailed

или в автономном режиме:

root@kitploit:~
./emissary config --place emissary.place.sample.ToLowerPlace --offline --detailed

Сервер (кластер)

Emissary интересен в автономном режиме, но запуск в кластере более подходит для реальной работы. Способ запуска в кластере аналогичен автономному, но вам нужно указать -m cluster, чтобы сообщить узлу о необходимости подключения к другим узлам. В кластерном режиме Emissary также запустит PickUpClient вместо PickUpPlace, поэтому вам потребуется запустить фидер (feeder).

Посмотрите на target/config/peers.cfg, чтобы увидеть узлы рандеву. В данном случае их 3. Узлы, работающие на портах 8001 и 9001, — это просто узлы Emissary. Узел, работающий на порту 7001, — это фидер. Итак, давайте запустим 8001 и 9001 в двух разных терминалах.

root@kitploit:~
./emissary server -a 2 -m cluster
./emissary server -a 2 -m cluster -p 9001

Поскольку все эти узлы знают о портах 8001, 9001 и 7001, вы увидите ошибки в журналах, так как они продолжают пытаться подключиться.

Обратите внимание: в реальных развёртываниях мы не запускаем несколько процессов Emissary на одном узле. Вы можете настроить имя хоста с помощью -h.

Фидер (кластер)

С узлами, запущенными на портах 8001 и 9001, нам нужно запустить фидер. Команда feed по умолчанию использует порт 7001, но нам нужно создать каталог, из которого фидер будет читать. Файлы, помещённые в этот каталог, будут доступны для обработки рабочим узлам, и работа должна распределяться по кластеру. Запустите фидер с помощью

root@kitploit:~
mkdir ~/Desktop/feed1
./emissary feed -i ~/Desktop/feed1/

Вы должны иметь возможность открыть http://localhost:8001, http://localhost:9001 и http://localhost:7001 в браузере и посмотреть настроенные места. Поместите несколько файлов в ~/Desktop/feed1 и наблюдайте, как 2 узла обрабатывают их. Возможно, потребуется минута, чтобы они начали обработку.

Агенты (кластер)

Агенты в кластерном режиме снова показывают детали о mobileAgents. Они начинают с узла, который вы настраиваете (localhost:9001 по умолчанию), затем обращаются ко всем узлам, о которых знают, и получают ту же информацию. Запустите с помощью:

root@kitploit:~
./emissary agents --cluster

Пул (кластер)

Пул в кластерном режиме также делает то же самое, что и пул в автономном режиме. Он начинается с узла (localhost:9001) по умолчанию, затем переходит ко всем узлам, о которых знает, и агрегирует свёрнутое представление кластера. Запустите с помощью

root@kitploit:~
./emissary pool --cluster

Топология (кластер)

Команда topology обращается к настроенному узлу (localhost:8001 по умолчанию) и общается с каждым узлом, о котором знает. Ответ — это то, что знают все эти узлы, поэтому вы можете построить сетевую топологию вашего кластера. Запустите с помощью

root@kitploit:~
./emissary topology

Запуск сервера с SSL

Хранилище ключей и пароль хранилища ключей находятся в файле emissary.client.EmissaryClient-SSL.cfg. Включено и настроено по умолчанию примерное хранилище ключей, которое вы можете использовать для тестирования этой функциональности. Мы не рекомендуем использовать примерное хранилище ключей в производственных средах. Чтобы использовать собственное хранилище ключей, измените значения конфигурации в файле emissary.client.EmissaryClient-SSL.cfg.

Автономный режим

root@kitploit:~
./emissary server -p 8443 --ssl --disableSniHostCheck

Кластерный режим

root@kitploit:~
./emissary server -p 8443 --ssl --disableSniHostCheck --mode cluster
./emissary server -p 9443 --ssl --disableSniHostCheck --mode cluster
mkdir ~/Desktop/feed1
./emissary feed -p 7443 --ssl --disableSniHostCheck -i ~/Desktop/feed1/

Свяжитесь с нами

Общие вопросы

Если у вас есть какие-либо вопросы или опасения по поводу этого проекта, вы можете связаться с нами по адресу: [email protected]

Вопросы безопасности

По вопросам безопасности и сообщению об уязвимостях, пожалуйста, обратитесь к SECURITY.md

Скачать инструмент