首页 > 其他分享 >Docker API 未授权访问

Docker API 未授权访问

时间:2024-03-06 09:55:18浏览次数:27  
标签:blobs 映像 v2 API registry 授权 Docker

Docker API 未授权访问

目录

1 漏洞描述

Docker是一种流行的容器技术,已被世界各地的行业所接受。它用于生产和UAT环境。然而,对于技术堆栈中的每一个新层,都可能会因为配置疏忽、代码不安全或两者的结合而引入许多安全问题。由于docker附带了许多组件,通常devops的工程师不会太多考虑安全性,这可能会导致灾难性的结果。

1.1 Docker是什么?

Docker是一个非常受欢迎的平台,开发人员在与同事合作编写代码时使用它来消除“在我的机器上工作”的问题。企业使用Docker构建敏捷的软件交付管道,更快、更安全地为应用程序提供新功能。

1.2 Docker镜像和容器是什么?

映像是要在运行时使用的文件系统和参数。它没有状态,永远不会改变。容器映像是一个轻量级的、独立的、可执行的软件包,其中包括运行它所需的一切:代码、运行时、系统工具、系统库和设置。容器将软件与其周围环境隔离开来,例如开发环境和阶段环境之间的差异,并有助于减少在同一基础设施上运行不同软件的团队之间的冲突。

1.3 什么是Docker registry ?

Registry是一个无状态、高度可扩展的服务器端应用程序,它存储并允许您使用HTTP API分发Docker映像。早期版本的docker注册表api(即v1)存在一些问题,因此v2发布并大大提高了安全性。然而,需要注意的是,默认情况下,Docker Registry的两个版本都没有启用身份验证。

1.4 什么是blobs?

Layers 以blobs的形式存储在v2注册表API中,由其内容摘要进行键控。

2 漏洞危害

​ Docker注册表允许任何用户提取任何容器映像并读取所有者所做的任何更改。这些更改可能包括硬编码凭据、连接字符串、文件权限更改、自定义脚本等。不仅如此,用户还可以上传Blob并对基本映像进行更改,例如放置后门等。由于下次将部署此映像,后门也将部署在服务器上。

3 漏洞检测

3.1 检查registry 版本

  • 确认是/v1 还是/v2

    Check registry version

  • 一旦确认API版本,我们可以构造如下链接,通过registry 获取repos列表:/_catalog

    Registry catalogue

  • 可以看到本地安装了3个仓库,现在我们以testrepo1 为例测试,构造以下链接来确认终端的tag:/REPO_NAME/tags/list

    Repo tag list

  • 如上确认存在2个tag(v1, v2),构造以下链接来下载v2 tag下的mainfest文件:/manifests/v2

    manifest details

  • 一旦我们获取到blobs,可以通过构造以下链接来下载对应的blob:v2/blobs/sha256:sha256_list

    localhost:30000/v2/testrepo1/blobs/sha256:4b981f68920b27d3a35992f3e0343acfc90f52dff050328f38d03f16ba984d34
    
  • 下载后,将对应的文件类型修改为.tar.gz,解压可以看到文件目录结构

    for i in *.tar.gz; do tar -xzvf $i; done
    

    blobs

    extracted data

  • 通过查找发现敏感文件

    sensitive information

以上步骤可以通过脚本实现:GitHub - NotSoSecure/docker_fetch: Data extraction tool for Docker Registry API

4 修复方案

  1. 启用身份验证,Docker 注册表 API 版本 2 支持多个基于令牌的身份验证(bearer、oauth 等)。
  2. 启用内容信任以强制执行映像标记的客户端签名和验证。
  3. 使用 TLS。

5 来源

翻译于:Anatomy of a hack: Docker Registry | NotSoSecure

标签:blobs,映像,v2,API,registry,授权,Docker
From: https://www.cnblogs.com/f-carey/p/18055849

相关文章

  • Docker数据库容器(四)
    前言前面都以Nginx容器为例,介绍很Docker容器的运用。但是对于数据库的容器,在创建的时候却涉及到了Docker的环境变量设置,这个对于很多项目都是非常重要的。所以这里单独深入了解这类型的容器创建。一、创建这里以Mysql容器为例,用之前Nginx的创建方式来创建容器。~]#d......
  • Linux AWVS-14 Docker 安装
    1.什么是AWVS?一个自动化的web应用程序安全测试工具,可以扫描任何可通过web浏览器访问和遵循http/https规则的web站点和web应用程序2.安装AWVS:dockerpullsecfa/docker-awvsdockerrun-it-d-p13443:3443--cap-addLINUX_IMMUTABLEsecfa/docker-awvs浏览器访问https://i......
  • 【Azure Key Vault】使用REST API调用Azure Key Vault Secret的示例步骤
    准备阶段1)准备MicrosoftEntraID的注册应用(ServicePrincipal),如没有,需要注册它:Registeranapplication-MicrosoftAzure由世纪互联运营如取名“GetKeyVaultSecretVault01”,具体操作步骤,请参考:https://docs.azure.cn/zh-cn/entra/identity-platform/quickstart-register-......
  • 3-2中阶API示范
    下面的范例使用Pytorch的低阶API实现线性回归和DNN二分类Pytorch的中阶API主要包括各种模型层,损失函数,优化器,数据管道等。importosimportdatetime#打印时间defprintbar():nowtime=datetime.datetime.now().strftime('%Y-%m-%d%H:%M:%S')print('\n'+'......
  • Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一、Object.defineProperty定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象为什么能实现响应式通过defineProperty 两个属性,get及setget属性......
  • 【Redis】docker redis设置永久密码
    1.进入容器dockerexec-it容器idbash 2.追加密码设置echo"requirepass123456">>/etc/redis/redis.conf 3.退出容器并重启容器exitdockerrestart容器id ......
  • docker安装postgreSql
    拉取镜像控制台运行以下代码(如果需要指定版本,则将latest改为对应的版本号)dockerpullpostgres:latest创建容器dockerrun-it--namepostgresql--privileged-ePOSTGRES_PASSWORD=123456-p5432:5432-vC:\SolutionSpace\docker\postgresql:/var/lib/postgresql/data......
  • Docker搭建smb共享服务器
    Docker搭建smb共享服务器快速启动dockerrun-it--namesamba\-p139:139\-p445:445\-v/path/to/share:/share_dir\-ddperson/samba\-u"username;password"\-s"share_name;/share_dir/;yes;no......
  • Docker安装Clickhouse
    博客园首页新随笔联系管理订阅随笔-71 文章-1 评论-0 阅读-55274 Docker安装Clickhouse https://clickhouse.com/clickhouse官网https://hub.docker.com/r/clickhouse/clickhouse-server/此为Docker安装Clickhouse官网此为按照命......
  • Docker数据持久化挂载与卷(三)
    前言前面学了Docker基本的使用和通信,但是由于容器的生命周期是短暂的,当容器被删除后,容器内的数据也会一并删除。为了保存数据,我们可以使用DockerVolume将数据存储在宿主机上,从而实现数据的持久化。一、数据修改一般来看配置、数据等重要数据都需要变动,所以数据修改也......