热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用GitHub应用程序提升到组织所有者权限,获得10,000美元的奖励

过去我从未参与过GitHub的长期奖金计划,但HackTheWorld终身免费私人存储库促销引起了我的兴趣。 我将通过一个简单但高影响力的权限升级漏洞来达到我的目的,这个升级是我在探索中发现的。 在这

过去我从未参与过GitHub的长期奖金计划,但HackTheWorld终身免费私人存储库促销引起了我的兴趣。 我将通过一个简单但高影响力的权限升级漏洞来达到我的目的,这个升级是我在探索中发现的。 在这种情况下,我能够利用GitHub应用程序从组织成员升级到帐户所有者。

 

背景

首先,让我们回顾一下GitHub组织的简单用户角色。 我添加这部分来演示所有者帐户的功能,以及如何采取措施来最大限度地减少授权。

外部合作者(为了完整性) – 在技术上不属于组织的角色,只被授予了对特定存储库的访问权限而已。

成员 – 在组织内部权限最低的角色。 根据组织设置,该角色可能只能查看或对部分存储库进行“写入”访问。 成员可以通过此权限获得的最高访问级别是存储库管理员,这将允许更改该特定存储库的大多数配置设置。

所有者 – 可以在组织内部发挥最高作用,这基本上等于超级管理员。 该角色能够被允许查看和编辑所有组织数据和存储库; 但更关键的是,不可逆转地删除整个组织及其代码。

组织在GitHub中被广泛使用,常见的假设是当适当的访问控制做的到位时(例如,不给每个存储库的管理员访问权限),那么其成员就不会构成威胁。 一种常见的模式是将成员放入“团队”,并使用这些团队来促成跨存储库的访问控制。使用这种模式,组织所有者可以被限制在一个小部分用户子集里,因为基于团队的控制足以在需要的地方才提供扩展访问。

 

挖掘GitHub应用程序

当我在作为所有者进行组织设置时,注意到了一个“第三方访问策略”按钮。 这个设置的目的是防止组织成员通过OAuth将存储库访问权限授予给不受信任的第三方。 这个按钮一旦启用,成员必须通过OAuth的权限提示特定地进行请求访问,然后需要组织所有者批准才能访问任何组织数据。

围绕这些设置玩并没有任何进展,我没法找到绕过批准要求的方法

接下来我考虑的是另一种应用程序,一种集成应用。 集成类似于OAuth应用程序,不同的是它们代表的是组织而不是用户行事。 我的思考过程是检查“第三方访问策略”是否也适用于集成,或者这些策略是否会通过。 我来到应用市场,并通过几个应用程序完成安装流程。 很明显,作为组织成员,没有选择安装集成的权限。 只能将集成安装到自己的帐户或自己所拥有的组织中。 我后来在这些文档中找到了以下解释说明。


  • 组织成员不能请求安装GitHub应用程序。该集成只能安装到我的帐户或我拥有“所有者”权限的组织中

在安装过程中,我注意到在选择“结算帐户”后,会弹出具有以下网址的页面:https://github.com/apps/:app_name/installations/new/permissions?target_id=:id

target_id是organization_id或要安装应用程序的account_id。 当然,作为另一个组织的成员,我动动我的小手将target_id更改为organization_id。 由于我的成员帐户是存储库管理员,因此系统提示我安装页面。
我成功地安装该应用程序,但仅限于我拥有管理员权限的一个存储库。 我通过访问组织所有者帐户中的“已安装的GitHub应用程序”页面来检查安装。 成功!

集成成功安装到我仅仅作为成员的账户中

此时已过了凌晨3点,我知道自从我为了绕开“第三方访问”限制以来,我发现了一个重大的问题。 我将向GitHub计划报告,打算在报告中留下任何后续发现的问题。

 

进一步探索

第二天,我想看看我是否可以进一步做些什么。 我创建了自己的GitHub集成,并注意到请求的权限可能非常敏感。 特别是允许“写入”所有组织成员和团队的访问权限。当然,有权将集成安装到一个存储库中将不是说就允许我授予对所有组织成员的“写入”访问权限,对吧?不对。 由于预期的设计是只有所有者才能安装集成,因此具有二进制权限。 你可以授予的范围没有被强制执行,因为已经被认为具有最高级别的访问权限。

在请求一系列权限时安装应用程序

然后下一步是查看API是否按预期工作,并且我是否真的能够使用它而不会遇到权限错误。 在抵达圣杯之前,我成功地混淆了一堆边界。 使用角色参数添加或更新组织成员资格。 使用该边界,我能够成功地邀请其他用户作为帐户所有者加入组织。

为低权限的“OrgMember”帐户安装集成审核日志条目 - 然后使用API邀请“NewMember”作为所有者

 

结语

我认为这个的好处是因为它只能被存储库管理员利用。您的组织中有多少存储库管理员?经过更多测试后,我发现允许成员创建存储库的所有组织都很脆弱。这是因为成员会自动为其创建的任何存储库授予管理权限;允许他们通过创建一个虚拟存储库来安装应用程序的方式来利用这一点。此功能在默认情况下处于启用状态,组织通常会将其启用,因为GitHub的付款模式不再受存储库限制,而是基于用户数量。
利用这个漏洞不一定只能是恶意的内部人员,也可以是攻击者来危害成员账户。假设一个组织中有300个成员;攻击者的表面区域不再局限于3或4个组织所有者,而是其任何成员。
与往常一样,与GitHub安全团队合作愉快!

 

时间线

初始报告:11/11/17 @ 3:30 AM
报告升级为组织所有者的能力:11/11/17 @ 8:30 PM
GitHub团队正式调查此问题:11/13/17 @ 5:30 AM
10,000美元奖励和分类奖励:11/14/17 @ 1:40 PM
修正部署到生产:11/15/17
问题标记为已解决:12/1/17

审核人:yiwang   编辑:边边


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
author-avatar
dv18183995666
海内存知己天涯若比邻
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有