逻辑漏洞简介

admin 2024年2月1日22:18:05评论13 views字数 3834阅读12分46秒阅读模式

逻辑漏洞是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改,确权访问,密码找回,交易支付金额等功能处。

逻辑漏洞的破坏方式并非是向程序添加破坏内容,而是利用逻辑处理不严密或者代码问题或固有不足,操作上并不影响程序的允许,在逻辑上是顺利执行的。

这种漏洞一般防护手段或设备无法阻止,因为走的是合法流量也没有防御标准。

逻辑漏洞的重要性

常见的OWASP漏洞,通过漏洞扫描工具,大多支持自动化或者半自动化扫描出来,并且传统的安全设备或者防护措施收效甚微

但逻辑漏洞是和系统自身功能和逻辑有关系的漏洞,每一家的漏洞出现可能存在一定的独特性,很难复制或者通过规则脚本和漏扫工具扫描出来,因此逻辑漏洞大多需要配合代码审计和手段测试才可以发现相关漏洞,也是工具无法代替人工的漏洞。

逻辑漏洞的分类

越权漏洞

密码需改

密码找回

验证码漏洞

支付漏洞

投票/积分/抽奖

短信轰炸

越权访问

越权访问时web应用程序中一种常见的漏洞,由于其存在范围广,危害大被OWASP列为web应用十大安全隐患的第二名

该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得地权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要时因为开发人员对数据进行增、删、改、查时对客户端请求的数据过分相信而遗漏了权限的判定,一但验证不充分,就容易出现越权漏洞

其中越权访问分为:

水平越权 相同权限的用户之间可以越权访问比如福建的用户访问到了广东用户里的内容,容易造成数据泄露,甚至用户信息被恶意修改

垂直越权 低权限用户访问到了高权限用户,比如普通用户可以执行管理员才可以执行的操作 等于想干嘛干嘛

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(
img-3ard6fjz-1627144266871)(C:UsersLXHAppDataRoamingTyporatypora-user-imagesimage-20210519225432336.png)]

水平越权

指攻击者尝试访问与它用户相同权限的用户资源,比如用户A和用户B属于同一角色,拥有相同的权限等级他们都能获得属于自己的私有数据,但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问了用户B的数据,那么用户A访问用户B的这种行为就叫做视频越权访问

垂直越权

由于后台应用没有做权限控制,或仅仅在菜单,按钮上做了权限控制,导致了恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或者控制其他角色拥有的数据或页面,达到提权的目的

越权漏洞产生原因

水平越权和垂直越权的定义不一样,但漏洞的原理都是一样的,都是账户体系上在判断权限时不严格导致存在绕过漏洞,这一类的绕过通常发生在cookie验证不严,简单判断用户提交的参数,归根截底,都是因为这些参数实在客户端提交,服务端未严格校验

1.通过隐藏URL

实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用URL实现访问控制,但URL泄露或被恶意攻击者猜到后,这会导致越权攻击

2.直接对象引用

这种通过修改参数就可以产生水平越权,例如查看用户信息页面URL后加上自己的id便可查看,当修改为他人的id号时会返回他人的信息,便产生了水平越权

3.多阶段功能

多阶段功能是一个功能有多个阶段的实现,例如:修改密码,可能第一步是验证用户身份信息,号码验证码类的,当验证成功后,跳到第二部,输入新的密码,很多程序会在这一步不在验证用户身份,导致恶意用户抓包直接修改密码

静态文件

很多网站的下载功能,一些被下载的静态文件,例如pdf、word、xls等,可能只有付费用户或者会员才可以下载,但当这些文件的URL地址泄露后,导致任何人可下载,如果知道URL命名规则,则可利用服务器的收费文档进行批量下载

平台配置错误

一些程序通过控件来限制用户访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问。

越权漏洞修复建议

1.前后端同时对用户输入信息进行校验,双重验证机制

2.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限

3.特别敏感操作可以让用户再次输入密码或其他的验证信息

4.可以从用户的加密认证cookie中获取当前用户的id防止攻击者对其修改,或在session、cookie中加入不可预测、不可猜解的user信息

5.直接对象引用的加密资源ID,防止攻击者枚举ID敏感数据特殊化处理

6.永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤

密码修改/重置

什么是密码重置?

顾名思义,就是修改原来的密码

密码重置的途径有那些

1.一个网站,一般我们可以登录进入个人中心直接修改密码

2.当我们忘记密码是还可以使用系统自带的密码找回功能进行密码修改

什么是密码修改/重置漏洞

密码重置这个功能本身没有问题,但如果对密码重置功能的验证机制不够完善就形成了漏洞

密码修改/重置的成因

基于修改密码的

如果后台没有对旧密码进行验证,就直接让输入新密码

1.第一种,如果存在csrf漏洞我们就可以直接修改一波

2.如果存在越权漏洞就可以直接修改其他人的密码

3.点击修改后抓包测试,观察数据包有没有验证类似cookie随机数,如果没有的话可以尝试修改用户名,手机号或者uid来尝试重置其他密码

如果后台是通过向注册手机或者注册邮箱来重置密码的,关于验证码的漏洞我们都可以尝试,这种方式的前提是你已经通过某种方式进入到了对方的个人中心所以意义不大。

基于找回密码

一般情况下当我们点击找回密码的时候都是通过验证手机号或者邮箱,这就又变成了验证码的问题

1.验证码发送后前端返回

2.验证码时效导致验证码爆破

3.验证码有规律可控

4.验证码被放回在返回包中

5.输入验证码后通过修改响应包的状态来重置密码

6.验证码为空(原理就是后台未考虑验证码为空的情况,直接就是如果存在,然后下面仅判断了存在的情况)绕过过或使用万能密码

7.拦截数据包,发送验证码时可以向多个手机号发送验证码,这个时候就可以添加个云短信,直接接受验证码完成修改

密码找回

密码找回是出现逻辑漏洞问题最多的一个地方,因为它的交互流程最多,目前找回密码的方式比较常见的有邮箱验证码、手机验证码、以及密码问题

输入用户名/邮箱/手机阶段

交互过程;即输入要重置账户信息点击确定时,大部分应用都用会直接从数据库中读取用户邮箱和手机信息,并且发送验证码,还有部分程序在输入用户名后,会提示使用手机还是邮箱找回密码

在提交的时候可以直接抓包修改手机或者邮箱参数,这是如果后端没有做验证,原本发送给账户A的验证码就会发送到被我们篡改的手机或者邮箱上,利用接收到的验证码即可重置密码

填写验证码和新密码阶段

填写验证码和新密码就意味着我们已经拿到了验证码或者重置密码的URL这里存在的问题有

1.验证凭证较简单,可以暴力破解

2.验证凭证算法简单,凭证可预测

3.验证凭证直接保存在源码里

验证凭证较简单,可以暴力破解

目前大多数手机短信重置密码的验证码比较简单4位或6位数字如果提交验证码的地方没有对这个验证码进行错误次数限制,则会存在可以爆破的问题,这是 目前比较常见的一种密码找回方式

验证凭证算法简单,凭证可预测

部分网站找回密码的Token是根据当前用户的 “用户名”+“邮箱”或者时间戳进行一次MD5后生成,这就存在一定的预测性,利用自己写的算法去碰撞即可拿到重置密码凭证

验证凭证直接保存在源码里

目前这种比较少,不过也存在一定比例,一种是在点击发送验证码的时候就可以直接在源码里看到给当前手机或者邮箱发送过去的验证码,还有一种就是在输入验证码的时候源码里面就直接保存了正确的验证码

发送新密码阶段

凭证未绑定用户:我们在找回密码的时候发送到邮箱的链接通常是如下这个样子

http:///www.xxx.com//user.php?m=repwd&uid=用户ID&key=凭证密钥&email=邮箱

当请求这个链接的时候,后端程序根据uid和key对应上了从而判断这个找回密码的链接是否有效,但是在将新密码提交到服务器的时候

服务端并没有判断当前这个key是否跟uid或者email匹配,而是直接修改掉了uid或者email指定的用户密码这样我们只要拦截修改密码的请求包,将里面用户参数修改成我们要篡改密码的用户账户即可

密码找回漏洞修复建议

1.接受验证码的邮箱和手机号不可由用户控制,应该直接从数据库中读取出来

2.加强验证凭证复杂度,防止暴力破解

3.限制验证凭证错误次数,单个用户在半个小时内验证码错误三次,半小时内精致找回密码。

4.验证码凭证设置失效时间

5.验证凭证不要保存在页面

6.输入用户邮箱或ID,手机号取验证凭证的地方需要设置验证码防止短信炸弹和批量找回等

找回漏洞修复建议

1.接受验证码的邮箱和手机号不可由用户控制,应该直接从数据库中读取出来

2.加强验证凭证复杂度,防止暴力破解

3.限制验证凭证错误次数,单个用户在半个小时内验证码错误三次,半小时内精致找回密码。

4.验证码凭证设置失效时间

5.验证凭证不要保存在页面

6.输入用户邮箱或ID,手机号取验证凭证的地方需要设置验证码防止短信炸弹和批量找回等

7.验证凭证跟用户名、用户ID、用户邮箱绑定、找回密码是验证当前凭证是否是当前用户的

文章内容转自安全帮,侵删

逻辑漏洞简介

逻辑漏洞简介

原文始发于微信公众号(网络安全资源库):逻辑漏洞简介

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月1日22:18:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   逻辑漏洞简介http://cn-sec.com/archives/2402450.html

发表评论

匿名网友 填写信息