安全研究 | 如何查看GitLab中的共享敏感数据

枫少@KillBoy
枫少@KillBoy
管理员
219
文章
0
粉丝
资源分享575,787字数 800阅读2分40秒阅读模式
AI智能摘要
你是否担心公司敏感数据正悄悄暴露在GitLab上?一款名为GitLab Watchman的开源工具,正默默帮安全研究员扫描代码、提交、Wiki等各类内容,揪出外泄的API密钥、密码、私钥等高危信息。它支持自定义规则、定时扫描,甚至能精准识别GCP、AWS、Azure等云平台凭据。想知道它是如何通过API深度挖掘企业资产漏洞的?这篇实战解析将带你揭开代码仓库中“看不见的泄露”背后逻辑,助你快速构建主动监控能力。
— AI 生成的文章内容摘要

安全研究 | 如何查看GitLab中的共享敏感数据

关于GitLab Watchman

GitLab Watchman这款应用程序可以帮助广大研究人员使用GitLab API来审查GitLab内部暴露的敏感数据和凭据。

功能介绍

GitLab Watchman可以搜索GitLab中的内部共享项目,并查看下列内容:

  • 代码;
  • 提交内容;
  • WiKi页面;
  • 问题;
  • 合并请求;
  • 项目里程碑;

GitLab Watchman支持搜索下列内容:

  • GCP密钥和服务帐户文件;
  • AWS密钥;
  • Azure密钥和服务帐户文件;
  • Google API密钥;
  • Slack API令牌&webhooks;
  • 私钥(SSH、PGP、任何其他杂项私钥);
  • 公开的令牌(Bearer令牌、访问令牌和client_secret等);
  • S3配置文件;
  • Heroku、PayPal等服务的令牌;
  • 明文密码;
  • ...

基于事件的搜索

我们还可以运行GitLab Watchman并搜索下列时间间隔返回的数据结果:

  • 24小时;
  • 7天;
  • 30天;
  • 所有时间;

这也就意味着,在一次深度扫描之后,我们可以安排GitLab Watchman定期运行,并且只返回所选时间段的结果。

规则

GitLab Watchman使用自定义YAML规则来检测GitLab中的匹配数据项。

规则格式如下所示:

---  filename:  enabled: #[true|false]  meta:    name:    author:    date:    description: #what the search should find#    severity: #rating out of 100#  scope: #what to search, any combination of the below#  - blobs  - commits  - milestones  - wiki_blobs  - issues  - merge_requests  test_cases:    match_cases:    - #test case that should match the regex#    fail_cases:    - #test case that should not match the regex#  strings:  - #search query to use in GitLab#  pattern: #Regex pattern to filter out false positives#

项目中引入了Python测试来确保规则格式的正确性,项目目录中的tests目录下还包含正则匹配模式。关于检测规则的更多内容,请查看项目下的docs/rules.md文件。

.conf文件

配置选项可以在watchman.conf文件中进行配置,该文件必须存储在项目的根目录下。该文件必须遵循YAML格式:

gitlab_watchman:    token: abc123    url: https://gitlab.example.com    logging:      file_logging:        path:      json_tcp:        host:        port:

GitLab Watchman将会在运行时查询该配置文件,并使用其中的配置信息。除此之外,本项目还提供了一份配置文件样本,路径为docs/example.conf。

工具要求

GitLab版本

GitLab Watchman使用了v4 API,支持GitLab企业版:

  • GitLab.com
  • 13.0及其以上版本
  • 12.0-12.10版本

工具安装

广大研究人员可以使用下列命令安装GitLab Watchman:

pip install gitlab-watchman

工具使用

GitLab Watchman将以全局命令的形式进行安装,可以通过下列方式使用:

usage: gitlab-watchman [-h] --timeframe {d,w,m,a} --output                     {file,stdout,stream} [--version] [--all] [--blobs]                     [--commits] [--wiki-blobs] [--issues] [--merge-requests]                     [--milestones] [--comments]     Monitoring GitLab for sensitive data shared publicly     optional arguments:    -h, --help            show this help message and exit    --version             show program's version number and exit    --all                 Find everything    --blobs               Search code blobs    --commits             Search commits    --wiki-blobs          Search wiki blobs    --issues              Search issues    --merge-requests      Search merge requests    --milestones          Search milestones    --comments            Search comments     required arguments:    --timeframe {d,w,m,a}                          How far back to search: d = 24 hours w = 7 days, m =                          30 days, a = all time    --output {file,stdout,stream}                          Where to send results

我们可以使用GitLab Watchman来查询所有支持的数据项,并将结果输出至默认Stdout:

gitlab-watchman --timeframe a --all

或者,我们也可以将参数一起提交给搜索命令:

gitlab-watchman --timeframe m --commits --milestones --output stream

项目地址

GitLab Watchman:【GitHub传送门

https://www.freebuf.com/sectool/266025.html

 
枫少@KillBoy
评论  57  访客  55  作者  2
    • 大雄
      大雄 1

      这个工具听着挺猛啊,我们公司gitlab该查查了

        • 秋雨潇潇
          秋雨潇潇 1

          @ 大雄 要是能和现有CI流水线整合就更完美了

        • 青冥
          青冥 0

          求问这玩意在自建gitlab上能跑吗?

            • 暮光橙
              暮光橙 0

              @ 青冥 自建GitLab跑通了,12.8没问题,token记得用只读权限

            • 圆滚滚的猫
              圆滚滚的猫 1

              私钥和密码都扫得到?有点吓人了 👀

              • 寒夜孤鸿
                寒夜孤鸿 0

                我们上周刚用它捞出一堆aws密钥,真是绝了

                  • 东君
                    东君 1

                    @ 寒夜孤鸿 别忘了立马 rotate 那些密钥

                  • 龄官画蔷
                    龄官画蔷 0

                    感觉一般,我们用内部脚本也能实现类似功能

                    • 墨影朦胧
                      墨影朦胧 1

                      配置文件里token直接写明文,这不也挺危险?

                        • 枯井回声
                          枯井回声 0

                          @ 墨影朦胧 token写明文是有点悬,建议加个vault集成

                        • 远方的诗行
                          远方的诗行 0

                          之前自己写过类似的扫描器,正则规则最难搞

                          • MeteorMystic
                            MeteorMystic 0

                            gitlab版本要求有点高,老版本用户哭死

                              • 凤冠旦角
                                凤冠旦角 0

                                @ MeteorMystic token放配置文件里确实不太安全

                              • 慌张的兔子
                                慌张的兔子 0

                                这个yaml规则写起来是不是得经常维护?

                                  • 厚德载物
                                    厚德载物 0

                                    @ 慌张的兔子 yaml规则确实得常改,业务一变就得跟着调

                                  • 星辰旅梦
                                    星辰旅梦 0

                                    规则还能测用例,这点倒是挺严谨的

                                    • 肥猫压炕头
                                      肥猫压炕头 0

                                      这个工具对自建GitLab支持怎么样?

                                      • 河道总督
                                        河道总督 0

                                        规则维护起来确实麻烦,正则总得跟着业务改

                                        • ToastyMarshmallow
                                          ToastyMarshmallow 1

                                          我们12.5版本能用不?

                                          • StarfallSage
                                            StarfallSage 0

                                            上周试了下,把测试环境的密钥全扫出来了🤯

                                            • 放风筝的猪
                                              放风筝的猪 0

                                              yaml配置看着还行,就是得自己写规则

                                              • 数据洪流
                                                数据洪流 1

                                                感觉比商业工具灵活点

                                                • 虚无印
                                                  虚无印 1

                                                  正则测试用例这个设计不错

                                                    • 云雾轻扬
                                                      云雾轻扬 0

                                                      @ 虚无印 测试用例能跑通再上线,省得误报满天飞

                                                    • 夜枭挽歌
                                                      夜枭挽歌 1

                                                      这种扫描会不会把正常文件误报啊?

                                                        • 红尘劫
                                                          红尘劫 0

                                                          @ 夜枭挽歌 误报其实不多,关键看正则写得细不细

                                                        • Sapphire Orchid
                                                          Sapphire Orchid 1

                                                          文档里example.conf例子再多点就好了

                                                            • 狂龙傲天
                                                              狂龙傲天 0

                                                              @ Sapphire Orchid 确实,更多示例能省不少调参时间

                                                            • 焦土幸存者
                                                              焦土幸存者 0

                                                              这工具扫出来一堆密钥真不是闹着玩的,赶紧自查

                                                              • 火灵子
                                                                火灵子 1

                                                                刚在测试环境跑了一把,连半年前的slack webhook都翻出来了😅

                                                                  • 幽影召唤师
                                                                    幽影召唤师 0

                                                                    @ 火灵子 半年前的webhook都能挖出来,这工具真不是开玩笑的

                                                                  • 龙吟叟
                                                                    龙吟叟 1

                                                                    我们12.8版本跑着没问题,12.5应该也行吧?

                                                                    • 绯色之月
                                                                      绯色之月 0

                                                                      误报还好吧,regex配仔细点基本可控

                                                                      • 狂野马少
                                                                        狂野马少 0

                                                                        公司gitlab马上安排上,怕了怕了

                                                                        • 风归云
                                                                          风归云 0

                                                                          看着比自己搓的脚本靠谱多了,准备换

                                                                          • 寂星无眠
                                                                            寂星无眠 0

                                                                            能不能加个自动打码敏感信息的功能?

                                                                            • BashfulBoss
                                                                              BashfulBoss 0

                                                                              这工具确实省事儿

                                                                              • 沉默的石头
                                                                                沉默的石头 1

                                                                                slack webhook都被挖出来,怕死 😱

                                                                                • 豹子快
                                                                                  豹子快 0

                                                                                  我们部门之前也跑过一次,结果把半年内的密码全给列出来了,真是吓人

                                                                                  • 孤魂巷
                                                                                    孤魂巷 0

                                                                                    这个watchman在自建的GitLab上需要额外授权吗?

                                                                                    • 黑夜的呢喃
                                                                                      黑夜的呢喃 1

                                                                                      查了下,要13.0版才能用?

                                                                                      • 蜜桃小乖乖
                                                                                        蜜桃小乖乖 1

                                                                                        这工具权限要求高不高啊

                                                                                        • 火柴燃烧
                                                                                          火柴燃烧 1

                                                                                          YAML规则里可以用变量,省得每次改路径

                                                                                          • 空谷幽兰
                                                                                            空谷幽兰 1

                                                                                            其实误报率并不高,只要正则写得严谨,误报的情况可以控制在可接受范围,别因为怕误报就放弃使用。

                                                                                            • 煎饼果子不要葱
                                                                                              煎饼果子不要葱 0

                                                                                              配置文件里token明文存,感觉安全感直接被掏空了

                                                                                              • 夜梦行客
                                                                                                夜梦行客 1

                                                                                                定时跑脚本的活儿还挺实用

                                                                                                • 暮色轻语
                                                                                                  暮色轻语 0

                                                                                                  我们12.3版本试了直接报错,看来真得12.5+才行

                                                                                                  • 菜鸡超能
                                                                                                    菜鸡超能 0

                                                                                                    配置文件里token明文存确实有点膈应,能不能支持vault集成啊?

                                                                                                    • 苍空之逝
                                                                                                      苍空之逝 0

                                                                                                      刚扫完生产环境,手都在抖,赶紧改密钥去了😱

                                                                                                      • 暗夜吞噬者
                                                                                                        暗夜吞噬者 1

                                                                                                        规则格式这块能自己加正则不?

                                                                                                          • 枫少@KillBoy
                                                                                                            枫少@KillBoy

                                                                                                            @ 暗夜吞噬者 规则文件里可以自定义pattern,自己加正则没问题

                                                                                                          • 忧郁的披萨
                                                                                                            忧郁的披萨 0

                                                                                                            yaml规则维护是有点烦,但比手动grep强一百倍

                                                                                                            • 流云使
                                                                                                              流云使 0

                                                                                                              有人试过配合gitlab-ci自动跑吗?想加到流水线里

                                                                                                              • 清舟
                                                                                                                清舟 0

                                                                                                                这玩意扫comments也太狠了,连临时贴的测试密码都翻出来了

                                                                                                                • 变奏曲
                                                                                                                  变奏曲 1

                                                                                                                  免费版GitLab能用吗?

                                                                                                                    • 枫少@KillBoy
                                                                                                                      枫少@KillBoy

                                                                                                                      @ 变奏曲 免费版也能用,就是API调用有次数限制。

                                                                                                                  匿名

                                                                                                                  发表评论

                                                                                                                  匿名网友

                                                                                                                  拖动滑块以完成验证