Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
gha-lab-ed7a1740c4 — 安全研究实验室:针对 NationalSecurityAgency/emissary 的固定快照,受控复现 GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580(GitHub Actions workflow_dispatch 输入 shell 注入漏洞) | Kitploit
工具/GitHubGitHub/pvharmo2/gha-lab-ed7a1740c4
漏洞分析漏洞利用学习与教育精选资源
GitHubpvharmo2/gha-lab-ed7a1740c4

gha-lab-ed7a1740c4

安全研究实验室:针对 NationalSecurityAgency/emissary 的固定快照,受控复现 GHSA-3g6g-gq4r-xjm9 / CVE-2026-35580(GitHub Actions workflow_dispatch 输入 shell 注入漏洞)

查看仓库
3小时35分前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

自动化研究产物 — 非上游项目。

本仓库是由自动化工具链为拉瓦尔大学(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 网络的连接。

托管在 GitHub Pages 上的 Maven 站点和 Javadoc: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 服务器,并初始化所有已配置的 place、pickup place 和 drop off 过滤器。如果未指定 -m 或 --mode,它将默认以独立模式启动。默认情况下,MobileAgent 的数量根据机器规格计算。在现代计算机上,这个数量可能很高。您可以使用 -a 或 --agents 控制代理数量。以下是一个示例运行:

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

在未进一步配置的情况下,它将在 http://localhost:8001 上启动。如果浏览该 URL,您需要输入 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 失效。当该 place 随后从 DirectoryPlace 中取出时,将使用相同的 DirectoryPlace 和 Namespace 键重新创建该 place,但配置器会重新加载,且该 place 能够重新加载其部分配置。

root@kitploit:~
./emissary server --invalidate
刷新

强制刷新服务。这是一种“硬”刷新,服务器会暂停并等待 MobileAgents 排空。一旦服务器完全空闲,所有 ServiceProviderRefreshablePlace 的现有键将从 DirectoryPlace 和 Namespace 中移除,并完全重新创建这些 place。这允许更改服务名称、代理、拒绝列表等。随后服务器恢复以继续处理。刷新过程中的任何失败都会使服务器进入不良状态,因此服务器将关闭。

root@kitploit:~
./emissary server --refresh
停止

关闭服务

root@kitploit:~
./emissary server --stop
强制终止

强制关闭服务

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

代理(独立模式)

agents 命令显示所配置主机上的 MobileAgent 数量以及这些代理正在执行的操作。默认端口为 9001,但您可以使用 -p 或 --port 更改。假设您正在运行上述 server 命令中的 8001 端口,请尝试:

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

池(独立模式)

Pool 是节点上代理的汇总视图。它也默认使用端口 9001。要为上述启动的独立服务器运行,请执行:

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

此命令在集群中更有用,因为它提供了每个节点更易读的视图。

环境变量

Env 命令需要服务器正在运行。它将向服务器请求一些配置值,如 PROJECT_BASE 和 BIN_DIR。无参数时,它将输出未格式化的 json 响应。

root@kitploit:~
./emissary env

但您也可以输出适合在 bash 中 source 的响应。

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

启动 Emissary 服务器时实际上会调用此端点,并将配置的变量转储到 $PROJECT_BASE}/env.sh。这样做的目的是让 shell 脚本可以 source $PROJECT_BASE}/env.sh,从而无需在其他地方配置这些变量即可使用它们。

配置

config 命令允许您查看指定 place/服务/类的有效配置。由于 Emissary 使用 flavors,此命令将显示类在应用所有 flavors 后的最终配置。此命令可通过指定 -h 指定主机(默认为 localhost)和 -p 指定端口(默认为 8001)来连接到正在运行的 Emissary 节点。要连接到本地 8001 端口上运行的 Emissary,以下任一命令均可:

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

在离线模式下,您可以提供 flavors 以查看配置差异:

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 以了解 rendezvous 对等节点。在此示例中有 3 个。运行在 8001 和 9001 端口上的节点只是 Emissary 节点。运行在 7001 端口上的节点是 feeder。因此,让我们在两个不同的终端中启动 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 端口上启动节点后,我们需要启动 feeder。feed 命令默认使用 7001 端口,但我们需要设置一个 feeder 将读取的目录。放入该目录的文件将可供工作节点获取,工作应在集群中分配。启动 feed:

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

您应该能够在浏览器中访问 http://localhost:8001、http://localhost:9001 和 http://localhost:7001 并查看已配置的 place。将一些文件放入 ~/Desktop/feed1 中,观察两个节点处理它们。它们可能需要一分钟才能开始处理。

代理(集群模式)

集群模式下的 agents 同样显示 mobileAgents 的详细信息。它从您配置的节点(默认为 localhost:9001)开始,然后向它知道的所有节点发出请求并获取相同的信息。运行方式:

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

池(集群模式)

集群模式下的 pool 与独立模式下的 pool 功能相同。它从节点(默认为 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

下载工具