越权访问

admin 2025年3月18日22:35:50评论7 views字数 1954阅读6分30秒阅读模式

越权访问

首先来了解一下什么是访问控制,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

adminfalse改为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):越权访问

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月18日22:35:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   越权访问https://cn-sec.com/archives/3815589.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息