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

2019-09-26 约 75 字 预计阅读 1 分钟

声明:本文 【红日安全Web安全Day6 - 业务逻辑漏洞实战攻防】 由作者 红日安全 于 2019-09-26 09:26:00 首发 先知社区 曾经 浏览数 84 次

感谢 红日安全 的辛苦付出!

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

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

业务逻辑实战攻防

1.1 逻辑漏洞概述

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

1.2 常见的逻辑漏洞

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

1.3 如何挖掘逻辑漏洞

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

1.4 实例

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

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

1.4.1 批量注册

我们把注册功能填写相关信息,然后抓包

将数据包发送到repeater,每次修改username值,发现,只需要修改username值就可以注册成功用户,图形验证码无效,并且未对电话,邮箱等信息校验,可批量注册

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

同样是注册功能,在输入用户名时,发现会提示用户名是否存在,猜测该位置可以猜测哪些用户注册过该网站

抓取该位置数据包发现,会对用户名id进行判断,是否存在,是否符合规则

批量探测用户,发现可以批量探测已注册过的用户

建议在提交用户注册信息时判断用户是否存在,避免批量猜解注册用户

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

1.4.3 任意密码重置

在忘记密码功能,我们输入用户名正确后会进行短信验证码,通过手机验证码或者邮箱验证码

在验证码功能中输入验证码进行验证,发现返回包中存在验证码是否成功情况“yes”或者“no”

我们将“no”修改为“yes”

点击下一步,发现,跳转到了设置新密码功能,输入新的密码,并登录,发现登录成功

越权漏洞,越权又可分为平行越权(相同用户)、垂直越权(低权限用户和高权限用户)、未授权访问(无需用户直接操作),我们看两个实例,平行越权和垂直越权。

1.4.4 平行越权

登录普通用户test2,查看用户敏感的页面

发送到repteater数据包中,看到cookie中存在username参数,修改为已存在的用户名,发现返回包中可查看其他用户敏感信息

1.4.5 垂直越权

在管理员中可创建普通权限用户,发现test用户为编辑用户

使用test用户登录,发现和admin用户有很大差别

抓取admin管理员修改test用户数据包,将该数据包在test用户浏览器进行访问

在test用户下访问,可访问,并且可修改,但所属组只允许修改为edit、publicer、member

在test用户下修改当前用户权限,level共分5个级别,1为管理员权限

将level值改为1

成功修改test用户权限

使用test登录,发现可操作功能已改变,说明普通用户可越权操作

修补建议

利用IP次数访问限制,如果一个IP频繁访问一个页面,如找回密码等功能,可以IP进行访问限制。

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

关键词:[‘安全技术’, ‘WEB安全’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now