逻辑漏洞2

本文探讨了网络安全中验证码的相关问题,包括无效验证、短信轰炸漏洞及其测试方法。举例说明了如何通过前端验证绕过和参数修改来篡改他人密码。同时,文章提到了链接形式的token参数可逆性,以及服务端验证逻辑缺陷,展示了攻击者可能利用的手段,并提供了实际的攻击案例和防范措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

短信验证码

无效验证

有验证码模块,但验证模块与业务功能没有关联性,此为无效验证,一般在新上线的系 统中比较常见。
最好在做测试的时候先试一下,有很小的概率可以成功。
下面用一个案例进 行举例说明: 获取短信验证码后,随意输入验证码,直接输入两次密码,可成功更改用户密码,没有 对短信验证码进行验证。

短信轰炸  

短信轰炸是手机验证码漏洞中最常见的一种漏洞类型。在测试的过程中,对短信验证码接口进行重放,导致大量发送恶意短信。
有两种情况,一种是完全没限制发短信的频率,另外一种是每 60 秒发一条短信。
情况一:没有限制时,任意下发短信时。直接放到 Intruder 中即可。

情况二:有一定时间间隔,无限下发。

每隔 60 秒可下发一条短信,无限下发,短信轰炸。
在测试过程中,可通过编写 Python 脚本来计算短信下发时间间隔,实现短信轰炸。

登录前端验证漏洞

 忘记密码

给邮箱/手机发验证码

验证码爆破

当在“忘记密码”页面,输入邮箱或者手机号后,网站会给手机或者邮箱发送验证码。用户输入验证码后,服务器会将其与正确的验证码进行对比,若相同则验证成功并进行下一步 操作。网站还贴心的考虑到了,万一用户手抖输错怎么办?有两个选择:
第一个:客户重新填验证码。网站本来想着用户这次能输对了吧,没想到用户不停的手抖输错,短信不断的发到手机上(这是短信炸弹漏洞,后面会介绍)。一条短信一毛钱啊, 网站掏不起啊,那就试试方法 2 吧。
第二个:验证码再输一遍。在这种情况下,极易产生验证码爆破漏洞。
攻击方法和图片验证码相似,如果是4位,没有多余的防御措施,直接爆破即可,案列如下

 

 

 前端验证绕过

客户端验证是不安全的,可能导致任意账号注册、登录及重置任意用户密码等一系列问题
1. 直接返回明文验证码 输入手机号后,点击获取验证码。按 F12 调出开发者工具,然后在网络中,监听到两条 json 数据可以发现本应该发送给用户的手机短信验证码就藏在 ticket 里面。用这个尝试登陆,输入 9360 即可登陆成功.

2. 返回加密后的密码 验证加密后,加密报文在应答数据包中,返回客户端,用户解密后即可获取验证码。

 

设置新密码时修改参数,改他人密码

修改密码时可否修改参数(用户名/邮箱/手机)达到修改其他用户密码的目的。首先在一个网站注册一个用户,然后修改这个用户的密码,通过抓取数据包中的参数判 断哪里是校验用户,通过修改关键参数,达到任意修改其他用户密码的目的。
下面对一个网站进行模拟攻击,以便于在攻击中讲解能够更深刻的理解。
1. 先注册一个网站的账号,注销后在登录界面点击忘记密码。然后填写相应的信息,这里 填写了刚才注册的用户名和密码。然后开启浏览器的代理和 Burp 的截断,如下图所示。
2. 点击下一步后,分析报文,看到请求的报文中传递了用户名和邮箱,因此判断此数据包 是用来判断是否存在此用户、用户名和邮箱是否匹配的。点击 Forward 放过次数据包。

3、攻击者收到网站给的验证码(到这里都是正常的网站找回的逻辑)

4、继续填写验证码,发现还是没有什么可以利用的数据,放包过去 

 5、 到了修改密码的界面,填好密码后点击下一步。抓包后,观察发现这里写入了用户名和密码

6、发送之后,发现修改成功(这里漏洞点:原因是没有对校正的账号和修改的账号进行匹配,导致可以先通过用户验证后,去修改别人的密码)



链接的形式   

链接 token 参数可逆
通过邮箱找回密码时,邮件中将出现一个含有 token 的重置 URL,该 token 即为重置 凭证。从经验来看,开发人员习惯以时间戳、递增序号、关键字段(如邮箱地址)等三类信 16 / 40 息之一作为因子,采用某种加密算法或编码生成 token,攻击者可以基于能收集到的关键字 段,用常见加密算法计算一遍,以判断是否可以预测出 token。
实践:基于时间戳生成的 token ,这是一个靶场
1、先观察,看下该页面的找回密码出的报文结构,输入admin,没有重置密码的链接

2、随便输入用户再次发包,可以得到链接,观察sukey参数,看出好像是一个md5的链接

 

3、解密MD5看下,发现是unix的时间戳 。

 

4、确定攻击模型,虽然admin无法得知重置密码的链接,但是我们知道链接的构造,就可以模拟出来
发送普通用户得到时间戳----发送admin重置-----在发送普通用户得到时间戳,那么admin的时间戳必定在两个用户的时间区间内,然后构造爆破语句爆破就可以了

 

 

5、将aaaa的md5和vvvv的分开解密,得出:1653532259-1653532283,admin既然在这个中间,那我们可以开始爆破,我们点击这个链接,抓到重置请求包,后开始加密爆破

设置参数

 

设置规则,需要md5加密

 

6、开始爆破,并且排序

 

服务端验证逻辑缺陷  

 登录状态下修改密码等验证条件

1、登陆状态下修改自己的密码时,通过修改截获的数据包,将部分参数替换,从而偷龙换 凤的将他人的密码修改为自己指定的密码。下面通过实例讲解。
在登录状态下,点击修改密码。这个时候我们发现用户名变为不可修改的状态(当然我们可以通过修改前端的代码让这个用户名变为可以修改的状态)
不可修改就 说明网站开发人员不想让用户修改用户名。这种情况常常出现随意修改其他用户密码的漏洞。

 

2. 这里抓取到数据包,观察数据包,数据包中包含用户名,旧密码和新密码。 

3、将用户名修改成的其他的用户名

 

4、发现wangkaijiang的密码修改成功

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值