freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

天翼云安全实验室 | CVE-2022-1162 Gitlab硬编码密码漏洞研究复现
2022-04-13 16:55:40
所属地 浙江省

漏洞原理

在Gitlab的某些版本中存在着通过硬编码的方式为Oauth登录的用户设置默认密码的漏洞。具体来说,如果自行搭建的Gitlab开启了Oauth登录如Github登录、Google登录等,Gitlab在为这些第三方登录的用户创建账户时,会使用硬编码的方式设置用户密码,导致这些用户的密码都一样,这样子就很危险啊。
通过修复commit可以看到,关于Gitlab上硬编码这一段漏洞源码大概是这样子:
硬编码生成默认密码
为Oauth登录用户生成默认密码
所以攻击者可以通过形似123qweQWE!@#0000的密码尝试登录Gitlab用户的帐号,默认密码的长度是21,因此也就是字符串123qweQWE!@#000000000。当然目前该漏洞已经得到了修复了,但受影响的漏洞版本却不会被历史遗忘,包括Gitlab-CE和Gitlab-CC的以下版本:

  • 14.7至14.7.6

  • 14.8至14.8.4

  • 14.9至14.9.1

环境搭建

环境分为两部分,首先是受影响范围内的Gitlab,其次需要构建用于Oauth的第三方登录。

搭建Gitlab

本文使用受影响的Gitlab-CE版本14.7.0,直接写个docker-compose.yml启动:

version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:14.7.4-ce.0'
    container_name: 'gitlab'
    restart: always
    privileged: true
    hostname: 'gitlab'
    environment:
      TZ: 'Asia/Shanghai'
    ports:
      - '8080:80'
    volumes:
      - ./config:/etc/gitlab
      - ./data:/var/opt/gitlab
      - ./logs:/var/log/gitlab

创建好用于映射的3个目录,然后直接docker-compose up -d启动。

Github App

Oauth第三方登录使用Github App,最主要的信息是callback URL,为github地址加上/users/auth/github/callback,github使用本地地址没有问题,我们只是改了下本地hosts给它个域名比较好看。
注册Github App
注册完成App之后就得到了IDsecrets

配置Gitlab

修改Gitlab的配置文件github.rb以开启使用github作为第三方Oauth登录。

### OmniAuth Settings
###! Docs: https://docs.gitlab.com/ee/integration/omniauth.html
gitlab_rails['omniauth_enabled'] = true   # 开启功能
gitlab_rails['omniauth_allow_single_sign_on'] = ['github']   # 使用github登录
gitlab_rails['omniauth_block_auto_created_users'] = false   # 自动创建用户帐号
gitlab_rails['omniauth_auto_link_user'] = ['github']   # 链接github用户信息
gitlab_rails['omniauth_providers'] = [   # 设置github第三方登录信息
  {"name" => "github",
   "app_id" => "APP_ID",
   "app_secret" => "APP_SECRET",
   "args" => {
     "scope" => "user:email"
   }
  }
]

然后重启docker镜像以开启配置。

docker restart xxxx

漏洞验证

打开Gitlab就可以选择Github登录了,点击后跳转Github登录,登录回来后就新增了和Github用户同名的用户。
通过Github第三方登录Gitlab
完后退出登录,再使用该用户名与密码123qweQWE!@#000000000登录成功。
使用硬编码默认密码登录用户

漏洞修复建议

由于官方已经对漏洞进行了修复,所以升级Gitlab到安全的版本肯定是最佳选择。
其次对于可能已经存在该弱密码的用户,则需要提醒修改密码,但用户并不知道自己的密码是不是弱密码,所以最好提醒自己的Gitlab用户更新一次登录密码

参考

# web安全 # 漏洞分析 # Gitlab
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录