风炫安全WEB安全学习第三十八节课 越权漏洞演示与讲解
越权漏洞
0x01 漏洞介绍
越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响应包中,页面不一定能看见)中返回登录名、登录密码、手机号、×××等敏感信息,如果存在平行越权,通过对用户ID的遍历,就可以查看所有用户的敏感信息,这也是一种变相的脱裤,而且很难被防火墙发现,因为这和正常的访问请求没有什么区别,也不会包含特殊字符,具有十足的隐秘性。
水平越权
水平越权指的是攻击者尝试访问与他拥有相同权限的用户的资源,怎么理解呢?比如某系统中有个人资料这个功能,A账号和B账号都可以访问这个功能,但是A账号的个人信息和B账号的个人信息不同,可以理解为A账号和B账号个人资料这个功能上具备水平权限的划分。此时,A账号通过攻击手段访问了B账号的个人资料,这就是水平越权漏洞。
垂直越权
权限ID不变,权限类型改变;如普通用户可使用管理员权限进行操作。如你登录时,发现cookie中有一个roleID的角色参数,那么可以通过修改该ID为1或者0,根据具体情况来定,就可以使用管理员权限了!
0x02 漏洞利用
基于用户ID的越权
举个例子:
https://www.xxx.com/user1/userinfo.php?user_id=user1
https://www.xxx.com/user1/userinfo.php?user_id=10001
我们登陆某个系统后,看到某些功能上获取信息的方式类似于上链接时,可以初步判断获取信息的方式为根据user_id来获对应的用户信息,如果参数为用户名,我们可以手机用户名字典来枚举信息,根据返回值判断是否存在问题。当然如果枚举较大,系统用户数量又不是很多的情况下,可以尝试注册新用户,利用新用户的用户名来测试是否可以获取到用户信息。
如果参数为一个固定的数字串时,遍历数字串即可,这种情况下是系统对每个注册用户进行了一个用户id的排序,在众多的开源CMS上都有使用,当然这个字符串也有可能是随机,如果是随机的,量不大的情况下可以采用遍历的形式获取,量较大可以利用burp的随机数爆破,或者同样自己注册账户来测试。
基于功能对象ID的越权
举个例子:
https://www.xxx.com/user1/userticket.php?user_order=100001
https://www.xxx.com/user1/userticket.php?user_order=49ba59ab
此问题大量存在于用户订单、购买、查询等功能的商家CMS上,例如以上地址,如果user_order是订单编号,那么我们可以尝试遍历订单地址来查询是否存在越权。如果编号并不是单纯的订单数字串,而是类似如上的编码字符串,相信自己的运气的话可以尝试某些编码的情况,例如BASE64、MD5。猜测不到,或者不能明显的看出来是如果做的处理,注册新账号重新下单,会是简单方便的选择。
基于未授权访问的越权
举个例子:
https://www.xxx.com/user1/user.php?user=user1@user.com
在一些系统上登陆用户后,可以看到类似如上的地址链接,可能你会觉得这个跟问题1类似,但是也有可能多一张问题情况,在非登陆的情况下仍然可以访问到详细信息。如果可以,则证明后端对身份的效验只是基于参数user,并没有效验用户的session是否已登陆。此问题曾发现于一个系统后端支付订单复核的功能中,问题可想而知。
基于功能地址的越权
举个例子:
https://www.xxx.com/user/getuserinfo.php
如上地址,正常情况下,只访问此后台地址时,一般会跳转到登陆地址,或者登陆后用来查看某个具体的功能,获取数据的情况根据访问的链接地址来,理论上此功能并不存在越权可能,因为没有我们可以修改的参数。但是对权限及功能的限制可能只局限于用户菜单的限制,根据常用链接,可以猜测是否存在以下地址:
/getuserorder.php
/adduser.php
/deluser.php
/getalluser.php
/todetailpage.php
/ordercreate.php......
因为在绝大部分系统中,开发为了方便区别功能和页面,通常会利用对应的英文来命名文件,但这些文件并不是任意用户都可以访问到的,所以可以猜测访问地址是否英文的拼接来猜测路径。对于此问题的快捷测试是获取一个高权限账号,当然对于未授权测试来说,很难实现。
基于接口身份的越权
https://www.xxx.com/user/userinfo.php
post:
{'userid':'10001','username':'name','userage':'18','usermobile':'18080808888'}
例如如上接口,修改用户信息,当我们点击某个系统的修改自身资料时,会发送一个类似的json数据包,其中userid对应我们自己的用户id,修改后,可以修改对应id的用户资料。修改方式类似问题1。区别在于一个页面可见,一个页面不直观可见,一个查询,一个修改。需要配合其他越权查询漏洞,或者账号来识别是否修改成功。
0x03 如何修复
建议做一个过滤器,对权限进行全局校验(每次调用某个接口时,可先对权限进行校验)。大体流程是:第一步清洗URL地址,并提取Api接口名称;第二步从session中提取当前登录用户的userid;第三步提取当前用户的角色id;第四步判断当前用户对应的角色是否有权限访问当前Api接口(检查垂直越权);最后判断当前登录用户是否对目标对象有操作权限(检查水平越权)。
推荐使用JWT
验证
参考:
http://blog.evalshell.com/2020/12/23/风炫安全web安全学习第三十八节课-越权漏洞演示与/
风炫安全WEB安全学习第三十八节课 越权漏洞演示与讲解的更多相关文章
- 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击
风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...
- 风炫安全web安全学习第三十节课 命令执行&代码执行基础
风炫安全web安全学习第三十节课 命令执行&代码执行基础 代码执行&命令执行 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行 ...
- 风炫安全web安全学习第三十七节课 15种上传漏洞讲解(二)
风炫安全web安全学习第三十七节课 15种上传漏洞讲解(二) 05后缀名黑名单校验之上传.htaccess绕过 还是使用黑名单,禁止上传所有web容器能解析的脚本文件的后缀 $is_upload = ...
- 风炫安全web安全学习第三十六节课-15种上传漏洞讲解(一)
风炫安全web安全学习第三十六节课 15种上传漏洞讲解(一) 文件上传漏洞 0x01 漏洞描述和原理 文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把 ...
- 风炫安全web安全学习第三十五节课 文件下载和文件读取漏洞
风炫安全web安全学习第三十五节课 文件下载和文件读取漏洞 0x03 任意文件下载漏洞 一些网站由于业务需求,往往需要提供文件下载功能,但若对用户下载的文件不做限制,则恶意用户就能够下载任意敏感文件, ...
- 风炫安全web安全学习第三十四节课 文件包含漏洞防御
风炫安全web安全学习第三十四节课 文件包含漏洞防御 文件包含防御 在功能设计上不要把文件包含的对应文件放到前台去操作 过滤各种../,https://, http:// 配置php.ini文件 al ...
- 风炫安全web安全学习第三十一节课 命令执行以及代码执行演示
风炫安全web安全学习第三十一节课 命令执行以及代码执行演示 参考: http://blog.evalshell.com/2020/12/20/风炫安全web安全学习第三十一节课-命令执行以及代/
- 风炫安全web安全学习第三十二节课 Python代码执行以及代码防御措施
风炫安全web安全学习第三十二节课 Python代码执行以及代码防御措施 Python 语言可能发生的命令执行漏洞 内置危险函数 eval和exec函数 eval eval是一个python内置函数, ...
- 风炫安全WEB安全学习第十七节课 使用Sqlmap自动化注入(一)
风炫安全WEB安全学习第十七节课 使用Sqlmap自动化注入(一) sqlmap的使用 sqlmap 是一个开源渗透测试工具,它可以自动检测和利用 SQL 注入漏洞并接管数据库服务器.它具有强大的检测 ...
随机推荐
- pyinstaller---将py文件打包成exe
pyinstaller可将Python脚本打包成可执行程序,使在没有Python环境的机器上运行. 1.pyinstaller在windows下的安装 直接在命令行用pip安装 pyinstaller ...
- 深入理解C#中的异步(一)——APM模式EAP模式
深入理解C#中的异步(一)--APM模式EAP模式 目录 深入理解C#中的异步(一)--APM模式EAP模式 1 使用异步编程的原因 2 异步编程模式 2.1 APM模式 2.1.1 APM模式示例代 ...
- XDown单文件版 下载工具 支持磁力等多种链接方式下载
原来的程序不带剪辑板探测,不支持迅雷链接等 增加功能后优化制作单文件版本. 下载类型为下图 magnet:?xt=urn:btih:836A228D932EF1C7EA1DD99D5D80B7CB0C ...
- C# 9.0新特性详解系列之五:记录(record)和with表达式
1 背景与动机 传统面向对象编程的核心思想是一个对象有着唯一标识,表现为对象引用,封装着随时可变的属性状态,如果你改变了一个属性的状态,这个对象还是原来那个对象,就是对象引用没有因为状态的改变而改变, ...
- 【学习笔记】K-D tree 区域查询时间复杂度简易证明
查询算法的流程 如果查询与当前结点的区域无交集,直接跳出. 如果查询将当前结点的区域包含,直接跳出并上传答案. 有交集但不包含,继续递归求解. K-D Tree 如何划分区域 可以借助下文图片理解. ...
- 题解-SHOI2005 树的双中心
SHOI2005 树的双中心 给树 \(T=(V,E)(|V|=n)\),树高为 \(h\),\(w_u(u\in V)\).求 \(x\in V,y\in V:\left(\sum_{u\in V} ...
- vue第八单元(组件通信 子父,父子组件通信 自定义事件 事件修饰符 v-model props验证 )
第八单元(组件通信 子父,父子组件通信 自定义事件 事件修饰符 v-model props验证 ) #课程目标 掌握使用props让父组件给子组件传参(重点) 掌握props属性的使用以及prop验证 ...
- BERT 论文阅读笔记
BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...
- nacos注册中心源码流程分析
作为一个注册中心,和eureka类似,核心的功能点: 1.服务注册:nacos客户端携带自身信息向nacos服务端进行注册. 2.服务心跳:客户端定时向服务端发送心跳,告知服务端自己处于可用状态 3. ...
- win10/win7下vs2013自带IISExpress支持局域网访问
打开IISExpress安装目录(C:\Users\Administrator\Documents\IISExpress\config),一般为我的文档下,用记事本打开applicationhost. ...