理论基础
-
未授权访问漏洞介绍
未授权访问漏洞是指应用系统对业务功能页面未进行有效的身份校验,在未登录且获知业务功能页面的访问地址前提下,直接访问未授权的页面、目录或资源,获取系统中的敏感信息或进行非法操作。
- 漏洞分类
- 服务/组件中存在未授权。如redis未授权、mongodb未授权等。通常挖掘这种未授权漏洞通过扫描器即可。
- WEB应用系统存在未授权。如某某CMS未授权文件上传、未授权创建账号等。此类未授权漏洞的发现需要的技巧更高。
-
未授权访问漏洞原理
应用系统未正确验证用户身份(Cookie、Token等),导致功能接口可以直接访问到。本质上为系统鉴权机制的缺陷。
- 测试方案
- 通过JS接口挖掘未授权访问漏洞,即寻找接口后通过构造请求方式尝试是否存在未授权访问漏洞。
- 对正常的请求进行测试,删除掉身份验证信息对接口进行判断是否存在未授权访问。
- 常见工具
- JS接口搜集:浏览器插件-FindSomething
- WEB接口挖掘:URLFinder
- 越权类测试:Burp插件-Autorize
- 漏洞危害
- 数据泄露(个人隐私信息、账户相关信息和系统信息等)
- 账户安全(通过未授权访问漏洞修改账户信息)
- 系统安全(通过未授权访问可能修改某些应用系统特定功能)
- 进一步利用
- 未授权访问漏洞的防御
- 对于每个功能的访问,需要明确授予特定角色的访问权限。
- 如果某功能参与了工作流程,检查并确保当前的条件是授权访问此功能的合适状态。
实践学习
漏洞环境以Pilot靶场为例:下载地址与部署教程
-
进入漏洞页面,使用管理员账号密码
admin/admin
登录,进入管理员:账户权限管理处: -
抓包,选择
pilot
用户,选择其UID为管理员权限,点击修改按钮: -
发现修改功能接口不存在Cookie认证或Token认证,即没有任何认证便可以修改数据,达到未授权访问标准。
-
对于该类漏洞挖掘,可以通过Burp插件(如Auth等)或是前台接口来发现,危害极大: