声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
背景介绍:
今天的漏洞故事分享来自一位名叫Abdelrahman Khaled的白帽子,他是一位专职的漏洞测试人员和漏洞赏金猎人,让我们开始吧。
漏洞发现:
首先目标网站托管在BugCrowd平台,并且该公司有很多品牌。在渗透该目标时,白帽小哥通过扫描发现一处目录遍历:http://sub.target.com/scripts
在查看这个目录遍历时,白帽小哥在[install.sh]文件中找到了感兴趣的信息:
很明显,这是一个Github访问令牌,但首先小哥要确认该令牌是否依然有效,因为开发人员在创建该令牌时,可以选择时间自动过期,像下面这样:
验证:
https://api.github.com/orgs/<username>/repos?access_token=<token>
当然我们也可以通过浏览器或cURL请求上面这个URL,通过查看响应来确认它是否过期。
很幸运,依然有效!!!于是我们可以利用这个访问令牌列出所有的私有库,但首先依然要确认这些私有库与该目标公司是否有关,如果无关,就不能作为漏洞上报,因为这位开发人员有可能只是在该公司兼职,于是这位白帽子克隆了这些私有库,开始对其进行详细分析:
curl https://api.github.com/orgs/<username>/repos?access_token=<token> | grep '"name"' | cut -d ":" -f 2 | cut -d '"' -f 2 > privare_repos_name.txt
for repo in $(cat privare_repos_name.txt); do git clone https://<access-token>@github.com/<username>/$repo; done
上面这段bash脚本主要用于将这些私有库克隆到白帽小哥的VPS中,从而更加方便进行下一步分析:
足足5.4G大小的私有库
我们无法在短时间内分析这么大的数据,于是白帽小哥使用grep命令来获取一些敏感数据:
# Grep private ssh key command
grep -r -R '(?=[-]*(?=[A-Z]*(?=[-])))(.*)(?=[-]*(?=[A-Z]*(?=[-])))'
上面这个正则表达式用于从所有私有库中提取SSH私钥。
通过上面这个文件,白帽小哥发现了很多docker的配置信息,但是这超出了漏洞测试的范围,因为规则明确声明不得尝试连接数据库或内部架构。但是可以明确的是,白帽小哥现在拥有了超过15个该目标品牌相关的私有仓库
每个repo中都包含了[控制面板密码、备份数据库、完整的应用程序代码、云证书],白帽小哥可以连接并接管它们。
当然,故事的最终自然是白帽小哥获得目标的致谢与赏金奖励啦!今天的故事就是这样,下次见吧~
读者可以通过点击下方“阅读原文”跳转至作者原文查看。
====正文结束====
原文始发于微信公众号(骨哥说事):【白帽故事】某公司多个品牌的账户全接管
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论