逻辑漏洞详解
作者:互联网
逻辑漏洞
漏洞分类
实现漏洞
sql注入,xss,xxe,csrf,文件上传,文件包含等
设计漏洞
软件、硬件和固件在设计时对于安全性考虑不周导致的漏洞
例如:绕过验证登录,逻辑漏洞
安全配置错误
- 远程配置
- 弱口令
- 权限划分不明确
能够泄露敏感信息(路径,密码等),对提权有很大帮助。例如在windows提权的过程中,经常会用到配置错误进行提权,原因往往是权限划分的问题,导致普通用户也能够访问一些重要的系统服务文件等
逻辑漏洞
逻辑漏洞分类
- 绕过验证
- 越权访问
- 交易活动
- 其他漏洞
逻辑漏洞挖掘原理概述
- 场景分析
- 风险分析
- 漏洞验证
- 漏洞记录
原理:由于程序的逻辑错误,导致了越权,修改交易金额等事件的发生。在挖掘的时候,我们一定要主要场景的分析,比如学生管理平台的越权,交易时有没有修改金额的可能。
登录绕过,某单位的登录页面,通过burpsuite抓包,看到后台对某个参数的返回值是0,根据这个参数前端判断验证出错,不能成功登录,当我吧这个参数值修改为1的时候,就能被前端成功验证并登录后台。
越权有可能通过修改url中的某参数的值,导致学生越权,应该将这些参数的值放在session中,不能让用户看到,更不能修改。
交易类漏洞一般可以通过burpsuite抓包进行验证,可以任意修改金额。在防护的时候,应该多层验证,要让通信的双方都知道要交易的金额,一旦有人篡改,验证不符合就关闭交易。尽量将交易的金额放在session中。另外使用https通信协议,禁止被抓包。HTTPS加密协议是TLS,更安全。
在密码找回的场景中,通过修改手机号信息,控制验证码向指定手机号码发送。在之前网易邮箱就有这样的漏洞,在url里面有用户的邮箱信息,修改为被攻击者的邮箱,就可以直接登录,我们可以给此邮箱绑定我们的手机号,然后通过正常流程,手机验证码的方式修改密码。
绕过验证类漏洞
1. 客户端校验绕过
-
使用HTML的input标签的属性限制用户输入的内容。
-
使用javascript对用户输入进行校验,如果输入了非法内容自动清除或禁止用户提交表单。
-
将用户数据在本地校验结果,作为请求参数或cookie提交。
-
将用户需要进行校验的关键数据(如是否参与过活动,已参与活动的次数等)作为请求参数或cookie提交。
2. 客户端信息泄露
-
直接将验证信息返回到客户端页面的源码中。
-
将验证信息在接口中返回。
测试方法:
-
通过访问HTML页面源码查看是否有验证信息。
-
通过BURP拦截数据包跟踪验证过程,查看是否有验证信息
3. 客户端流程控制
通过抓包,修改手机号,可以将验证码发送到任意手机号
测试方法:
- 通过BURP拦截请求及响应数据包,找到验证成功和验证失败时返回包中的关键字,将验证失败的关键字篡改为验证成功时的关键字后再返回客户端。
- 使用burp拦截请求及响应数据包,跟踪验证成功时触发的请求,尝试在验证失败的情况下直接构造相同的请求
4. 操作目标篡改
如果某操作采用了连续身份校验机制或身份校验过程与操作过程分离,可以尝试在身份验证过程中替换身份校验对象或操作对象实现绕过验证。
测试方法:
如果目标操作与身份校验功能分离,可以尝试在完成身份校验后修改操作目标。
5. 参数篡改
程序员在编写验证程序时有可能会对验证码字段进行正确性校验,但当验证码字段不存在或为空时就直接通过校验。
测试方法:
用burpsuite抓包,将验证码字段设置为空或者删除后再提交
真实案例:
西部证券某系统存在绕过验证漏洞,用burpsuite抓包,可以通过删除验证码(securityCode字段)进行爆破。
6. 暴力破解
越权访问类漏洞
- 水平越权:例如A同学经过某种手段可以访问只有B同学才能访问的信息
- 垂直越权:同学A经过某些操作可以访问的只有老师才能访问到的信息
交易类漏洞
此漏洞涉及使用资金、虚拟货币、积分等进行交易或参与活动类赢取奖励的功能,这些功能在设计实现时如果没有进行充分的安全性考虑,就会产生业务逻辑漏洞。
1. 重放攻击
重放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的。这种攻击会不断恶意或欺诈性地重复一个有效的数据传输。
2. 数据篡改
测试能否通过参数篡改的方式修改交易金额,实现非法获利,除了买卖以外,转账、打赏、红包、兑换等各类涉及资金、虚拟币、积分等功能的实现过程也需要进行本项测试。
3. 流程绕过
客户端测试活动业务是否存在漏洞,能否在未满足活动参与条件的情况下参与活动或获得收益常见的客户端验证方法
资源滥用
攻击者常见的恶意调用方式包括资源滥用和信息篡改者:
资源滥用如短信炸弹、邮件炸弹等,使用自动化工具频繁调用接口,消耗系统资源,对用户进行骚扰。
采用遍历的方式想很多用户推送消息。
分类:
短信验证码
社交功能
测试方法:
-
使用抓包工具跟踪消息推送接口的调用过程,如果满足以下要求(如业务或行业有相关规范要求以相关规范要求为准),则认为不存在本漏洞,如果仅满足部分要求、可以无限制使用自动化工具重复调用或限制措施可以通过绕过验证的方式绕过,则记录中风险漏洞:
接口调用有时间间隔限制且不小于一分钟
接口调用有单位时间内调用次数限制,如每小时最多调用多少次或每天最多调用多少次。
-
使用抓包工具跟踪消息推送接口的调用过程,如果可以通过参数篡改等方式修改消息推送接口的推送的内容,则记录高风险漏洞。
修复建议
-
短信内容必须在服务端生成,不得由客户端控制。
-
在服务器端对短信发送功能进行限制,根据客户端请求的IP或目标号码,限制短信发送的总数量、单位时间内的数量、两次发送的间隔,如每天最多发送30条短信,每小时最多发送10条短信,任意两条短信之间发送的时间间隔需要达到1分钟以上。
标签:逻辑,验证,校验,漏洞,详解,篡改,绕过,客户端 来源: https://blog.csdn.net/weixin_46684578/article/details/118753448