社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

通过邀请消息劫持Github组织账号分析

FreeBuf • 4 年前 • 543 次点击  

由于Github组织账号的邀请消息无需任何确认机制,在接收邀请消息前无需任何关于身份的邮件确认,因此,攻击者在一定条件下,可以利用该身份绕过问题,劫持Github组织账号(Github Organization)。

Github的邀请消息机制(Invitation)

用户可以通过github.com网站,用个人认证信息创建一个Github组织账号(Github Organization),并通过邀请他人加入形成团队。在此处,我花了很长时间进行一些权限方面的安全测试。

因此当时,我通过github.com创建了一个Github组织账号(Github Organization)进行了测试,我注意到,只有Github组织账号的管理员(Owner )才有权限对他人发出加入邀请,被邀请人可以是github用户或非github用户。

如果被邀请人是非github用户,则必须向被邀请人邮箱发送邀请;若被邀请人是github用户,则我们可以选择向github用户的用户名直接发出邀请。如下我用自己邮箱b4936004lz@safemail.icu接收邀请:

在发出邀请的同时,作为Github组织账号的管理员,可直接向被邀请人赋予一定权限,有“Member”(普通成员)和“Owner”(管理员)两种用户权限选择,这里,我向被邀请人赋予“Owner”(管理员)权限,如下所示:

在向上述非github用户的邮箱b4936004lz@safemail.icu发出具备“Owner”(管理员)权限的邀请消息后,常规做法是,被邀请人应该通过邮件确认->github账户创建->接收邀请来实现邀请接受(basic email invitation > account creation + accepting invitation),但我没有这样,我直接用该邮箱在github.com上注册了一个github用户。进入该github用户中,我打开了之前向我发送邀请的Github组织页面github.com/org_name,此时,我的邀请信息直接显示在了其主页上,如下:

乍一看,这好像没有什么,因为github的消息显示就是如此的。但是,这里我奇怪的是,在创建github账户的时候我根本没有进行过邮件确认,要是我是假冒用户就糟糕了,也即该邀请消息并不应该直接就显示在这里的客户端页面上,至少怎么也得加上个token方式的身份认证机制吧。通过这里的邀请信息,我直接就绕过了邮件确认等身份认证机制,成为了Github组织账号的管理员。

漏洞利用场景

该漏洞更多要阐述的是漏洞利用场景。

1、假设一个Github组织账号管理员通过邮件方式向某被邀请人发出邀请信息,并向其赋予“Owner”(管理员)权限,也就说明该被邀请人是非github用户,他在接收到邀请的同时应该会创建一个github账户;

2、基于Github账号的注册机制,可把邮箱当用户名进行注册,因此攻击者可以用被邀请人的邮箱进行假冒github账户注册;

3、由于上述邀请机制缺乏邮件确认步骤,并且直接显示在了Github组织账号主页,因此攻击者可以用其假冒github账户登录查看;

4、攻击者利用上述步骤,假冒被邀请人实现邀请接收并管理Github组织账号。

漏洞上报和处理进程

2017.11.8 漏洞上报
2017.11.16 Github奖励了$5000

精彩推荐






Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/108134
 
543 次点击