
这个漏洞争议比较大,但是鉴于漏洞可以下载公开镜像并能查看镜像中的一些敏感信息,所以对于渗透来说也是很重要的辅助。刚好碰到了这个漏洞,看了下网上的复现文章,感觉有些讲的不是很清楚,所以做一下记录。
漏洞描述
Harbor
是为企业用户设计的容器镜像仓库开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、镜像验真、管理界面、自我注册、HA等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。
cve-2022-46463
Harbor 中存在访问控制错误问题,允许攻击者无需身份验证即可访问公共和私有镜像存储库的所有信息,并拉取镜像。
漏洞参考信息:
https://avd.aliyun.com/detail?id=AVD-2022-46463
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-46463
此漏洞比较乌龙,虽然cve给了编号,但是官方认为这是harbor官方文档中明确定义的特性之一,即用户可以设置一些镜像为公开,该特性导致harbor上所有被设置为公开的项目都通过相应的API接口被列举,获取详细信息,甚至被拉取。但是有些渗透工作者反馈,harbor私有的库和镜像,也可以拉取。
漏洞复现
懒得搭了,所以直接用了真实环境进行复现。
遇到目标的Harbor版本为v2.0.1,在漏洞版本范围内。
在搜索框中随便搜索一个字母
即可显示含有该字母的项目
但此时点击项目会跳到登录页面,我们使用一段github上的poc去打印出一些项目的url地址
https://github.com/nu0l/CVE-2022-46463/blob/main/cve-2022-46463.py
脚本跑出来的Vulnerability URL,丢掉burpsuite中抓包:
将所有的请求报都右键点击这个选项再放包:
遇到响应包是这个包时:
改为以下内容后再放包:
此时前端页面返回了项目信息:
点击复制键即可在docker中拉取镜像。
需要注意的一点是,docker默认拉远程镜像仓库镜像需远程地址为https且证书可信,若你的目标不符合要求,需要在docker的配置中做一下修改,将目标地址添加进去即可修改。
点击Artifacts的内容,还可以看到单个镜像的详细信息。跟上面讲的一样UNAUTHORIZED的响应包还要改成200:
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)