Web安全之业务逻辑漏洞

2022-09-05 19:27:59 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

  • 业务逻辑 不同的项目有不同的功能,不同的功能需要不同的代码实现,实现这些核心功能的代码就叫业务逻辑。
  • 业务逻辑漏洞 业务逻辑漏洞是指由于程序逻辑不严谨或逻辑太复杂,导致一些逻辑分支不能正常处理或处理错误。
  • 常见的业务逻辑漏洞
  • 业务逻辑漏洞挖掘过程 确定业务流程—>寻找流程中可以被操控的环节—>分析可被操控环节中可能产生的逻辑问题—>尝试修改参数触发逻辑问题

业务逻辑漏洞

  • 1.URL跳转漏洞
    • 1.1.URL跳转概述
    • 1.2.触发方式及绕或技巧
    • 1.3.修复方法
  • 2.短信邮箱轰炸漏洞
    • 2.1.短信邮箱轰炸概述
    • 2.2.产生位置及绕过技巧
    • 2.3.修复方法
  • 3.任意密码修改漏洞
    • 3.1.简述
    • 3.2.表现
      • 3.2.1.验证码不失效
      • 3.2.2.验证凭证回传及未绑定
      • 3.2.3.本地验证绕过
      • 3.2.4.跳转验证步骤
      • 3.2.5.凭证可预测
      • 3.2.6.同时向多个账户发送凭证
  • 4.任意用户登录漏洞
    • 4.1.简述
    • 4.2.表现
      • 4.2.1.手机登录验证码回显
      • 4.2.2.修改返回包可以登录
      • 4.2.4.sql注入万能密码
      • 4.2.5.系统默认弱口令及撞库
      • 4.2.6.cookie混淆(遍历id)
  • 5.越权漏洞
    • 5.1.概述
    • 5.2.分类
      • 5.2.1.水平越权
      • 5.2.2.垂直越权
    • 5.3.修复方法
  • 6.支付逻辑漏洞
    • 6.1.简述
    • 6.2.表现
    • 6.3.修复方法

1.URL跳转漏洞

1.1.URL跳转概述

URL跳转也叫做重定向,301和302状态码都表示重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取。 301跳转是指页面永久性移走,通常叫做301跳转,也叫301重定向(转向) 302重定向又称之为暂时性转移,也被称为是暂时重定向。 产生原因:服务端未对传入的跳转 url 变量进行检查和控制,可能导致可恶意构造任意一个恶意地址,诱导用户跳转到 恶意网站。

1.2.触发方式及绕或技巧

触发方式: redirect redirect_to redirect_url url jump jump_to target to link linkto domain 绕过技巧: 利用问号绕过限制:url=https://www.baidu.com?www.xxxx.me 利用@绕过限制:url=https://www.baidu.com@www.xxxx.me 利用斜杠反斜杠绕过限制:url=http://www.evil.com/www.xxxx.me 利用子域名绕过:https://www.baidu.com.xxx.com

1.3.修复方法

修复该漏洞最有效的方法之一就是校验传入的跳转url参数值,判断是否为预期域名。

2.短信邮箱轰炸漏洞

2.1.短信邮箱轰炸概述

网站在对信息发送的次数、时间没有做限制,或者只在前端做了限制,导致可以无限制发送信息,简单的说就是发送短信/邮件的包可以无限制的发送。

2.2.产生位置及绕过技巧

产生位置: 会员账号注册功能,忘记密码找回功能上,会员绑定手机邮箱功能,设置取款密码使用手机验证,或者是某项重要的操作,提现,充值等功能上需要手机短信验证码,再一个是网站活动领取奖品功能上。 绕过技巧: 1.尝试在mobile参数后面加空格 2.尝试对参数进行多次叠加 3. 利用调用接口绕过短信&邮箱轰炸限制 4.利用大小写绕过邮箱轰炸限制

2.3.修复方法

合理配置后台短信服务器的功能,对于同一手机号码,发送次数不超过3-5次,并且可对发送的时间间隔做限制。 页面前台代码编写时,加入禁止针对同一手机号进行的次数大于N次的发送,或者在页面中加入验证码功能,并且限制发送的时间间隔。

3.任意密码修改漏洞

3.1.简述

网站在对密码修改的时候,未对修改密码的凭证做严格的限制,导致可以被绕过进行任意个密码修改。

3.2.表现

3.2.1.验证码不失效

通过枚举法找到正确的验证码,进行登录。

3.2.2.验证凭证回传及未绑定

直接输入目标手机号,点击获取验证码,验证码在客户端生成,并观察返回包即可。在返回包中得到目标手机号获取的验证码,完成验证。

3.2.3.本地验证绕过

将返回包的状态修改为登陆成功的状态,棋牌你服务器,登陆成功。

3.2.4.跳转验证步骤

首先使用自己的账号走一次流程,获取每一个步骤的页面链接,然后记录输入新密码页面的链接,重置他人用户时,获取验证码后直接跳转链接输入密码重置成功。

3.2.5.凭证可预测

使用邮件接受重置密码的连接时。一般会带有一个token用于判断链接是否被修改过。但是token是可预测的,这样攻击者可以通过构造链接来重置任意用户的密码。 表现:token有规律 1.基于时间戳生成的Token 2.基于递增序号生成的Token 3.基于关机字段生成的Token

3.2.6.同时向多个账户发送凭证

在数据包中添加多个账户,在发包,发现所写的有效字段均发送了凭证。

4.任意用户登录漏洞

4.1.简述

逻辑错误导致可以登录任意用户,撞库获得用户名,通过验证码登录,抓包修改接收验证码的手机号或者邮箱,然后能使撞库获得的用户登录,产生漏洞。

4.2.表现

4.2.1.手机登录验证码回显

修改登陆包中接收验证码的手机号,通过短信验证登录

4.2.2.修改返回包可以登录

将返回包的状态修改为登陆成功的状态,棋牌你服务器,登陆成功。

4.2.4.sql注入万能密码

4.2.5.系统默认弱口令及撞库

系统在搭建时,设置了默认的口令。通过尝试注册获取已注册的用户名,再利用通用密码进行登录。

4.2.6.cookie混淆(遍历id)

在登陆的时候根据cookie中的某一个字段来判断登录的角色,这个cookie字段可以任意修改,例如userid。

5.越权漏洞

5.1.概述

顾名思义,越权漏洞就是由于设计上的缺陷对应用程序的权限做的不好。通俗点来说,就是用户A可以通过某种方式查看到用户B的个人信息,或者可以查看管理员C的一些相关信息。 成因:越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定 。

5.2.分类

5.2.1.水平越权

水平越权漏洞是可以操作同一个层次的账号权限之间进行操作,以及访问到一些账号敏感信息,比如可以修改任意账号的资料,包括 查看会员的手机号,姓名,充值记录,撤单记录,提现记录,注单记录等等。

5.2.2.垂直越权

垂直越权漏洞可以使用低权限的账号来执行高权限账号的操作,比如可以操作管理员的账号功能。隐藏式后台也属于垂直越权的一种。

5.3.修复方法

1.基础安全架构,完善用户权限体系。 2.鉴权,服务端对请求的数据和当前用户身份做校验; 3.不要直接使用对象的实名或关键字。 4.对于可控参数进行严格的检查与过滤!

6.支付逻辑漏洞

6.1.简述

开发人员往往会为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。

6.2.表现

测试方法: 1.在购买产品过程中修改产品数量、价格; 2.在支付时修改总价格或者优惠价格; 3.订单生成后,编辑订单把A商品的价格改成B商品的价格,实现低价支付。测试时,修改数量、单价,优惠价格参数为负数、小数,无限大,看是否能生成订单,能生成进入支付即说明存在逻辑漏洞了。 常见类型: • 修改购买数量 • 修改支付价格 • 修改支付对应的商品 • 修改支付的状态 • 修改附属优惠、领取优惠 • 测试数据包未删除

6.3.修复方法

1.在后端检查订单的每一个值,包括支付状态; 2.校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量 ; 3.与第三方支付平台检查,实际支付的金额是否与订单金额一致; 4.另外,如果给用户退款,要使用原路、原订单退回。比如:退押金,按用户原支付订单原路退回; 5.MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题; 6.金额超过指定值,进行人工审核等。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137847.html原文链接:https://javaforall.cn

0 人点赞