ang010ela 嘶吼专业版 

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Unit 42安全研究人员Aviv Sasson在Harbor中发现了一个严重漏洞,***者利用该漏洞可以通过发送恶意请求来控制Harbor注册表。Unit 42研究人员发现有超过1300个使用有漏洞的默认配置的Harbor Registry服务器可以通过互联网访问。

背景

研究人员在Harbor项目中发现了一个重要的权限提升漏洞,***者利用该漏洞可以在默认配置下获取admin权限。该漏洞于9月10日公布,CVE编号为 CVE-2019-16097。

Harbor项目在过去4年内的知名度和流行度不断攀升,并于去年11月成为CNCF incubating project (CNCF孵化项目)。Harbor项目的赞助商和使用企业包括:

图1. Harbor项目的赞助商和使用企业

漏洞影响

该漏洞的影响非常严重,因为在获取admin权限后,可以初始化许多***向量。***者可以下载和查看所有的私有项目,可以删除registry上的镜像,甚至可以替换镜像来污染registry。***者可以创建新的用户,并将它设置为admin。之后,***者可以通过Docker命令行工具用新的凭证连接Harbor registry,并替换当前的镜像。恶意镜像可以说恶意软件、加密货币挖矿机等。

POC视频如下:

https://www.biantube.com/watch/LBgIKqdfF1k

漏洞分析

首先分析User结构:

图2. Harbor源代码中的User结构

研究人员关注的目标参数是HasAdminRole,该参数的目的是表明用户是否admin。如果可以修改为True,***的目的就达到了。

那么如何实现呢?首先分析API调用,如果有人尝试访问/api/users,那么就会发现一些有趣的调用:

图3. /api/users

如果用户想要发送POST请求,就可以到达负责新用户注册的代码段。

 图4. POST请求处理逻辑

漏洞位于user.go:317中:

if err := ua.DecodeJSONReq(&user); err != nil

在该行代码中,我们可以从POST请求中获取数据,然后解码为用户对象。

正常的请求payload如下所示:

{“username”:”test”,”email”:”test123@gmai.com”,”realname”:”no name”,”password”:”Password1\u0021″,”comment”:null}

问题在于***者可以发送一个请求,并加入参数has_admin_role。如果发送“had_admin_role” = “True”的请求,就可以创建为admin的用户。

漏洞利用

研究人员写了一个简单的python脚本,用来发送POST请求到/api/users来创建权限为admin的新用户,需要在request body中将参数has_admin_role设置为True。运行脚本后,唯一需要做的是在浏览器中打开Harbor,并用新创建的用户登入。

解决方案

Harbor团队发布了解决该漏洞的补丁,9月18日发布的Harbor versions 1.7.6和1.8.3版本中都进行了安全更新。发布注释中说是通过禁止注册时创建admin用户来解决该问题。

开发者加入了一个检查过程来防止非管理员用户创建新的admin用户。该漏洞存在于1.70-1.8.2版本中,因此研究人员建议用户尽快更新到最新版本。

参考来源:https://unit42.paloaltonetworks.com/critical-vulnerability-in-harbor-enables-privilege-escalation-from-zero-to-admin-cve-2019-16097/


©著作权归作者所有:来自51CTO博客作者mob604756ebed9f的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Microsoft Edge浏览器的Universal XSS漏洞分析(CVE-2019-1030)
  2. 投资ipfs要多少钱?ipfs靠谱吗?
  3. 如何制作毛玻璃效果?
  4. 信息安全行业的门槛有多高?安全行业个人职业发展规划建议(二)
  5. Gookit Banking Trojan中的后门利用分析
  6. 世界上没有绝对安全的手机,保护iPhone安全的七个提示
  7. 使用Oracle Stream Analytics 21步搭建大数据实时流分析平台
  8. 如何溯源挖矿主机
  9. SweynTooth漏洞影响上百蓝牙产品

随机推荐

  1. 【金阳光测试】Android自动化测试第一季
  2. 自定义BaseAdapter,在主Activity页面调用
  3. 领域:更新外部对象的id
  4. 如何使用adb命令查看android中的数据库
  5. 如何优化Android中的位图绘制?
  6. Android开发中使用CRC校验
  7. Android开源代码解读の地图照片应用Panor
  8. 如何让按钮共享android中对话框宽度的一
  9. Android 字符串资源
  10. 多个dex文件定义了Landroid/支持/v13/app