1.业务逻辑漏洞:业务逻辑漏洞就是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。 逻辑漏洞的破坏方式并非是向程序添加破坏内容,而是利用逻辑处理不严密或代码问题或固有不足,进行漏洞利用的一个方式。
2.说到这就简单说下三个重要的特性:完整性,可用性,保密性。
保密性:是确保信息仅被合法用户访问,而不泄露给非授权用户、实体或过程,或供其利用的特性
完整性:是指所有资源只能有授权方或以授权的方式进行修改,及信息未授权不能改变的特性
可用性:是指所有资源在适当的时候可以由授权方询问,即信息可被授权实体访问并按需求使用的特性
漏洞描述及测试方法:
这类漏洞是指应用在检查授权(Authorization)时存在缺陷,使得攻击者在获得低权限用户帐后后,可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的高权限功能。,工具基本扫不出业务逻辑漏洞,他不属于top10,属于逻辑安全漏洞
修复方式:
对用户操作进行权限校验,防止通过修改参数进入未授权页面及进行非法操作,建议在服务端对请求的数据和当前用户身份做校验检查。
3.什么是越权?
越权漏洞成因主要是因为开发过程中对数据增删改查时对客户端没有进行严格的权限判定,导致单个用户可以操作其他用户的一些操作,叫做越权。
换句话来讲就是,A用户与B用户之间可以访问自身的内容(例如个人资料、地址等),由于数据进行查询操作的时候并没有对用户的身份识别进行判断,导致A用户可以越权查看B用户才能看到的内容
水平越权和垂直越权
我们都知道,越权分为水平越权和垂直越权,那么什么是水平越权什么是垂直越权呢?
攻击者能执行与自己同级别的其他用户执行的操作,即尝试访问与它拥有相同权限的用户资源,即水平越权
其实我觉得这句话比较笼统,因为在工作当中很多人都有一个误区,那就是大多数人认为,水平越权通常发生在同级别用户当中,即普通用户与普通用户之间、管理员用户与管理员用户之间。
而垂直越权则发生在普通用户与管理员用户之间,相信很多朋友都会有这个误区,毕竟都是这么写的。
然而我在这里想问大家一下,什么是管理员用户,什么是普通用户?在开发者的程序里,我看到用户的权限分为很多等级,简单举个例子一个公司每个部门都有一个管理员账号,即便是管理员,也分为10个等级,那么不同等级的管理员之间的越权行为还能是水平越权吗?
4.我理解的管理员比普通用户多的不是身份而是功能,当然普通用户能看到的页面,管理员也不一定能看到。
5.说了这么多,那么越权操作都会造成哪些危害呢?
越权访问,这类漏洞是指应用在检查授权(Authorization)时存在纰漏,使得攻击者在获得低权限用户帐后后,可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的高权限功能。在实际的代码安全审查中,这类漏洞往往很难通过工具进行自动化检测,因此在实际应用中危害很大。其与未授权访问有一定差别。
也就是说,越权会影响到很大一部分的正常业务,举个例子。
一个销售平台,用户买东西需要填写邮寄地址,攻击者在获取到越权点之后通过一系列手段更改了用户的收件地址,从而导致你买的东西邮到了我家。
6.支付逻辑漏洞
漏洞描述及测试方法:
实际上这个情况常见的情况有:
负值反冲、正负值对冲、甚至是直接修改数量单价、总价等等。
负值反冲,就是说程序没有校验订单的取值范围,若是使用负值则可以进行支付逻辑利用;
正负值对冲,是指,通过修改订单的数量或者是单价、总价来达到少付钱的目的,但是你的值不能是负值
假如在某宝,我在测试过程遇到的一个,要购买买的商品需要加入购物车后购买,于是乎我将单价、总数进行更改,成功的达到了少付款的目的,一元购。
修复方式:
1.服务器端在生成交易订单时,商品的价格从数据库中取出,禁止使用客户端发送的商品价格。
2.服务器端在生成支付订单时,对支付订单中影响支付金额的所有因素(比如商品ID、商品数量、商品价格、订单编号等)进行签名,对客户端提交的支付订单进行校验。
7.短信炸弹
漏洞描述及测试方法:
是的,你没看错,短信炸弹严格意义上来讲也属于业务逻辑漏洞,诱发原因是没有进行时间戳等校验,此处与信息安全描述的重放攻击类似,在测试过程中,某接口存在发送手机验证码的功能,但是短信发送平台没有去识别该用户发送验证码的时间等,导致短时间内可以重复的发送大量的短信校验码,不但对系统资源进行了消耗,同时也对用户造成了恶劣的影响。
修复方式:
最简单的就是短信平台对同一手机号进行识别,一定时间内不允许继续发送验证短信请求,也就是所谓的一分钟内不允许继续请求。
8.未授权访问
漏洞描述及测试方法:
未授权访问漏洞,是在攻击者没有获取到登录权限或未授权的情况下,不需要输入密码,即可通过直接输入网站控制台主页面地址。
通俗的来讲,就是你本来需要登录才能实现的功能,你现在不需要登录就能看到,这类漏洞最容易测试,同时也最容易被忽略,测试方式只需要打开新的隐私浏览器进行访问,或使用burp进行数据包拦截,而后将所有的用户信息全部删掉,若是还能正常访问,那就是存在此漏洞。
修复方式:
在系统中,加入用户身份认证机制或者tonken验证,防止可被直接通过连接就可访问到用户的功能进行操作。