未进行功能级访问控制

来源:互联网 发布:java进阶路线 编辑:程序博客网 时间:2024/05/24 07:43
威胁载体:
任何可以访问网络的人都可以向你的应用发送一个请求。是否匿名用户可以访问私有功能或者普通用户的一个私有功能?
攻击媒介:
攻击者,一个获取了权限的用户,通过简单地改变URL或者一个参数对私有功能进行访问。是否访问被授权?匿名用户可以访问未被保护的私有功能.
安全弱点:
应用并不总是对功能进行正确的保护。有时,功能级的保护石通过配置进行管理的,有的时候,开发者必须使其包含正确的代码检查,但是他们忘记了。
检测这类漏洞是很容易的。最困难的地方是找到哪些页面(URL)或者功能去攻击。
技术影响:
这样的漏洞允许攻击者访问未授权的功能,管理员级的功能是这类攻击的主要目标。
业务影响:
考虑泄露的功能和他们处理的数据所具有的商业价值。
同时考虑这个弱点被公开后会对你声誉产生的影响

我是否在“未进行功能级访问控制”容易受到攻击?
找出一个应用是否在正确的严格控制功能层访问上存在失误的最好的办法是去验证每个应用的功能:
1.UI界面是否展示出了非授权功能的导航?
2.服务端授权或授权检查缺失?
3.服务器端的检查是否仅仅依靠攻击者提供的信息?
用一个代理,使用一个有权限的角色,浏览你的应用。然后再使用一个低权限角色访问受限制的页面。如果服务端的响应类似,你就很有可能存在这个弱点。一些测试代理对这类分析提供直接的支持。
你也可以在代码中检查访问控制的实现。试着通过代码跟踪一个单权限请求并检验权限模式。然后搜索代码库,查找哪里这些模式没有被遵循。
自动化工具不太擅长发现此类问题。

我如何防止“未进行功能级访问控制”?
你的应用程序应该有一个统一的、简单的分析授权的模块,并且在你所有业务功能中进行调用。
这种保护是由一个或多个与应用程序代码无关的外部组件提供的。
1.思考管理权限的过程,并且确保你可以很容易的进行更新和审查。不要进行过硬编码。
2.执行机制应该拒绝所有的默认访问,为每个指定角色赋予明确的访问每个功能的权限
3.如果这个功能是在工作流程中被调用的,要确保其情况在允许访问的正确状态中
注意:大多数网络应用不展示无授权的功能的链接和按钮,但是,这种:“表现层访问控制”并不真正的提供保护。你必须也要对控制器或者业务逻辑实现检查。
攻击场景举例:
场景1:攻击者简单地强制浏览目标URL。下面的URL要求有权限才能访问。管理员的权限也需要访问页
http://example.com/app/getappInfo
http://example.com/app/admin_getappInfo
如果一个未授权用户可以访问任何一个页面,那么这就是一个漏洞。如果一个授权的,无管理员权限的用户,允许访问admin_getappInfo页面,这也是一个漏洞。
场景2:一个页面提供一个“动作”参数到被调用的指定的功能,并且不同的动作要求不同的角色。如果这些角色不是被强制的,那这就是一个漏洞。
0 0
原创粉丝点击