目录
审核大大,本篇文章全程打码,并无敏感信息
前言
此漏洞是很久之前第一次挖小程序时碰到的第一个漏洞,最后经过测试发现PC端和小程序使用的是同一个接口,本次的漏洞过于简单,仅做记录和小白学习.
免责声明
博文中涉及的方法可能带有危害性,仅供安全研究与教学之用,读者将其方法用作做其他用途,由读者承担全部法律及连带责任,文章作者不负任何责任.
一、漏洞原理
在绝大部分网站中,都会提供短信来进行用户验证,如注册、登陆、修改密码、转账等功能。通过短信可以简单便捷地进行用户验证,但是,如果验证逻辑存在缺陷,导致用户可以无限制请求短信接口,就会造成短信轰炸漏洞,也属于防护功能滥用类漏洞。
通俗来说短信轰炸漏洞,就是可以无限制地发送短信,原理由于短信业务逻辑设计缺陷,没对短信发送次数做限制,导致可以大量重复发送短信验证码。该漏洞会对其他用户造成骚扰或使厂商的运营商短信费用的增加,造成损失。
漏洞的利用过程也比较简单,找到存在发送短信的接口,向短信接口发起大量的请求,即可完成攻击过程。短信轰炸漏洞也能造成不小的危害,如会造成短信通道阻塞、短信资源被恶意消耗,如果被灰黑产利用,制作成短信轰炸机,还会造成企业形象受损,若被用户投诉还可能造成接口封禁等威胁。
二、漏洞类型
一般短信轰炸分为二种类型,叫法也不一,其实也就发送的对象不一样
2.1 纵向短信轰炸
只针对绑定的一个用户,或是只能给同一个用户发送短信
2.2 横向短信轰炸
短信接口没有进行绑定,如果出现上面的短信轰炸做了限制不能一直给同一个用户发送短信,可以尝试一直更换手机号,来遍历达到短信轰炸的效果
2.3 并发短信轰炸
这其实是绕过限制的一种短信轰炸的方式,可以尝试通过burp的插件来进行并发,当然并发可以应用在很多漏洞上的(逻辑漏洞较多).利用并发进行短信轰炸:对短信发送做次数限制,可通过并发进行爆破从而达到绕过的效果
三、漏洞实战
因为本次的三个功能点都是同一个短信接口,所以三个漏洞就合并为一个,只能说离谱,不过也常见
3.1 漏洞功能点数据包
phoneNumbers是手机号填写处,这里我用*代替了,把获取到的数据包发送到重放模块,然后一直点击重放,一般短时间超过5次收到验证码基本就没有做限制了
GET /api/blade-app/appUser/sendSms?phoneNumbers=********** HTTP/1.1
Host:
Xweb_xhr: 1
Authorization: Basic c2FiZXI6c2FiZXJfc2VjcmV0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b08) XWEB/9129
Content-Type: application/json
Accept: */*
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://servicewechat.com/wx80101099b3aa1896/7/page-frame.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close
3.2 功能点一:小程序注册处
点击获取验证码,也就是图中的绿色的36秒处
3.3 功能点二:小程序找回密码处
还是和上面一样
3.4 功能点三:Web端学员注册处
这个是web端的,有个学员注册,点击发送验证码,和前面的小程序端的接口居然一致
3.5 效果展示
如图所示,短时间内收到大量短信,证明漏洞确实存在