前言

近日,在对项目进行做信息收集的过程中,通过特别简单的一个策略得到了意外的收获:发现某项目的Gitlab的公开仓库,并在其中找到数据库账号密码等,并存在大量数据。

Gitlab相关配置问题

现在很多公司都会选择将自己的代码部署到私有化的Gitlab仓库中。而在使用的过程中,如果配置不当,则会有很大的信息泄漏风险。对于代码仓库的权限设置,仓库有三种权限:私有、内部、公开。

  1. 敏感代码仓库设置为公开可见。

很多员工在Gitlab配置自己的代码仓库时,会直接设置为公开可见的仓库。公开权限是指任何人包括未登录用户也可见。如果公司的Gitlab地址被人发现,则会直接泄漏代码。

如下图所示,虽然提示需要登陆,但点击底部导航栏中的Explore既可找到所有公开的代码仓库。

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_代码仓库

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_数据库_02

  1. 可自行注册账号。

如果把所有的仓库不允许设置为公开,是不是就万事大吉了呢?也不是,若是设置仓库为内部可见,也就是登陆用户可见。那么如果用户可以自行注册账号,也会导致该仓库的代码泄漏。

策略实现

在渗透的过程中,想要发现这类漏洞,则需要对项目的所有网站进行爬虫,针对响应包的一些特征进行匹配。这将会是一个非常麻烦以及耗时的过程,所幸的是火器已经把我们所需的信息都收集起来了:所有可访问的Web网站以及对应的爬虫数据。我们要做的就只是在SOAR中添加一些匹配规则即可。

策略概览:

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_配置问题_03

现在逐个解释一下各应用的作用。

【#6-URL数据源】:从火器中搜索所有的符合Gitlab特征的网页。

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_数据库_04

【#4-生成线索】将上一步得到的结果存储下来。

【#5-飞书通知】将生成的线索通过飞书发送实时通知。

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_代码仓库_05

如果是自己重点关注的线索,则可以使用【飞书通知】的应用,如果生成线索后,就会实时发送飞书Webhook通知。具体的飞书Webhook机器人配置可见飞书官方文档。除此之外也支持企业微信、钉钉。其中防打扰设置为【5分钟】,指5分钟内只会发送一次通知。目的为了防止策略出错或瞬间生成大量线索时,发送大量的通知打扰用户。

另外,通知类应用仅在策略属于原创时,才会使用。如果当前托管的策略是购买的他人策略,属于非原创策略,就不会执行通知类应用,以防止线索泄漏给原策略作者。

效果

在飞书客户端收到通知:

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_数据库_06

访问链接,查看是否存在敏感信息,找到数据库账号密码:

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_数据库_07

进行连接测试,确认可用,并且存在大量数据库数据。

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_数据库_08

思考

通过对爬虫信息进行直接搜索,可筛选出可能存在风险的Gitlab仓库。那Gitlab除了这种配置问题以外,是不是还存在其他问题呢?那除了Gitlab以外,是不是还存在其他框架也会有默认配置问题呢?比如Swagger文档?

如何查看 GitLab CE 的版本信息 gitlab怎么查看自己的权限_配置问题_09