什么是逻辑漏洞
“存在逻辑漏洞的业务就像伸出围栏的苹果树,它们看起来很安全,但却可以被轻易地摘取果实。”
——ChatGPT
Web漏洞中的逻辑漏洞是指在Web应用程序的设计或实现中存在的错误或疏漏,导致攻击者可以利用应用程序的不完善之处,绕过某些安全措施,从而达到攻击目的。
米特尼克说过,人往往是系统的软肋。这句话不仅体现在社会工程学领域,放在逻辑漏洞的成因这里同样适用。与其他类型的Web漏洞(如SQL注入、XSS等)不同,逻辑漏洞通常是由应用开发者在逻辑设计过程中对某些特殊情况考虑不周所致,因此不会直接导致应用程序的报错或崩溃,因为它的破坏方式并非是向程序本身添加破坏内容,操作上并不影响程序逻辑上的顺利运行,但是会利用后端逻辑处理的不严谨,导致出现一些不符合应用开发者预期的行为,如未经授权地访问资源、绕过身份验证、越权访问、篡改数据等等。
逻辑漏洞包括哪些
常见的逻辑漏洞包括:
- 短信轰炸漏洞
- 越权漏洞(水平,垂直)
- 支付漏洞(修改价格,隐藏商品,突破购买限制)
- 密码/验证码相关漏洞(未校验正确性,前端校验,可爆破)
- 会话相关漏洞(cookie/token伪造,cookie未过期)
除了上面这几类常见的业务逻辑,还有一些比较小众的,可能存在逻辑漏洞的点,比如:在用户答题前直接将答案返回前端、游戏对战/闯关时直接通过修改参数或发送获胜数据包提前获胜、直接使用系统时间导致提前签到领取奖励等等。
这个系列后面的文章会对这几类逻辑漏洞的相关内容进行进一步的介绍~
逻辑漏洞的危害
逻辑漏洞的危害性通常比其他类型的漏洞更难以评估和预测,因为攻击者可以通过多种方式利用这些漏洞,而且攻击的后果可能会在很长时间内才能被发现。
逻辑漏洞的危害往往与其产生的逻辑有关,往小了说,可能只是被领取了一些无关痛痒的虚拟奖励,往大了说,也可能导致某些站点全站账号的接管,白嫖大量高价商品造成大量经济损失,甚至泄露海量用户的敏感信息导致追责。
因此,开发者在设计和实现Web应用程序时应该尽可能避免逻辑漏洞的出现,这样既可以降低公司和用户的利益(自己的奖金)遭到侵害的概率,也可以大大避免后期因为对已成型代码的漏洞修复导致的长时间加班…