其他分享
首页 > 其他分享> > 业务逻辑分析+实践操作

业务逻辑分析+实践操作

作者:互联网

何为越权?越权漏洞的成因主要是因为开发过程中在对数据进行增、删、改、查时对客户端请求的数据没有进行严格的权限判定,导致单个用户可以操作其他用户的一些操作,叫做越权。越权漏洞通常分为两种:水平越权垂直越权(权限提升)

水平越权

概念

如果攻击者能够执行与自己同级别的其他用户能够执行的操作,这就说明存在水平越权漏洞。通俗解释 就是:指攻击者尝试访问与他拥有相同权限的用户资源

通常是由于攻击者请求操作(增删改查)某条数据时,WEB应用程序没有判断该数据的所属人,或者在判断数据所属人时直接从用户提交的表单参数中获取(例如用户ID),导致攻击者可以执行修改参数(例如用户ID),操作不属于自己的数据。

实践操作

操作一 tinyshop水平越权删除其他用户地址

漏洞分析

 

原因: sql语句中的限定条件不足

任意收货地址删除漏洞的问题出在/protected/controllers/ucenter.php中

漏洞验证利用

  1. 安装完成程序后,分别注册两个普通用户:test和ceshi,密码均为123456
  2. 分别登录test和ceshi用户,将“收货地址”填写完整。

 

  1. 开启burp软件,进行拦截,点击删除按钮,将id=3改成2.

 

  1. 测试步骤,登录第二个普通账户(例如test),访问:

 可以发现注册账户中的“收货地址”已经被删除。

操作二  SRCMS越权漏洞

漏洞分析

  1. 由thinkPHP自带的特性导致的安全漏洞。
  2. 详情细节请参考:SRCMS 多处越权+权限提升管理员漏洞 | 离别歌 

垂直越权漏洞

概念

如果攻击者能够执行某项功能,而他所属的角色并不具备该权限,这就存在垂直越权漏

洞。

    通常服务器为鉴别客户端浏览器会话及身份,会将用户身份信息存储在cookie中,并发送至客户端存储。攻击者可以通过尝试修改cookie中的身份标识为管理员,欺骗服务器分配管理权限,达到垂直越权的目的。

实践操作

操作一 垂直越权demo演示

漏洞分析

  1. 客户端可进行权限控制。
  2. 服务端未校验提交的身份验证数据。

漏洞验证利用

  1. 访问目标站点,点击提交(submit),可以看到当前是guest用户的登录状态

 

  1. 利用火狐浏览器自带的“查看器”功能,查看客户端源代码。

 

  1. 对客户端源代码进行修改,主要是修改<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 ,可以看到程序在对用户账户进行操作前,并没有对用户的身份进行确认或者说没有对用户的权限进行检查,这也是越权漏洞产生的原因。

 

漏洞验证利用

  1. 安装CMS系统,进入后台管理添加一个名为test的测试用户,权限赋予Editor权限。

登录:

 

 

注册test账户: Dashboard à Users à New User

 

  1. 添加成功后,退出admin管理界面,登录新建的test用户界面。
  1. 配置浏览器代理,启动burpsuite,点击“确定按钮(Simpan)”抓取请求数据包。

 

  1. fiyocms一共设置了5个用户组,等级为1-5,权限依次降低,而只有等级1-3有权限登录后台,不同等级具有不同的权限。然后我们将抓取到的请求包内的level=3修改为level=1,再将数据包通过forward发出去,即可将test提升为超级管理员权限的用户。

 

  1. 数据包请求出去后,将“Intercept on”还原为“Intercept off”,放行所有数据。然后退出test用户,再重新登录test。可以发现用户管理界面和admin用户是一样的,说明权限提升成功。

 

  1. Test账户下查看“User List”,可以发现test和admin一样权限状态为“Super Administrator”。

 

业务逻辑漏洞

概念

随着互联网的快速发展,在线支付业务的日渐成熟,大批的网上商城涌入互联网.为了方

便网上商城的快速上线,很多该类型的应用程序在未能严格审查源码的情况下就开始上线,导致很多逻辑错误类型的漏洞出现在应用程序中,而密码重置漏洞便是其中的一种。

漏洞位置在找回密码处,由于验证设计过于简单,而且对校验码的校验使用次数没有

进行限制,导致正确的验证码可以被枚举爆破,从而重置密码。此方法也是最常见的重置密

码的方式,因为大多数厂商最开始的设置都是采取的 4-6 位纯数字验证码的验证方式,而且是没有防止爆破的设计。

当然除了上述的由于验证不严格导致的密码重置案例,还有诸如:敏感信息泄露(把明

文密码通过 e-mail 发送给用户)重置密码消息劫持(攻击会者接收到密码重置信息)这些都是在密码重置功能中比较常见的漏洞

实践操作

操作一 phpshe 1.1支付业务逻辑漏洞

环境准备

  1. 操作系统:Windows 2003  
  2. 网站环境:UPUPW 5.3

漏洞分析

漏洞代码位置module\index\order.php 行 73:

 

由于注册了全局变量所以:$_p_info= $_POST['info'];

所以修改订单提交的表单直接 info['order_sate'] 值=paid。

漏洞验证利用

  1. 首先需要我们注册一个会员账户,登录进入会员系统。

 

  1. 然后我们回到首页的“推荐商品”处将商品加到购物车

 

 

  1. 在下单的时候通过浏览器自身的调试面板来进行修改操作,修改订单提交的表单为 info['order_state'] 值=paid,具体的操作如下

 

  1. 执行完成提交订单操作后,会出现订单号错误的提示

 

  1. 我们回到会员中心,我的订单处订单状态为“等待发货”,直接跳过了付款环节,实现了不花钱就可以买东西的效果。

 

操作三 Doyo 2.3支付业务逻辑漏洞

环境准备

  1. 操作系统:Windows 2003
  2. 网站环境:UPUPW 5.3
  3. 使用工具:burpsuite 1.6 beta

漏洞分析

支付验证存在缺陷

漏洞验证利用

  1. 注册一个新用户test,查看账户余额,截图如下所示:

 

  1. 购买商品价格,截图如下所示:

 

  1. 提交订单,使用抓包工具对商品数量进行负数修改,原值数量为1,修改为-1,截图如下所示:

  1. 发送修改后的请求包,由于出现负数导致数据库查询失败,页面出现数据库查询失败错误,界面返回结果如上图所示。

 

标签:逻辑,实践,用户,漏洞,test,操作,权限,越权
来源: https://blog.csdn.net/qq_38612882/article/details/122256013