扫码领资料
获网安教程
来Track安全社区投稿~
赢千元稿费!还有保底奖励~(https://bbs.zkaq.cn)
在一次HackerOne计划中,我发现了一个漏洞,这使我能够查看超过1万名拥有Okta账户的员工的个人身份信息(PII)。
信息收集
由于保密原因,我无法透露该计划的具体名称,我们姑且将其称为example.com。example.com的范围内包括www.example.com、notexample.com以及notexample.com的一些子域名。在接触新计划时,我通常会通过Shodan查看其资产规模。
在查看结果时,我注意到一个奇怪的 favicon.ico
图标,并打开了它。该应用程序正在使用 Backstage[2]。你可以在你的目标中测试此类漏洞。以下是该应用程序的 favicon
哈希值:
http.favicon.hash:1117983176
该应用程序提供了两种登录方式:Guest(访客)和 Okta。我没有多想,直接点击“Enter as guest”(以访客身份进入)并成功登录。
验证主机
然而,我无法确认该主机是否确实属于该公司,以及是否可以继续操作。在 /catalog
页面上的 CI/CD 页面中,我发现了一个需要微软身份验证的 GitHub 用户名。
我在 GitHub 上搜索了该用户名,通过 GitHub 找到了他的 LinkedIn 个人资料,并发现他自 X 年起就在 example.com 担任 DevOps 工程师。
在确认该主机属于 example.com 后,我在主机中导航,查看是否可以通过访客访问权限查看任何包含敏感信息的页面。
在 /create
页面,我发现可以通过 GitHub Actions 部署一个 Node.js Lambda 函数,这一点我也在漏洞报告中提到了。我随后继续枚举该应用程序的其他端点。
暴露 Okta 令牌
在浏览了一段时间后,我访问了 https://host/dev/config
页面,发现了 Okta 的访问令牌。该页面泄露了单点登录 (SSO) 提供商的配置信息。
怀着 1% 的希望,期待该令牌可能有效,我查阅了 Okta 文档,编写了一些 HTTP 请求以尝试泄露敏感信息。
利用过程
随后,我使用以下请求来检索 Okta 用户信息。我成功获取了超过 1 万名员工的个人身份信息(PII),包括姓名、姓氏、电子邮件地址、所有用户的 API 令牌、用户组等。我还能够停用/重新激活员工的 Okta 用户,删除用户,为用户添加新的安全设备。
获取用户信息的方法如下:
curl -v -X GET -H "Accept: application/json"
-H "Content-Type: application/json" -H "Authorization:
SSWS <TOKEN HERE>" "https://example.oktapreview.com/api/v1/users?limit=25"
获取 API 令牌的方法如下:
curl -v -X GET -H "Accept: application/json" -H
"Content-Type: application/json" -H
"Authorization: SSWS <TOKEN_HERE>"
"https://example.oktapreview.com/api/v1/api-tokens"
获取应用程序的方法如下:
curl -v -X GET -H "Accept: application/json" -H
"Content-Type: application/json" -H
"Authorization: SSWS <TOKEN_HERE>" "https://example.oktapreview.com/api/v1/apps"
你可以参考官方 Okta 文档以进一步利用漏洞:https://developer.okta.com/docs/reference/。
报告与修复
我迅速向该厂商报告了该漏洞,给出了 CVSS 评分 8.7,并支付了漏洞奖励。
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!
如果你是一个网络安全爱好者,欢迎加入我的知识星球:zk安全知识星球,我们一起进步一起学习。星球不定期会分享一些前沿漏洞,每周安全面试经验、SRC实战纪实等文章分享,微信识别二维码,即可加入。