越权访问
首先来了解一下什么是访问控制,A、B、C三个账户,每个账户只能访问自己有权限访问的资源,或者有权限执行的操作,这就是访问控制,如果访问控制失效(服务器只检查用户是否登录,未对其权限做验证),导致A账户可以访问B权限才能访问的资源或执行的操作,这就会导致越权访问漏洞。
水平越权
指相同权限账户之间的的越权访问,比如普通账户A可以访问普通账户B的资源。
垂直越权
指低权限账户和高权限账户之间的越权访问,比如普通账户A可以访问管理员账户B的资源。
漏洞示例
修改URL参数
假设是一个获取个人信息的URL,如下:
http://example.com/userinfo?id=1
服务器对用户权限没有验证,只根据id参数返回响应的内容,通过修改id为其他用户,查看其他用户信息。
http://example.com/userinfo?id=2
修改请求体参数
假设是一个修改个人信息的请求,如下:
POST /update_userinfo
Host: example.com
Content-Type: application/json
{
"id": 1,
"name": "hacker",
"email": "[email protected]"
}
修改id参数为其他用户,修改其他用户信息。
POST /update_userinfo
Host: example.com
Content-Type: application/json
{
"id": 2,
"name": "hacker",
"email": "[email protected]"
}
修改Cookie字段
获取个人信息功能。
GET /userinfo HTTP/1.1
Host: example.com
Cookie: user_id=1; session_token=abcde12345
修改user_id
为其他用户,获取其他用户信息。
GET /userinfo HTTP/1.1
Host: example.com
Cookie: user_id=2; session_token=abcde12345
还有一种情况是修改用户角色权限等级的,比如字段role
。
GET /userinfo HTTP/1.1
Host: example.com
Cookie: role=user; session_token=abcde12345
比如user
为普通用户权限,尝试修改为admin
管理员权限。
GET /userinfo HTTP/1.1
Host: example.com
Cookie: role=admin; session_token=abcde12345
或者是通过admin
字段控制用户权限,如下:
GET /userinfo HTTP/1.1
Host: example.com
Cookie: admin=false; session_token=abcde12345
将admin
的false
改为true
。
GET /userinfo HTTP/1.1
Host: example.com
Cookie: admin=true; session_token=abcde12345
修改其他用户标识
如果遇到其他用户标识,也可以修改为其他用户进行测试,比如用户名、邮箱、手机号等等,主要是判断服务器通过什么参数或字段来验证用户身份及权限。
Autorize
Autorize是一个Burp插件,专门用来测试越权和未授权,插件是使用Python写的,如果要在Burp中安装并使用Autorize,需要在Burp中配置Jython环境,网上有教程,这里不再说,Autorize直接在Burp的插件商城安装即可。
使用如下:
首先准备两个账号,一个普通账号权限,一个管理员权限,登录普通账户,复制其Cookie到插件的Cookie栏中,再登上管理员账户,然后开启自动化(Autorize is on),接下来在管理员账户上点击需要测试的功能(比如新增账户,删除账户等等),Autorize收到请求后会自动对其进行漏洞检测。
三种颜色,红色(Bypassed!)代表存在漏洞,绿色(Enforced!)代表不存在漏洞,橙色(Is enforced???)代表可能存在漏洞,需要手动验证。Unauth
代表未授权,Authz
代表越权,也可以通过对比响应包长度判断,如果与原始请求的响应长度一致,则表示漏洞存在。
预防
预防越权漏洞的关键是必须在服务器进行权限校验(如使用RBAC/ABAC),不能仅依赖前端控制;使用不可预测的标识符(UUID)替代自增ID(1、2、3、4、5、6),比如550e8400-e29b-41d4-a716-446655440000
。
总结
如果你对安全感兴趣,别忘了关注我们,持续为你带来最新的安全动态与技术分享!
原文始发于微信公众号(AlertSec):越权访问
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论