注意:由于业务逻辑漏洞本身的特殊性,很难用代码来具体解释(原因见下文📜),因此本文主要内容是业务逻辑漏洞的各种理论🤓,代码涉及极少,具体的实战演练会在后续更新哟⏩
注意:在挖掘业务逻辑漏洞时,对于一些可能会对目标业务造成影响的操作,一定要慎之又慎,比如验证越权修改账号密码时,应当只修改自己创建的账号,防止误修改其他人的账号信息!
三个问题讲清业务逻辑漏洞:
什么是业务逻辑?
1.业务逻辑是指一个实体单元为了向另一个实体单元提供服务,应该具备的规则与流程。
2.业务逻辑是指在实际业务操作中,通过对业务规则和规程的分析和抽象,确定业务处理的规则和步骤。
业务逻辑通常由一组规则或者算法来描述业务流程,涉及到数据的处理、存储、分析和展示等方面,它是一个抽象的概念,在软件开发中占据着重要的地位。在面向对象编程中,业务逻辑通常被封装在对象的方法中,以此来实现对数据的操作和处理。在Web应用程序中,业务逻辑通常会包含在Controller层中,用于处理用户请求和响应结果。因此,业务逻辑是程序中最核心的部分,决定了整个程序的运行流程和结果。
业务逻辑本质上就是对真实业务的映射与抽象
“实际上,我们口口声声的业务逻辑,只是用代码实现的真实业务的规则映射。”
所有的逻辑都有漏洞吗?
不是所有的逻辑都有漏洞
逻辑漏洞:又称业务逻辑漏洞,是指由于程序逻辑不严谨或者逻辑太复杂,导致一些逻辑分支不能正常处理或者处理错误。
逻辑这种东西,无论它再基于客观事实的基础上,也一定是加了至少一点点主观推理的。如果是不加主观推理的东西,它就只是纯粹的客观事实,也不存在什么漏洞一说。但凡是加了主观推理的东西,都一定不是客观事实,哪怕有再少的主观推理,都必然有漏洞。
什么是业务逻辑漏洞?
业务逻辑漏洞是一类特殊的安全漏洞,业务逻辑漏洞属于设计漏洞而非实现漏洞,是业务逻辑设计不严谨导致的漏洞。
业务逻辑漏洞通常是由于无法预期可能发生的异常应用程序状态,因此无法安全处理它们所导致的。这些缺陷通常对那些没有明确寻找它们的人来说是不可见的,因为它们通常不会在应用程序的正常使用中暴露出来。但是,攻击者可以通过开发人员从未想过的方式与应用程序进行交互来利用这些漏洞。常见的业务逻辑漏洞如:参数篡改、重放攻击、流程漏洞等。
业务逻辑漏洞的成因:
应用程序在设