浅析Web应用中的越权访问漏洞
2020-05-11赵少飞杨睿超孙蕊刚
◆赵少飞 杨 京 杨睿超 孙蕊刚
浅析Web应用中的越权访问漏洞
◆赵少飞 杨 京 杨睿超 孙蕊刚
(陕西省网络与信息安全测评中心 陕西 710065)
2020年伊始,新冠状病毒肆虐,在全民万众一心抗击疫情之际,不法分子利用疫情题材进行各种网络攻击行为,面对新的各类网络攻击行为如何进行有效的防范,我们需要从根本问题上进行考虑,不论怎样的网络攻击,都是利用Web应用中存在的安全漏洞或缺陷进行攻击,只有了解各类安全漏洞及缺陷的原理,就有助于我们掌握Web应用本身的安全状况,进而采取有效防控措施。本文主要讲解的是被列入2017 OWASP top10中失效的访问控制,即越权访问。
越权访问;安全漏洞;OWASP
回顾2019年,大规模的数据泄露事件频频发生,呈现爆发递增的趋势。据安全情报供应商Risk Based Security(RBS)的2019年Q3季度的报告,2019年1月1日至2019年9月30日,全球披露的数据泄露事件有5183起,泄露的数据量达到了79.95亿条记录。2019年7月,智能家居公司Orvibo的数据库泄露涉及超过 20 亿条IoT日志,2019年9月,厄瓜多尔Novaestrat公司服务器发生数据泄露涉及超过2000万人的记录。大量的信息数据泄露事件发生都是由攻击者利用信息系统本身的一些安全漏洞,拿到系统权限而获得到的,而越权漏洞就是其中最常见的一种安全漏洞。
1 何为越权
越权,意思指超出了权限或权力范围。大多数Web应用程序都具备权限控制功能,一旦权限控制功能设计存在缺陷,攻击者就可以利用这些缺陷对Web应用程序进行未经授权访问,以此来窃取敏感数据,这就是我们通常说的越权漏洞。
2 越权分类
越权一般分为水平越权、垂直越权及权限框架缺陷三类。
(1)水平越权
水平越权是指权限平级的两个用户之间的越权访问,也是攻击者尝试访问与他拥有相同权限的用户的资源。例如,某电网系统有省级和市级两级管理员, A账号为A市管理员,B账号为B市管理员,两个账户访问该系统的权限是相同的,但是A账号涉及的资源信息和B账号涉及的资源信息不同。此时,A账号通过攻击手段访问了B账号的资源信息,这就是水平越权漏洞。
(2)垂直越权
垂直越权是指权限不等的两个用户之间的越权访问,也可以理解为攻击者利用一个低权限的用户通过修改用户参数可以拿到高权限用户的访问资源。例如某电网系统分为省级管理员和市级管理员,省级管理员可以对全省电网系统具有管理权限,而市级管理员只有对该市电网系统具有管理权限,如果市级管理员能利用某种攻击手段访问到省级管理员所具有管理功能,那就是垂直越权。
(3)权限框架缺陷
权限控制框架是实现权限控制功能的基础,权限控制框架在设计之初就存在缺陷,很容易导致权限控制相关功能失效。例如在用户访问cookie中使用简单的权限标识来标记用户的权限等级或使用用户请求参数中所带的简单用户ID来控制用户权限等,都是典型的权限框架缺陷。
3 产生条件
Web应用程序访问流程一般为:登录—提交请求—验证权限—数据库查询—返回结果。如果验证权限环节出现问题,就会导致越权。一般的Web应用程序在确认用户通过登录后即认可用户的身份,从而不会对用户权限进行进一步的验证,往往会导致越权。
(1)文件下载
许多Web应用程序都具有下载功能,允许会员下载一些xls、word等类型的静态文件,但如果对这些文件的 URL没有做权限限制,一些URL地址一旦泄露,任何人都可以下载,一旦攻击者知道这些URL命名规则,则会对服务器的文档进行批量下载。
(2)对象引用
通过修改用户访问参数可以产生越权,例如在访问A用户信息时,地址栏中会显示用户A的ID信息,对用户A的ID信息进行修改,修改成其他人的ID信息返回其他人的信息,这就产生了越权。
(3)隐藏的URL
有些Web应用程序管理员会对一些管理URL进行隐藏,一般用户看不到,只有通过管理员账户才能显示,这些隐藏的URL利用URL不可见来实现访问控制,一旦这些URL地址泄露或被攻击者猜到后,就会导致越权。
(4)多阶段功能
多阶段功能是一个功能有多个阶段的实现。比如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者通过抓包的方式直接修改参数值,导致可修改任意用户密码。
(5)平台配置错误
一些Web应用程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员,则不能访问,但当平台配置出现错误时,也许就会导致越权访问。
4 越权测试
对于渗透测试,可以对一些请求进行抓包操作,或者查看请求的URL地址,对于关键的参数,修改下值,查看返回结果来初步判定。登录两个权限不同的账户,相互辅助来确定是否存在越权。
常见的越权高发功能点有:依据订单号查找订单、依据用户 ID 查看账户信息、修改/找回密码等。
对于代码审计,可以先查看前端的网页源码,查看一些操作的表单提交的值。查看配置文件和一些过滤器,看是否对URL有相关的筛选操作。最后查看后台处理逻辑,是否存在身份验证机制、逻辑是否异常,有时的逻辑漏洞也可导致越权操作。
一般测试时,需要权限不同的两个账户测试,大概流程图如图1。
5 越权防范
越权的威胁在于一个账户即可控制全站用户数据,当然这些数据仅限于存在漏洞功能对应的数据。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。针对越权漏洞产生的原因制定出响应的防范措施。
(1)通过采用类似spring security等成熟的权限管理框架,规范系统的用户权限。
(2)可以从用户的加密认证cookie中获取当前用户id,防止攻击者对其修改。或在 session、cookie 中加入不可预测的 user 信息。
(3)每次页面访问时对用户权限进行验证,采用表单或其他参数提交用户进行访问操作的凭证时,应尽可能采用难以猜测的构造方式(增加字母及随机数字等)或采用复杂的加密算法加密后提交,在客户端和服务器端对提交的凭证或会话的权限进行验证。
(4)对管理功能模块进行严格的权限验证,如非必要建议不对互联网开放或进行网络层的访问控制。
图1 测试流程图
6 结束语
在5G、大数据及物联网流行的当下,信息数据的保护显得尤为重要,企业作为信息数据的保管者和运营者,防止攻击者利用信息系统存在的安全漏洞对系统进行攻击是企业运营的一个重要环节。越权漏洞作为Web应用中的一种常见安全漏洞,利用简单且危害巨大,一旦被利用成功,会导致企业大量敏感信息外泄,对信息系统的机密性和完整性造成破坏。如何应对安全漏洞的频发,企业应未雨绸缪,对重要的数据资产服务器进行重点防护与安全配置检查,定期进行漏洞扫描与评估等措施,并引入一些数据安全新型技术防止攻击者利用信息系统的安全漏洞对企业信息造成破坏。
[1]赵川,徐雁飞.一种越权漏洞攻击方法实例研究[J].信息安全研究,2019(03).
[2]李艳华,郝艳,李海威.一种改进的Web应用越权漏洞自动化检测方法研究及实现[J].警察技术,2017(04).