本文作者:欧根亲王号(贝塔安全实验室-核心成员)
0x01:简介
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。
docker的registry是用本地存储或者s3都是可以的,harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。Harbor的镜像拷贝功能是通过docker registry的API去拷贝,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。
0x02:原理概述及危害
CVE-2019-16097漏洞是一个垂直越权漏洞,因注册模块对参数校验不严格,可导致任意管理员注册。攻击者注册管理员账号后可以接管Harbor镜像仓库,从而写入恶意镜像,最终可以感染使用此仓库的客户端等。
0x03:测试环境搭建
系统环境:centos
官方容器:docker
漏洞软件:harbor
Docker在centos7以上直接yum安装即可这里不做描述
harbor 的安装从https://github.com/goharbor/harbor/releases中选择相应的版本,这里用到的是1.71。下载后解压得到
修改harbor.cfg中的honstaname处为本机IP。
然后使用./install.sh进行安装,安装成功后使用docker-compose start启动。启动成功如图所示:
这样,整个环境搭建完毕
0x04:实验环境
攻击机:kali
受害机:centos7,harbor1.71
0x05:攻击描述
1、访问受害连接查看软件版本是否为受攻击版本,受攻击版本为Harbor 1.7.6之前版本和Harbor 1.8.3之前版本。
2、使用burp进行代理抓包,并使用注册功能注册任意账户
3、抓紧注册数据,并添加poc
这里是正常注册时抓取的数据
添加poc代码"has_admin_role":true
由此返回值201 提示创建成功
0x06:验证是否成功
新建用户test002为管理员用户
0x07:防御及修复方法
0x08:文章参考来源
https://cert.360.cn/report/detail?id=57ef85f85ae82a77070ccbba2330c1a0