freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

WEB漏洞——越权
thNick 2025-03-27 13:41:52 78776
所属地 江西省

越权漏洞简介

越权,从字面意思理解,指的是超出了既定的权限或权力范围。在大多数的 WEB 应用程序中,都设置了权限划分与控制机制。然而,一旦权限控制功能在设计上存在缺陷,攻击者便有机可乘,他们能够利用这些漏洞,访问原本未经授权的功能或数据,这便是我们常说的越权漏洞。

当攻击者成功越权后,往往可以实施一系列操作,比如查看敏感信息,或者进行数据的增加、删除、修改和查询等操作。

越权漏洞属于一种较为常见的逻辑安全漏洞。其产生的根源在于,服务器端对客户端提交的数据操作请求过度信任,在处理请求时,忽视了对用户操作权限的严格判定。这就使得攻击者只需修改相关参数,便有可能获取其他账户的数据增、删、查、改等功能,进而引发越权漏洞。

水平越权与垂直越权

1743003555_67e41fa359a3771e146e0.png!small?1743003555440

水平越权

水平越权,又称同级别越权,也被叫做访问控制攻击。当 Web 应用程序接收用户请求,对某条数据执行修改操作之际,存在两种可能引发漏洞的情况:其一,程序根本未对数据所属人加以判断;其二,虽有判断数据所属人的环节,但却是从用户提交的表单参数里获取 userid。这就使得攻击者有机可乘,他们能够自行修改 userid,进而篡改那些并不属于自己的数据。实际上,只要涉及更新语句的操作,都有出现这种漏洞的风险。简单来讲,就是攻击者通过更替诸如 ID 这样的身份标识,让 A 账号得以获取(包括修改等行为)原本属于 B 账号的数据。

常见场景

1、基于用户身份的ID
在使用某个功能时通过用户提交的身份ID (用户ID、账号、手机号、证件号等用户唯一标识)来访问或操作对应的数据。
2、基于对象ID
在使用某个功能时通过用户提交的对象ID (如订单号、记录号)来访问或操作对应的数据。
3、基于文件名
在使用某个功能时通过文件名直接访问文件,最常见于用户上传文件的场景。

垂直越权

垂直越权指的是不同级别或不同角色间的越权行为,它又可细分为向上越权与向下越权。向上越权,即低级别用户试图获取高级别用户的资源。例如在某个系统里,存在普通用户和管理员用户之分,管理员拥有系统管理功能,普通用户则没有,这意味着管理功能存在垂直权限的区分。倘若普通用户借助某些攻击手段,得以访问管理功能,这便属于向上越权,通俗来讲就是 “以下犯上”。而向下越权,是指高级别用户去访问低级别用户的信息,这显然也是不妥的,毕竟每个人都应有自己的隐私空间。

常见场景

1、未认证账户访问无需认证就能访问该功能
2、不具备某个功能权限的账户认证后成功访问该功能

成因

通常情况下,越权漏洞较常出现在那些需要用户登录的权限页面中的增、删、改、查功能区域。当使用者针对权限页面里的信息执行上述操作时,后台系统理应针对当前用户所拥有的权限展开校验工作,以此判定其是否具有执行对应操作的权限,进而做出相应反馈。不过,要是校验规则制定得太过简易,那就极有可能引发越权漏洞。

—前端安全造成:界面
判断用户等级后,代码界面部分进行可选显示
是普通用户只显示普通用户要的操作(查看、修改等)
是管理员只显示管理员要的操作(添加、删除等)

—后端安全造成:数据库
user 表(管理员和普通用户同表),如下表

id

usename

password

type

1

root

root123

root

2

admin

admin123

admin

案例(pikachu)

水平越权案例

已知三个账号:
lucy/123456
lili/123456
kobe/123456

首先我们随便登录一个账号,比如 lucy,同时抓包,发现显示了& username & password

1743049196_67e4d1ecf28f93f314057.png!small?1743049197130

放包肯定是能登陆上去的。那我们把 username 改成 kobe 或者 lili 后放包呢?

1743049196_67e4d1ecee3f40a1a3802.png!small?1743049197130

放包,成功登录kobe

1743049196_67e4d1ecba43200d038f4.png!small?1743049197131

实现水平越权,拿到kobe的信息

垂直越权

这里有两个用户admin/123456,pikachu/000000,admin是超级boss

1743049453_67e4d2ed797ab05618e9b.png!small?1743049453255

随便登录一个账号

1743049570_67e4d3625a81e79272a2b.png!small?1743049569950

这个,明显是管理员,我们登录pikachu普通用户

1743050710_67e4d7d67d8d3652f9b0e.png!small?1743050710267

发现唯一的不同是管理员账户多了一个添加用户的功能。猜测此处是要不使用管理员账户来获取添加用户的功能。

bp抓包,我们尝试修改pikachu登陆包绕过

1743050967_67e4d8d7d7e60a94bea86.png!small?1743050967463

1743050932_67e4d8b4e216d0a07c897.png!small?1743050932620

1743050967_67e4d8d7cbcc3ac9f2593.png!small?1743050967464

很明显失败了

管理员添加用户的数据包

1743053926_67e4e466bb477a120ca81.png!small?1743053926595

那么我们可以伪造数据包,进行垂直注入(注意需要将cookie值更换为自己普通用户的cookie)

抓普通用户的包

1743053926_67e4e466d4034cf76f3d1.png!small?1743053926596

将pikachu这个普通用户的Cookie信息复制。

PHPSESSID=cfgc60qfdbqlk0baso2opbrpk1


在重发器里面,将管理员的Cookie值换成普通用户的Cookie,放包即可。

1743053926_67e4e466ef503d1395d98.png!small?1743053926596


1743053926_67e4e466de2805db5af57.png!small?1743053926597

成功越权,创建

修复防御方案

1.前后端同时对用户输入信息进行校验,双重验证机制
2.调用功能前验证用户是否有权限调用相关功能
3.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
4.直接对象引用的加密资源 ID,防止攻击者枚举 ID,敏感数据特殊化处理
5.永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤

# 越权漏洞 # Pikachu
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 thNick 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
thNick LV.1
这家伙太懒了,还未填写个人描述!
  • 1 文章数
  • 2 关注者
文章目录