前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[红日安全]Web安全Day6 – 业务逻辑漏洞实战攻防

[红日安全]Web安全Day6 – 业务逻辑漏洞实战攻防

原创
作者头像
红日安全
修改2020-02-21 14:12:42
1.1K0
修改2020-02-21 14:12:42
举报
文章被收录于专栏:红日安全

本文由红日安全成员: Orion 编写,如有不当,还望斧正。

大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。

业务逻辑实战攻防

1.1 逻辑漏洞概述

代码语言:javascript
复制
逻辑漏洞,之所以称为逻辑漏洞,是由于代码逻辑是通过人的逻辑去判断,每个人都有自己的思维,自己的思维容易产生不同想法,导致编写完程序后随着人的思维逻辑产生的不足,大多数逻辑漏洞无法通过防火墙,waf等设备进行有效的安全防护,在我们所测试过的平台中基本都有发现,包括任意查询用户信息、任意删除等行为;最严重的漏洞出现在账号安全,包括验证码暴力破解、任意用户密码重置、交易支付、越权访问等等。

1.2 常见的逻辑漏洞

交易支付、密码修改、密码找回、越权修改、越权查询、突破限制等各类逻辑漏洞。下图是简单的逻辑漏洞总结,当然肯定不只这些,逻辑漏洞很多时候需要脑洞大开:

1.3 如何挖掘逻辑漏洞

代码语言:javascript
复制
确定业务流程--->寻找流程中可以被操控的环节--->分析可被操控环节中可能产生的逻辑问题--->尝试修改参数触发逻辑问题

1.4 实例

代码语言:javascript
复制
以下实例不针对任何cms,只做演示用,有些代码进行修改后演示

首先我们看二个实例,我们知道很多网站都存在个人注册功能,设置个人权限,访问个人的功能页面,下面我们看下由于注册功能导致的逻辑漏洞

1.4.1 批量注册

代码语言:javascript
复制
我们把注册功能填写相关信息,然后抓包
代码语言:javascript
复制
将数据包发送到repeater,每次修改username值,发现,只需要修改username值就可以注册成功用户,图形验证码无效,并且未对电话,邮箱等信息校验,可批量注册

1.4.2 注册功能,批量猜解用户

代码语言:javascript
复制
同样是注册功能,在输入用户名时,发现会提示用户名是否存在,猜测该位置可以猜测哪些用户注册过该网站
代码语言:javascript
复制
抓取该位置数据包发现,会对用户名id进行判断,是否存在,是否符合规则
代码语言:javascript
复制
批量探测用户,发现可以批量探测已注册过的用户
代码语言:javascript
复制
建议在提交用户注册信息时判断用户是否存在,避免批量猜解注册用户

既然有注册功能,肯定不可或缺的就是忘记密码功能,忘记密码不可或缺的就是手机验证码或邮箱验证码进行找回,但在找回中会存在验证码回显、验证码不失效、验证码太短可爆破、验证码js校验等等多种漏洞情况,下面为其中一种情况。

1.4.3 任意密码重置

代码语言:javascript
复制
在忘记密码功能,我们输入用户名正确后会进行短信验证码,通过手机验证码或者邮箱验证码
代码语言:javascript
复制
在验证码功能中输入验证码进行验证,发现返回包中存在验证码是否成功情况“yes”或者“no”
代码语言:javascript
复制
我们将“no”修改为“yes”
代码语言:javascript
复制
点击下一步,发现,跳转到了设置新密码功能,输入新的密码,并登录,发现登录成功
代码语言:javascript
复制
越权漏洞,越权又可分为平行越权(相同用户)、垂直越权(低权限用户和高权限用户)、未授权访问(无需用户直接操作),我们看两个实例,平行越权和垂直越权。

1.4.4 平行越权

代码语言:javascript
复制
登录普通用户test2,查看用户敏感的页面
代码语言:javascript
复制
发送到repteater数据包中,看到cookie中存在username参数,修改为已存在的用户名,发现返回包中可查看其他用户敏感信息

1.4.5 垂直越权

代码语言:javascript
复制
在管理员中可创建普通权限用户,发现test用户为编辑用户
代码语言:javascript
复制
使用test用户登录,发现和admin用户有很大差别
代码语言:javascript
复制
抓取admin管理员修改test用户数据包,将该数据包在test用户浏览器进行访问
代码语言:javascript
复制
在test用户下访问,可访问,并且可修改,但所属组只允许修改为edit、publicer、member
代码语言:javascript
复制
在test用户下修改当前用户权限,level共分5个级别,1为管理员权限
代码语言:javascript
复制
将level值改为1
代码语言:javascript
复制
成功修改test用户权限
代码语言:javascript
复制
使用test登录,发现可操作功能已改变,说明普通用户可越权操作

修补建议

利用IP次数访问限制,如果一个IP频繁访问一个页面,如找回密码等功能,可以IP进行访问限制。 验证码识别防护,增加一些语音验证码,特殊字体验证码,拼图下拉验证码,需要人手动操作的验证码,短信验证码一分钟只能获取一次验证码。验证码的生效时间安全限制,无论验证码是否正确都要一分钟后就过期,不能再用。所有的用户登录以及注册,都要与后端服务器进行交互,包括数据库服务器。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 业务逻辑实战攻防
    • 1.1 逻辑漏洞概述
      • 1.2 常见的逻辑漏洞
        • 1.3 如何挖掘逻辑漏洞
          • 1.4 实例
            • 1.4.1 批量注册
            • 1.4.2 注册功能,批量猜解用户
            • 1.4.3 任意密码重置
            • 1.4.4 平行越权
            • 1.4.5 垂直越权
          • 修补建议
          相关产品与服务
          验证码
          腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档