短信发送功能点漏洞挖掘

admin 2026-06-09 04:18:13 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细分析了短信发送功能中的多种安全漏洞,包括并发短信轰炸、时间戳绕过、参数篡改、验证码爆破、逻辑漏洞等攻击手法。文章提供了具体的技术实现步骤和漏洞利用案例,并针对每种漏洞给出了可操作的测试方法。同时强调了在提交漏洞时需重点说明危害性以提升漏洞评级,但未提供具体的防护方案。 综合评分: 72 文章分类: 漏洞分析,WEB安全,渗透测试,安全开发,移动安全


cover_image

短信发送功能点漏洞挖掘

GG安全

2026年1月19日 15:29 天津

在小说阅读器读本章

去阅读

以下文章来源于红云谈安全 ,作者红云谈安全

红云谈安全 .

把网络安全讲好、把技术搞好,持此之剑,破长空!

免责声明

由于传播、利用本公众号红云谈安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号红云谈安全及作者不为承担任何责任,一旦造成后果请自行承担!本文为连载文章欢迎大家关注红云谈安全公众号!

短信轰炸

并发短信轰炸

在发送验证码中有图形验证码或者其他验证时并发手段是常用的一种绕过思路,不仅仅在短信发送能够利用并发手段,领取优惠券、签到等功能点都能够利用并发手段。点击发送验证码并抓包安装并发插件先不要放掉该数据包,把发送到burp插件turbo intruder里

然后选择race.py这个专门的测试并发漏洞的脚本,并且自行手动在请求包里添加req: %s字段后,就可以开始攻击了:

成功并发

造成短信轰炸

时间戳绕过

很多发送短信验证码的时候都会出现time类似这个参数对于这类参数有什么作用。对于这类参数大多数都是使用时间戳来进行验证,我们只需要将时间提前即可绕过,比如抓到的包的时间是08:09,我直接更改为08:20,这边我也挖过非常多这类漏洞。还有就是他会比时间戳多出一两个数字

时间截在线转换地址:

https://www.matools.com/timestamp

加一些数据绕过

+86 不知道你是否会发现很多发送短信验证码的前面都会有+86这个,+86是中国国际区号,用于拨打国际电话,而我们可以利用这一点在+86的后面再添加+86来实现绕过 加空格

有的是对cookie进行验证,还有就是你得观察一下数据包中的其他参数如type之类的,有的在type参数后面随便加一个数字字母同样也能绕过,这些得跟实际数据包进行观察与尝试。

逻辑绕过

对于网站将数据加密或者签名的短信验证功能点,在无法获取签名和加密密钥的情况下我们要如何来造成短信轰炸呢?这边是研究的一个新思路就是在正常情况下我们使用下面的数据包无论是用上面的哪种方式都不可以造成短信轰炸,并且每次点击发送验证码并抓包数据包都在发送变化。这边可以利用以下方式:点击发送验证码并抓包将数据包放到reperter模块,并丢弃该数据包(一定不要放包forward),然后再次回到网站使用该手机号进行发送验证码并重复刚刚的步骤

这样就获取到多个进行了签名或加密的数据包,一次快速点击go,看能否发送多条短信,如果能够就说明存在短信轰炸漏洞

四位验证码爆破漏洞(高危)

对于发送的四位验证码可爆破的话那就是高危可以实现任意用户登陆注册,普通四位验证码爆破我就不说了,这里我遇到了一个有时间限制爆破的漏洞,这类漏洞提交的时候要怎么说是很关键的(在我们提交漏洞时要善于用详情说出自己漏洞的危害,对一些限制条件进行有利说明,这样漏洞才能高危严重呀)

「漏洞说明:」

发送的验证码只有四位,并且在输入验证码错误次数没有限制,只有时间限制,在两分钟内最少都可以爆破一千次以上(那么只要攻击者一直尝试总有一次在自己的爆破范围内,并且时间不会太长,最多一个小时就可以修改一个用户的密码)造成任意用户登录

成功爆破

生成四位验证码和六位验证码脚本如下:

python四位手机号验证码生成

for i in range(10000):
&nbsp; &nbsp;&nbsp;if&nbsp;i<10:
&nbsp; &nbsp; &nbsp; &nbsp; i =&nbsp;'000'+str(i)
&nbsp; &nbsp;&nbsp;elif&nbsp;10<=i and i<100:
&nbsp; &nbsp; &nbsp; &nbsp; i ='00'+str(i)
&nbsp; &nbsp;&nbsp;elif&nbsp;100<=i and i<1000:
&nbsp; &nbsp; &nbsp; &nbsp; i ='0'+str(i)
&nbsp; &nbsp;&nbsp;else:
&nbsp; &nbsp; &nbsp; &nbsp; i=str(i)
&nbsp; &nbsp; with open('4位手机验证码.txt',&nbsp;'a') as f:
&nbsp; &nbsp; &nbsp; &nbsp; f.write(i+"\n")

python六位手机号验证码生成

for&nbsp;i&nbsp;in&nbsp;range(1000000):
&nbsp; &nbsp;&nbsp;if&nbsp;i<10:
&nbsp; &nbsp; &nbsp; &nbsp; i =&nbsp;'00000'+str(i)
&nbsp; &nbsp;&nbsp;elif&nbsp;10<=i and i<100:
&nbsp; &nbsp; &nbsp; &nbsp; i ='0000'+str(i)
&nbsp; &nbsp;&nbsp;elif&nbsp;100<=i and i<1000:
&nbsp; &nbsp; &nbsp; &nbsp; i ='000'+str(i)
&nbsp; &nbsp;&nbsp;elif&nbsp;1000<=i and i<10000:
&nbsp; &nbsp; &nbsp; &nbsp; i ='00'+str(i)
&nbsp; &nbsp;&nbsp;elif&nbsp;10000<=i and i<100000:
&nbsp; &nbsp; &nbsp; &nbsp; i ='0'+str(i)
&nbsp; &nbsp;&nbsp;else:
&nbsp; &nbsp; &nbsp; &nbsp; i=str(i)
&nbsp; &nbsp; with open('6位手机验证码.txt',&nbsp;'a') as f:
&nbsp; &nbsp; &nbsp; &nbsp; f.write(i+"\n")

逻辑漏洞(高危)

登录点输入手机发送验证码并抓包

在该手机号后再添加,(逗号)和一个手机号(抓包修改phone的参数值为”phone=手机号1,手机号2″)此时攻击者就能同时收到他人手机号的验证码,从而实现任意用户登录,同理在邮箱验证功能点也可能存在该漏洞,还有一种思路是将整个参数和电话号码再添加一遍:”phone=手机号1&phone=手机号2″

验证码复用

在正常逻辑下登录一个系统需要一个手机验证码,该验证码用过后就不能用了,但是换个浏览器使用这个验证码依然能够登录说明存在验证码复用漏洞

输入手机号点击获取验证码、手机收到验证码如下:

输入验证码登录成功后换个浏览器,再次使用该手机号验证码登录、发现发来的验证码还是上次使用的验证码、且输入该验证码也能登录、正常情况下验证码用过是不能再用的。

验证码前端显示和验证码内容可控漏洞

填写个人信息后点击发送验证码并抓包

发现验证码在前端显示

并且验证码内容可控

收到短信如下:

1

福利放送

再次声明:本公众号及其发布的内容的使用者需自行承担由此产生的任何直接或间接的后果和损失,GG安全公众号和原文章作者不承担任何责任。

edusrc邀请码

    免费不限量提供edusrc邀请码及玄机邀请码,可在的菜单栏资源获取-edusrc邀请码中获取。

2

往期精彩

Wifi Pineapple(大菠萝)无线攻击

绝版乌云重现:在VM中复活的安全宝藏

钓鱼佬永不空军!社g之学姐送我“严重”漏洞


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:GG安全 《短信发送功能点漏洞挖掘》

短信发送功能点漏洞挖掘 网络安全文章

短信发送功能点漏洞挖掘

文章总结: 本文详细分析了短信发送功能中的多种安全漏洞,包括并发短信轰炸、时间戳绕过、参数篡改、验证码爆破、逻辑漏洞等攻击手法。文章提供了具体的技术实现步骤和漏
评论:0   参与:  0