大家好,又见面了,我是你们的朋友全栈君。
- 业务逻辑 不同的项目有不同的功能,不同的功能需要不同的代码实现,实现这些核心功能的代码就叫业务逻辑。
- 业务逻辑漏洞 业务逻辑漏洞是指由于程序逻辑不严谨或逻辑太复杂,导致一些逻辑分支不能正常处理或处理错误。
- 常见的业务逻辑漏洞
- 业务逻辑漏洞挖掘过程 确定业务流程—>寻找流程中可以被操控的环节—>分析可被操控环节中可能产生的逻辑问题—>尝试修改参数触发逻辑问题
业务逻辑漏洞
- 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