一种OAuth2.0开放式重定向漏洞的检测方法及系统与流程

文档序号:31790902发布日期:2022-10-14 15:06阅读:132来源:国知局
一种OAuth2.0开放式重定向漏洞的检测方法及系统与流程
一种oauth2.0开放式重定向漏洞的检测方法及系统
技术领域
1.本发明涉及集成电路领域,更具体地,涉及一种oauth2.0开放式重定向漏洞的检测方法及系统。


背景技术:

2.目前,在以开放平台为中心的复杂网络生态系统中,restful api是web api的主要的类型,然而restful api在基于oauth 2.0协议的授权方式上存在着较为严重的安全威胁。利用web api进行基于web的各种互联网服务集成时,出现的各种集成服务在功能和协议流程上通常是具有复杂的设计和实现场景。正是这种复杂性使得原有的各种web系统在边界交互上存在了新的安全威胁。现有技术中,web api漏洞挖掘主要集中于逻辑漏洞挖掘。restful api存在的安全问题主要有:接口被滥用消耗系统资源、数据泄漏、伪造/篡改数据、应用被仿制等。
3.oauth 2.0协议是一个旨在为授权提供一个开放标准的协议。它使得用户允许第三方应用有限地访问用户存储在其他应用的数据而不用向第三方应用暴露自己的用户名和密码等信息。随着oauth 2.0成为最流行的框架之一,越来越多的网站采用oauth 2.0协议来进行授权从而提供资源服务。最常见的一个用处是用于第三方登录的授权。当一个用户访问了一个网站并选择以第三方账户登录的方式,网站会将其重定向到该第三方账户所在的服务器,用户提供他的账号密码以通过第三方账号服务器的验证并同意授权。在第三方授权服务器成功验证了用户的身份之后,将发放一个授权码,并将用户重定向至网站,然后网站就可以凭借授权码请求令牌,从而访问用户第三方账号的资源。但是,即便是采用oauth协议,restful api中仍存在redirect_uri绕过或被攻击并修改等问题。当redirect uri发生被绕过事件时,就会导致oauth token被劫持,进而发生用户账户劫持的严重问题。
4.目前,主流的redirect_uri异常检测方法,通常只能够利用开放式重定向漏洞诱骗用户访问某个可信赖站点的url,并将他们重定向到新站点的方式实现检测。在这种检测方法中,方法通常会最终检测新站点是否为合法的网站,从而实现对于开放重定向功能异常与否的判断。
5.然而,这种方法并不能够从根本上来说对于开放式重定向方法的安全进行判定。具体来说,如果攻击者修改该回调uri的参数指向,伪造一个回调uri为自己的地址并将伪造后的用户授权链接发给目标用户。那么,当目标用户点击这个伪造的链接并授权登录之后,服务器会将用户的凭证发给攻击者,攻击者从而可利用此登录上用户的账户。现有技术中,针对这种修改方式,也存在一种更具威胁性的攻击方法,攻击者能够利用第三方通过api进行登录的过程中修改redirect_uri的方式获得未使用的授权码。此时,攻击者可能不会将redirect_uri修改为攻击者的地址,而是为了攻击该第三方网站,将redirect_uri修改为与原始地址同源的另一个第三方网站内的uri地址,从而实现攻击。在这种情况下,仅仅考虑网站地址的合法性与否,并无法充分的预防或避免对于redirect_uri中参数修改后对网站造成的威胁。
6.针对上述问题,本发明提供了一种新的oauth2.0开放式重定向漏洞的检测方法及系统。


技术实现要素:

7.为解决现有技术中存在的不足,本发明的目的在于,提供一种oauth2.0开放式重定向漏洞的检测方法及系统,通过对于api接口中的uri字段进行检测,寻找uri回调参数,并根据预设的回调参数的类型和替换方法,对uri进行修改,并通过新的用户请求,实现api接口中的漏洞检测。
8.本发明采用如下的技术方案。
9.本发明第一方面,涉及一种oauth2.0开放式重定向漏洞的检测方法,其中方法包括以下步骤:步骤1,对于oauth2.0授权的第三方的api接口中的uri字段进行检测,发现并记录其中涉及到的所有回调参数;步骤2,基于预先定义的回调参数表,对步骤1中获取的所有回调参数的类型进行匹配,并基于匹配的结果对回调参数的参数值进行替换;步骤3,模拟用户请求,以调用实现过参数替换的api接口,并基于调用的响应结果实现对api接口中漏洞的检测。
10.优选的,所有回调参数至少包括redirect_uri参数和destination参数。
11.优选的,预先定义的回调参数表中,不仅包括预先定义的回调参数类型,还包括api接口中相关参数与回调参数类型的匹配关系、回调参数类型和替换参数值之间的匹配关系。
12.优选的,步骤2中,基于回调参数表中回调参数类型和替换参数值之间的匹配关系,对回调参数的参数值进行替换。
13.优选的,生成用户请求的用户为平台的授权用户,并允许基于oauth2.0实现对于授权第三方的接入;用户请求对应于授权第三方的、实现过参数替换的api接口的调用。
14.优选的,平台为基于oauth2.0实现第三方应用授权接入的平台,其中包括oauth2.0服务器。
15.优选的,当调用的响应结果与替换参数值之前的响应结果不一致,则判定参数值发生了替换,api接口中存在漏洞。
16.优选的,用户请求中授权码的获取方式为:基于arp攻击拦截http流量,并从所述http流量中解析明文授权码;或者,伪造http referer以获取所述授权码;或者,基于burpsuite截取http流量,以获取未使用过的授权码。
17.本发明第二方面,涉及一种oauth2.0开放式重定向漏洞的检测系统,其中,系统采用如本发明第一方面中所述的一种oauth2.0开放式重定向漏洞的检测方法实现。
18.本发明的有益效果在于,与现有技术相比,本发明中的一种oauth2.0开放式重定向漏洞的检测方法及系统,能够通过对于api接口中的uri字段进行检测,寻找uri回调参数,并根据预设的回调参数的类型和替换方法,对uri进行修改,并通过新的用户请求,实现api接口中的漏洞检测。本发明方法简单、效果良好,能够从根本上检测开放式重定向过程中uri参数被修改的问题,从而实现对于漏洞的补救和预防。
附图说明
19.图1为本发明一种oauth2.0开放式重定向漏洞的检测方法的步骤示意图。
具体实施方式
20.下面结合附图对本技术作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本技术的保护范围。
21.图1为本发明一种oauth2.0开放式重定向漏洞的检测方法的步骤示意图。如图1所示,一种oauth2.0开放式重定向漏洞的检测方法,其中,方法包括步骤1至步骤3。
22.步骤1,对于oauth2.0授权的第三方的api接口中的uri字段进行检测,发现并记录其中涉及到的所有回调参数。
23.首先,本发明中的方法中,为了实现对于uri字段中相关的回调参数的具体取值内容进行修改,需要首先判断api接口中存在哪些回调参数。
24.具体来说,现有技术中,大多采用开放平台与第三方合作的方式实现多种互联网的业务。通过这种合作方式实现的业务,能够简化第三方应用代码编写过程中的复杂度,另外,也能够将开放平台中的用户充分的导入至第三方应用中。对于开放平台来说,则能够更加便捷的为用户提供各种定制化的服务。
25.通常,开放平台会制作api规则和提供api接口,以供第三方应用调用,从而实现业务的导通和用户的接入。
26.然而,由于api接口的安全性受限,如今主流的开放平台基本都会通过oauth2.0的方式实现对于用户的认证,和对于用户接入第三方应用请求的处理。本发明中的方法,正是针对于这一过程中存在的风险实现的检测。
27.具体来说,用户为了接入第三方应用,会从开放平台获取授权码,从而获得第三方应用发送给开放平台的重定向地址或字段,本发明中,也就是redirect_uri,其中的uri是指统一资源标识符(uniform resource identifier)。在这个过程中,当用户的客户端回调uri时,如果uri中的参数内容发生了篡改,则用户回调的响应结果就可能发生异常。
28.因此,本发明中,为了检测到uri中是否有参数内容发生了篡改,会模拟uri篡改的过程,从而实现对漏洞的检测。为了模拟uri中参数的篡改过程,本发明步骤1中首先对于api接口的uri中所有的回调参数进行了提取。本发明中,可以采用现有技术中常用的扫描器来实现回调参数的提取。
29.优选的,所有回调参数至少包括redirect_uri参数和destination参数。
30.本发明中,各类回调参数的内容可以根据开放平台所提供的api接口的内容所确定。但是一般来说,uri中可以包括重定向的网站地址参数redirect_uri和入侵检测的目的地址参数destination等相关的回调参数。
31.步骤2,基于预先定义的回调参数表,对步骤1中获取的所有回调参数的类型进行匹配,并基于匹配的结果对回调参数的参数值进行替换。
32.优选的,预先定义的回调参数表中,不仅包括预先定义的回调参数类型,还包括api接口中相关参数与回调参数类型的匹配关系、回调参数类型和替换参数值之间的匹配关系。
33.需要说明的是,本发明中的回调参数表可以以txt文件的形式进行存储。在该文件
中,不仅包括开放平台各类api接口中所包含的所有回调参数,也包括各种回调参数的类型,以及如果发现了这一回调参数后,能够对回调参数的取值进行替换的预设参数值。
34.另外,回调参数的名称、所属于的api接口、回调参数类型和替换用的预设参数值之间可以采用一一对应的方式实现记录。因此,这一回调参数表,就可以用于后续的回调参数中取值的替换和本发明的检测方法了。
35.优选的,步骤2中,基于回调参数表中回调参数类型和替换参数值之间的匹配关系,对回调参数的参数值进行替换。
36.本发明中,正式基于txt文件中所记录的对应关系,实现对于不同回调参数中参数值的替换的。
37.步骤3,模拟用户请求,以调用实现过参数替换的api接口,并基于调用的响应结果实现对api接口中漏洞的检测。
38.本发明中,在完成了回调参数中参数值的替换后,就可以实现漏洞的检测了。
39.优选的,生成用户请求的用户为平台的授权用户,并允许基于oauth2.0实现对于授权第三方的接入;用户请求对应于授权第三方的、实现过参数替换的api接口的调用。
40.本发明中,会首先模拟用户请求,该用户请求可以是一个第三方平台的真实用户,也可以是采用现有技术中的方法实现的对真实用户的模拟。如果是对真实用户的模拟,那么本发明需要首先获得开放平台给予用户的授权码。
41.通过该用户的授权码,用户就可以请求开放平台实现客户端与第三方应用之间的连接。在连接第三方平台的过程中,用户会使用开放平台提供的回调参数,而如果回调参数发生被替换的情况,那么开放平台反馈给用户的网址就会发生问题,至少与未发生回调参数被替换前的网址是不同的。这种不同,并不局限于不同源的地址,也包括同源下的不同地址。
42.优选的,平台为基于oauth2.0实现第三方应用授权接入的平台,其中包括oauth2.0服务器。这里所述的平台,也就是上文中的开放平台,其中至少包括oauth2.0服务器,以实现第三方应用的接入。
43.优选的,当调用的响应结果与替换参数值之前的响应结果不一致,则判定参数值发生了替换,api接口中存在漏洞。
44.优选的,用户请求中授权码的获取方式为:基于arp攻击拦截http流量,并从http流量中解析明文授权码;或者,伪造http referer以获取授权码;或者,基于burpsuite截取http流量,以获取未使用过的授权码。
45.本发明中,为了实现对于用户请求的模拟,可以采用多种不同的方式实现授权码的获取。该授权码获取过程中,可以采用上文中提到的一种或多种获取授权码的方式来实现模拟的非真实用户的请求被开放平台所接受。
46.如果本发明的方法发现了api接口中有相关的uri参数被更改,就可以将这种被修改的参数,以及相关信息,例如修改的内容,对应的api接口等记录到数据库中,已备后续对于api接口安全性的改进。
47.本发明一个实施例中,选取了6个能够提供第三方登录的服务平台商进行实验,分别为腾讯qq、微信、新浪微博、百度、人人和豆瓣。在前500的中文网站中进行预筛选,有233个网站实现了针对上述6个开放平台的第三方登录服务。故本发明实施例中就是基于这233
个网站进行账户劫持攻击实验的。
48.授权劫持实验需满足以下条件:
49.(1)redirect_uri是否可修改是根据自动化扫描系统的oauth callback模块在检测过程中判定的。
50.(2)本发明中通过拦截http流量或者插入图片获取授权码。在拦截http流量窃取授权码的方式中,当redirect_uri的参数值被修改为一个使用http协议进行通信的网站时,攻击者在同一局域网通过arp(address resolution protocol,地址解析协议)攻击来拦截任何发送至目标站点的流量,从而从拦截的流量中解析出授权码。在插入图片的方式中,访问一个插入图片的网站会发送两次请求,攻击者可以发出插入远程图片请求,并将该请求发送到远程服务器上,从而通过referer获得授权码。另外,由于授权码与当前会话之间具有绑定关系,因此本发明中还可以通过使用burpsuite截取流量,从而获得未使用过的授权码,然后利用授权码重新构造新的请求,判断是否能够成功登录。
51.这是因为,api接口中的各种回调参数,例如redirect_uri等可被修改的原因大多是因为开发者在开发api接口的过程中未对授权跳转目录进行严格限制。当redirect_uri可被攻击者修改时,攻击者通常会将跳转地址修改为一个使用http协议的网站,故理论上攻击者能够获得授权码的api接口的比例与存在oauth callback漏洞的api接口的比例大致相同。另外,网站能够嵌入远程图片的主要原因是网站未对外来图片源进行设置。
52.实现自动化漏洞扫描框架后,利用其中的oauth callback检测模块对一些网站进行检测,在该实施例中,发明者成功的发现很多网站的第三方登录的restful api的redirect_uri可以被修改,进而发现有些网站存在账户劫持的风险。除此之外,该实施例还能够实现两种不同的oauth callback扫描的运行方式,一种是通过命令行直接运行,另一种是通过web界面进行操作。最终,本发明方法不仅实现了为开发人员在进行restful api的开发时检测当前restful api是否存在漏洞,而且还实现了线上的api接口的漏洞检测,大幅提高了api接口的安全性从而降低不必要的损失。
53.表1和表2为上述实施例的检测结果。如表1所示,现有技术中绝大多数68.67%的网站存在着oauth callback的漏洞,同时这些网站也能够被攻击者轻易的获取用户的授权码。另外存在12.87%的网站能够被通过嵌入远程图片的方式被攻击者获取授权码,另外,也有约60%左右的用户存在授权码未绑定当前会话的问题。综上,根据各种不同的方式获取授权码,并被攻击者实施并完成账户劫持攻击的网站,占所有网站的约45.49%,这一个数量还是非常多的。因此,本发明中的这种漏洞检测方法,能够使得开放平台或第三方应用网站及时的发现授权过程中发生的问题,以及代码的漏洞,从而实现了漏洞的修补和改进。
54.类别网站数量/数量占比存在oauth callback漏洞160/68.67%能获取授权码的160/68.67%能嵌入远程图片的30/12.87%授权码未绑定当前会话的139/59.66%能够完成账户劫持攻击的106/45.49%
55.表1 233个网站的redirect uri检测结果
56.另外,本发明中对于不同的开放平台,也就是6个不同的服务提供商进行了分析,
发现了其提供的api接口中回调参数能够被修改的程度。其中,只有两个服务提供商的回调参数不会被本发明的检测方法修改,而其他的四个平台均可以被修改。另外,流行度数据是指这些平台被本发明中的排名前500的网站以第三方的形式接入的程度。
57.服务提供商流行度回调uri可修改度平台a211/90.56%0平台b146/62.67%38/26.03%平台c192/82.40%143/74.47%平台d10/4.29%5/50.00%平台e13/5.58%9/69.23%平台f9/3.86%0
58.表2 6个平台的账户劫持分析结果
59.本发明的有益效果在于,与现有技术相比,本发明中的一种oauth2.0开放式重定向漏洞的检测方法及系统,能够通过对于api接口中的uri字段进行检测,寻找uri回调参数,并根据预设的回调参数的类型和替换方法,对uri进行修改,并通过新的用户请求,实现api接口中的漏洞检测。本发明方法简单、效果良好,能够从根本上检测开放式重定向过程中uri参数被修改的问题,从而实现对于漏洞的补救和预防。
60.本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1