越权漏洞(Pikachu)

news/2024/9/27 5:58:02

原理

该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定,一旦权限验证不充分,就易致越权漏洞。

漏洞分类

越权访问漏洞主要分为水平越权、垂直越权。

img

水平越权:指攻击者尝试访问与他拥有相同权限的用户资源。例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),那么用户A访问数据B的这种行为就叫做水平越权访问。

img

垂直越权:由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

img

漏洞产生原因

通常情况下,一个 Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果。如果验证权限不足,便会导致越权。常见的程序都会认为通过登录后即可验证用户的身份,从而不会做下一步验证,最后导致越权。

\1. 通过隐藏 URL

实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用 URL 实现访问控制,但 URL 泄露或被恶意攻击者猜到后,这会导致越权攻击。

\2. 直接对象引用

这种通过修改一下参数就可以产生水平越权,例如查看用户信息页面 URL 后加上自己的 id 便可查看,当修改为他人的 ID 号时会返回他人的信息,便产生了水平越权。

\3. 多阶段功能

多阶段功能是一个功能有多个阶段的实现。例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者抓包直接修改参数值,导致可修改任意用户密码。

\4. 静态文件

很多网站的下载功能,一些被下载的静态文件,例如 pdf、word、xls 等,可能只有付费用户或会员可下载,但当这些文件的 URL 地址泄露后,导致任何人可下载,如果知道 URL 命名规则,则会便利服务器的收费文档进行批量下载。

\5. 平台配置错误

一些程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问。

pikachu

水平越权

查看提示后都是普通用户,登录lucy账号

image-20240508125938054

看到url里参数username=lucy以此来判断用户身份,试试改成lili,可以看到在登录lucy的情况下访问到了lili的用户信息,发生水平越权。

image-20240508130210854

这是因为查找用户信息时传入的参数是直接从url中获取的,没有校验当前用户是否为要查找信息的用户

改进:增加判断url传入的username和当前用户是否匹配,如果匹配则为$username赋值,若不匹配则不赋值。

垂直越权

查看提示超级用户:admin;普通用户:pikachu

我们先看看普通用户

image-20240508132052278

再看看超级用户,比普通用户多了用户管理选项

image-20240508132116036

我们点击添加用户,观察url

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php

删除用户

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=1

再删除一个用户,貌似参数id有什么规律

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=2

image-20240508132900539

再次用普通用户pikachu登录

登录后直接输入地址栏输入payload:

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php

顺利来到了添加用户的页面

添加用户为chacha

再次登录pikachu用户发现创建完成

image-20240508225413950

试试

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=3

并未删除成功

思考

op2_admin_edit.php(添加用户操作)

22-25行只验证了用户是否登录,如果没登录就跳转到登录页面,没有验证用户权限等级,但前端显示添加用户是权限等级为1的用户才能执行的操作,因此这里有垂直越权漏洞。

image-20240508230405404

op2_admin.php(删除操作)

主要是23~26行,判断了用户是否登录,是否权限级别为1(超级boss),如果任意一条不满足,就跳转到登录页面,没有垂直越权漏洞

image-20240508230539835

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/30558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

同单元格内计算加号个数

问题:一个单元格内若干个加号,计算其个数 函数公式解决:传统套路 =LEN(A2)-LEN(SUBSTITUTE(A2,"+",)) 新套路 =COUNTA(TEXTSPLIT(A2,"+"))-1 正则套路 =COUNTA(REGEXP(A2,"[^+]"))-1

rdp利用技巧总结

近期在项目中管理员在rdp挂载之后搞掉了管理员,想着有时间就整理下针对rdp的利用方法。针对挂盘的利用方法复制文件这个不多说,可以根据的不同的挂盘来决定是拖文件还是放启动项。有一些自动文件监控和拷贝的应用,如:https://github.com/cnucky/DarkGuardianDarkGuardian是一…

小小redis持久化,拿捏

前言 我们先来说说什么是持久化持久化顾名思义就是数据长久保存,Redis为什么需要持久化呢,好呆的问题,Redis数据是存储在内存中的,内存数据的特点就是一旦重启就什么都没了我们将文件由内存中保存到硬盘中的这个过程,我们叫做数据保存,也就叫做持久化。但是把它保存下来不…

表格结构转换(Power Query)

问题:左表转成右表let源 = Excel.CurrentWorkbook(){[Name="表1_5"]}[Content],添加公司名列 = Table.TransformColumns(Table.ExpandTableColumn(Table.Group(源, {"件号"}, {"内容", each Table.AddIndexColumn(_,"公司名",1)}), &…

实战中内网穿透的打法

前言在内网渗透时,一个WebShell或CobaltStrike、Metasploit上线等,只是开端,更多是要内网横向移动,扩大战果,打到核心区域。但后渗透的前提是需要搭建一条通向内网的“专属通道”,才能进一步攻击。可实战中因为网络环境不同,所利用的方式就不同。以下为自我总结“实战中…

Linksys MAX-STREAM AC2600 / Linksys EA8100 固件资源整合分享

注意:这款路由默认地址为192.168.10.1 初始化时选手动安装!!!官方固件 https://www.linksys.com/support-article?articleNum=49022 升级教程: https://linksys-sh.com/home-ea8100/firmware-update-ea8100 (适用于官方固件和Openwrt固件) 转存 V1 Firmware for StarHub(St…

MIT6S081课程笔记

MIT6S081 课程笔记 mit6s081 lecture notes Created: 2023-06-05T20:26+08:00 Published: 2024-05-12T12:13+08:00 Categories: OperatingSystem 关于这门课程使用到的资料:schedule: https://pdos.csail.mit.edu/6.S081/2020/schedule.html schedule 可以认为提供了资源(如 …

MIT6S081作业笔记

MIT6S081 作业笔记 mit6s081 homework notes Created: 2023-06-22T16:33+08:00 Published: 2024-05-09T11:17+08:00 Categories: OperatingSystem 6.S081 / Fall 2020 make qemu 运行 Ctrl-a x To quit qemu type make CPUS=1 qemu-gdb gdb-multiarch目录utilsleeppingpongprim…