业务逻辑分析+实践操作
作者:互联网
何为越权?越权漏洞的成因主要是因为开发过程中在对数据进行增、删、改、查时对客户端请求的数据没有进行严格的权限判定,导致单个用户可以操作其他用户的一些操作,叫做越权。越权漏洞通常分为两种:水平越权和垂直越权(权限提升)。
水平越权
概念
如果攻击者能够执行与自己同级别的其他用户能够执行的操作,这就说明存在水平越权漏洞。通俗解释 就是:指攻击者尝试访问与他拥有相同权限的用户资源。
通常是由于攻击者请求操作(增删改查)某条数据时,WEB应用程序没有判断该数据的所属人,或者在判断数据所属人时直接从用户提交的表单参数中获取(例如用户ID),导致攻击者可以执行修改参数(例如用户ID),操作不属于自己的数据。
实践操作
操作一 tinyshop水平越权删除其他用户地址
漏洞分析
原因: sql语句中的限定条件不足
任意收货地址删除漏洞的问题出在/protected/controllers/ucenter.php中
漏洞验证利用
- 安装完成程序后,分别注册两个普通用户:test和ceshi,密码均为123456
- 分别登录test和ceshi用户,将“收货地址”填写完整。
- 开启burp软件,进行拦截,点击删除按钮,将id=3改成2.
- 测试步骤,登录第二个普通账户(例如test),访问:
可以发现注册账户中的“收货地址”已经被删除。
操作二 SRCMS越权漏洞
漏洞分析
- 由thinkPHP自带的特性导致的安全漏洞。
- 详情细节请参考:SRCMS 多处越权+权限提升管理员漏洞 | 离别歌
垂直越权漏洞
概念
如果攻击者能够执行某项功能,而他所属的角色并不具备该权限,这就存在垂直越权漏
洞。
通常服务器为鉴别客户端浏览器会话及身份,会将用户身份信息存储在cookie中,并发送至客户端存储。攻击者可以通过尝试修改cookie中的身份标识为管理员,欺骗服务器分配管理权限,达到垂直越权的目的。
实践操作
操作一 垂直越权demo演示
漏洞分析
- 客户端可进行权限控制。
- 服务端未校验提交的身份验证数据。
漏洞验证利用
- 访问目标站点,点击提交(submit),可以看到当前是guest用户的登录状态
- 利用火狐浏览器自带的“查看器”功能,查看客户端源代码。
- 对客户端源代码进行修改,主要是修改<input type=hidden name=”isadmin” value=”0”>中value的值,将value=”0”修改为value=”1”再次提交,即可返回admin的管理页面。
操作二 FiyoCMS 2.0.6.1垂直越权漏洞
漏洞分析
fiyocms一共设置了5个用户组,等级为1-5,权限依次降低,而只有等级1-3有权限登录后台,不同等级具有不同的权限。
super administrator = 1
administrator = 2
editor = 3
publisher = 4
member = 5
漏洞文件在 dapur\apps\app_user\sys_user.php ,可以看到程序在对用户账户进行操作前,并没有对用户的身份进行确认或者说没有对用户的权限进行检查,这也是越权漏洞产生的原因。
漏洞验证利用
- 安装CMS系统,进入后台管理添加一个名为test的测试用户,权限赋予Editor权限。
登录:
注册test账户: Dashboard à Users à New User
- 添加成功后,退出admin管理界面,登录新建的test用户界面。
- 配置浏览器代理,启动burpsuite,点击“确定按钮(Simpan)”抓取请求数据包。
- fiyocms一共设置了5个用户组,等级为1-5,权限依次降低,而只有等级1-3有权限登录后台,不同等级具有不同的权限。然后我们将抓取到的请求包内的level=3修改为level=1,再将数据包通过forward发出去,即可将test提升为超级管理员权限的用户。
- 数据包请求出去后,将“Intercept on”还原为“Intercept off”,放行所有数据。然后退出test用户,再重新登录test。可以发现用户管理界面和admin用户是一样的,说明权限提升成功。
- Test账户下查看“User List”,可以发现test和admin一样权限状态为“Super Administrator”。
业务逻辑漏洞
概念
随着互联网的快速发展,在线支付业务的日渐成熟,大批的网上商城涌入互联网.为了方
便网上商城的快速上线,很多该类型的应用程序在未能严格审查源码的情况下就开始上线,导致很多逻辑错误类型的漏洞出现在应用程序中,而密码重置漏洞便是其中的一种。
漏洞位置在找回密码处,由于验证设计过于简单,而且对校验码的校验使用次数没有
进行限制,导致正确的验证码可以被枚举爆破,从而重置密码。此方法也是最常见的重置密
码的方式,因为大多数厂商最开始的设置都是采取的 4-6 位纯数字验证码的验证方式,而且是没有防止爆破的设计。
当然除了上述的由于验证不严格导致的密码重置案例,还有诸如:敏感信息泄露(把明
文密码通过 e-mail 发送给用户)重置密码消息劫持(攻击会者接收到密码重置信息)这些都是在密码重置功能中比较常见的漏洞
实践操作
操作一 phpshe 1.1支付业务逻辑漏洞
环境准备
- 操作系统:Windows 2003
- 网站环境:UPUPW 5.3
漏洞分析
漏洞代码位置module\index\order.php 行 73:
由于注册了全局变量所以:$_p_info= $_POST['info'];
所以修改订单提交的表单直接 info['order_sate'] 值=paid。
漏洞验证利用
- 首先需要我们注册一个会员账户,登录进入会员系统。
- 然后我们回到首页的“推荐商品”处将商品加到购物车
- 在下单的时候通过浏览器自身的调试面板来进行修改操作,修改订单提交的表单为 info['order_state'] 值=paid,具体的操作如下
- 执行完成提交订单操作后,会出现订单号错误的提示
- 我们回到会员中心,我的订单处订单状态为“等待发货”,直接跳过了付款环节,实现了不花钱就可以买东西的效果。
操作三 Doyo 2.3支付业务逻辑漏洞
环境准备
- 操作系统:Windows 2003
- 网站环境:UPUPW 5.3
- 使用工具:burpsuite 1.6 beta
漏洞分析
支付验证存在缺陷
漏洞验证利用
- 注册一个新用户test,查看账户余额,截图如下所示:
- 购买商品价格,截图如下所示:
- 提交订单,使用抓包工具对商品数量进行负数修改,原值数量为1,修改为-1,截图如下所示:
- 发送修改后的请求包,由于出现负数导致数据库查询失败,页面出现数据库查询失败错误,界面返回结果如上图所示。
标签:逻辑,实践,用户,漏洞,test,操作,权限,越权 来源: https://blog.csdn.net/qq_38612882/article/details/122256013