安全测试:孔夫子旧书网短信接口安全测试,你的短信接口到底有多危险,可能瞬间损失过万,短信接口防盗刷测试
– “隐患险于明火,防范胜于救灾,责任重于泰山”
安全问题不容忽视,不要亡羊补牢!
- 前言
- 一丶找到对外短信接口
- 二丶分析外部防御措施
- 三丶查看请求报文
- 四丶分析测试
- 1. 分析测试要点
- 2. 编写代码模拟请求进行测试
- 五丶结果分析
- 六丶结语
前言
本文详细介绍了针对发送短信验证码接口的安全性测试过程,包含思路、部分测试代码已经测试结果。
本次测试网站 —孔夫子旧书网(kongfz.com)
孔夫子旧书网是国内领先的古旧书交易平台,汇集全国各地13000家网上书店,50000家书摊,展示多达9000万种书籍;
一丶找到对外短信接口
从该网站注册入口可以发现,有提供发送短信验证码的服务。
二丶分析外部防御措施
输入手机号
点击发送验证码
发现需要先输入图片验证码,输入后才可点击发送
外部防御措施:图片验证码
三丶查看请求报文
1. 找到发送短信的请求
按下F12
打开浏览器控制台,再次点击发送验证码
按钮通过控制台找出发送短信的请求。
2. 查看请求方式
3. 查看请求报文头
4. 查看请求参数
captchaCode
为图片验证码的值
5. 查看返回值
四丶分析测试
1. 分析测试要点
- 请求须携带图形验证码参数
- 请求为post请求无法在地址栏直接访问测试
2. 编写代码模拟请求进行测试
该网站的图形验证码为普通的数字加字母或者简单计算题的验证码:
解决方案:通过机器学习,图像处理等方法创建识别库。
大致思路:
- 处理图片,将图片通过降噪,二值化等方式处理
- 将字符分割,学习训练
- 最终识别出图片中的各个字符
这里不做赘诉,感兴趣可以看下相关验证码识别的文章:
《使用深度学习来破解 captcha 验证码》
《验证码终结者-基于CNN+BLSTM+CTC的训练部署套件》
接着利用Java模拟报文请求 ,进行测试。部分代码如下:
//配置请求头public Object setHeads(CloseableHttpClient httpclient, CookieStore cookieStore, Hashtable<String, String> inheads,LinkedHashMap<String, String> outheads, Hashtable<String, String> input) {getCookie(cookieStore, httpclient, "https://login.kongfz.com/register/index.html", inheads, outheads);String cookieStr = GetCookieHead.CookieHashToString(outheads);if (cookieStr != null) {inheads.put("Cookie", cookieStr);}inheads.put("Host", "login.kongfz.com");inheads.put("Accept", "application/json, text/javascript, */*; q=0.01");inheads.put("Origin", "https://login.kongfz.com");inheads.put("X-Requested-With", "XMLHttpRequest");inheads.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");inheads.put("Referer", "https://login.kongfz.com/Pc/Login/iframe");return inheads;}
//配置请求参数
public Object setParams(CloseableHttpClient httpclient, CookieStore cookieStore, Hashtable<String, String> inheads, LinkedHashMap<String, String> outheads, Hashtable<String, String> input, String phone) {List<BasicNameValuePair> paramList = new ArrayList<>();paramsList.add(new BasicNameValuePair("mobile", phone));paramsList.add(new BasicNameValuePair("captchaCode", input.get("imgCode")));paramsList.add(new BasicNameValuePair("bizType", "2"));return paramList;}
//配置请求
public RetEntity reg(CloseableHttpClient httpclient, CookieStore cookieStore, Hashtable<String, String> input, String phone) {Hashtable<String, String> inheads = new Hashtable<>();LinkedHashMap<String, String> outheads = new LinkedHashMap<>();String imgCode = this.getImgeCode(phone, httpclient, cookieStore, "get", imgUrl, inheads, outheads, input,imgOutMap);input.put("imgCode", imgCode != null ? imgCode : "");retEntity = this.userClick(httpclient, cookieStore, "post", smsUrl, inheads, outheads, input, phone);return retEntity;}
启动测试:
1次:
手机号码唯一,IP唯一:
10次 --间隔时间1秒:
10次 --间隔时间60秒:
手机号码不唯一,IP唯一:
10次 --间隔时间1秒:
10次 – 间隔时间10秒:
10次 – 间隔时间20秒:
五丶结果分析
测试目标:
针对发送短信验证码接口进行安全性测试。
测试思路:
1.找到请求接口
2.分析请求报文
3.模拟请求测试
测试结果:
1.单手机号频率限制(1次/分钟)兼次数限制
2.单IP频率限制(3次/分钟)
测试结论:
前台通过图形验证码进行限制,后台手机号和Ip均有频率限制或次数限制,当遇到大量更换手机号以及IP的攻击时,该网站的所有防御措施均无效。
风险等级: 高
六丶结语
很多人在短信服务刚开始建设的阶段,可能不会在安全方面考虑太多,理由有很多。
比如:“ 需求这么赶,当然是先实现功能啊 ”,“ 业务量很小啦,系统就这么点人用,不怕的 ” , “ 我们怎么会被盯上呢,不可能的 ”等等。有一些理由虽然有道理,但是该来的总是会来的。前期欠下来的债,总是要还的。越早还,问题就越小,损失就越低。
所以大家在安全方面还是要重视。(血淋淋的栗子!)#安全短信#
戳这里→康康你手机号在过多少网站注册过!!!
谷歌图形验证码在AI 面前已经形同虚设,所以谷歌宣布退出验证码服务, 那么当所有的图形验证码都被破解时,大家又该如何做好防御呢?
>>相关阅读
《腾讯防水墙滑动拼图验证码》
《百度旋转图片验证码》
《网易易盾滑动拼图验证码》
《顶象区域面积点选验证码》
《顶象滑动拼图验证码》
《极验滑动拼图验证码》
《使用深度学习来破解 captcha 验证码》
《验证码终结者-基于CNN+BLSTM+CTC的训练部署套件》
安全测试:孔夫子旧书网短信接口安全测试,你的短信接口到底有多危险,可能瞬间损失过万,短信接口防盗刷测试相关推荐
- 前嗅教你大数据:采集孔夫子旧书网
l 采集网站 [场景描述]采集孔夫子旧书网数据. [源网站介绍]孔夫子旧书网是国内专业的古旧书交易平台,汇集全国各地13000家网上书店,50000家书摊,展示多达9000万种书籍:大量极具收藏价值的 ...
- 爬虫案例:类和对象思维获取孔夫子旧书网信息
本案例只做学习,不做他用! import os import re import requests import random from lxml import etree from bs4 impo ...
- [光劍藏書館2020] 孔夫子旧书网
在孔夫子旧书网上开了一个书店,感觉挺不错的,推荐给大家: [光劍藏書館2020]
- 【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化
背景: 之前用过芝麻IP,写过这几篇文章 <[Python]芝麻HTTP代理系列保姆级全套攻略(对接教程+自动领取每日IP+IP最优算法)> <[Python]记录抓包分析自动领取芝 ...
- 我们公司的短信接口被刷了,瞬间损失两万,怎么解决?(短信接口被盗刷系列1)
1 我们公司的短信接口被刷了,瞬间损失两万 前两天的中午像往常一样热,太阳不知疲倦的在天空燃烧,热跑了云彩和鸟儿,马上就要点燃空气和我的脑神经.为我和电脑降温的,是我简陋的书桌上的小电扇,没有它的话, ...
- 短信接口被恶意调用,瞬间损失两万,怎么解决?
1 我们公司的短信接口被恶意调用,瞬间损失两万 前两天的中午像往常一样热,太阳不知疲倦的在天空燃烧,热跑了云彩和鸟儿,马上就要点燃空气和我的脑神经.为我和电脑降温的,是我简陋的书桌上的小电扇,没有它的 ...
- 安全测试 : 潮点视频(shipin520.com)网站短信接口安全测试,你的网站安全吗?这一漏洞可能让你瞬间损失过万。
– "隐患险于明火,防范胜于救灾,责任重于泰山" 安全问题不容忽视,不要亡羊补牢! 前言 一丶找到对外短信接口 二丶分析外部防御措施 三丶查看请求报文 四丶分析测试 1. 分析测试 ...
- 听云短信接口安全测试,你的短信接口到底有多危险,可能瞬间损失过万,短信接口防盗刷测试
– "隐患险于明火,防范胜于救灾,责任重于泰山" 安全问题不容忽视,不要亡羊补牢! 前言 一丶找到对外短信接口 二丶分析外部防御措施 三丶查看请求报文 四丶分析测试 1. 直接在浏 ...
- 终端软件测试风险,浅谈三大终端测试 - 测试泡泡 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
浅谈三大终端测试 K#JCx8q6v0文章出处:新浪科技 作者:李波 马治国 孙元宇 发布时间:2005-11-01 ac"x"E h)?+CywU3J0WCDMA.CDMA200 ...
最新文章
- Ubuntu下python升级pip(ImportError: cannot import name 'main')
- 利用反射球实现镜面效果
- 初中职校计算机学什么,职高有哪些专业 初中生毕业上职高学什么好
- Android之jni编译出现error: jump to label ‘XXXX’ [-fpermissive]解决办法
- php支持二级域名共享,PHP二级域名session共享方案
- 计算机网络模拟校园,计算机网络课程设计模拟校园网组网实验.doc
- 区块链技术核心概念与原理讲解-Tiny熊
- 「兼容M1」iZotope RX 9 Advanced for Mac - 音频修复工具
- python center用法_【语言学习】python——字符串
- 公司所有账号和密码,都要记录成文档
- curl和libcurl的区别简介
- noi linux 比赛使用哪个编译器,2020NOI考题及答案
- 微信再次重大更新,同时支持5个浮窗展示,你怎么看?
- Java小游戏,防止物体跑出四周边界的算法
- 新词发现:中文新词识别技术简介
- PS从复制图层到的项目
- mysql 分区表 外键_【MySQL】表分区
- 下一个颠覆的领域:区块链如何影响审计行业?(中)
- 友推微信分享失败解决办法
- 前端 Leader 如何做好团队规划?阿里内部培训总结公开
热门文章
- 为什么新闻稿发布效果不明显?
- JNA调用dll - java集成一美IP对讲SDK(dll文件)
- 试问失恋怎么说 郭乔伊抛单曲《爱情没电了》
- 基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件
- html5加本地音乐播放器,HTML5打造的炫酷本地音乐播放器-喵喵Player
- clock_gettime函数详解
- Gitblit自建仓库及多人使用
- el-table组件 数据刷新之后选中的列表状态消失问题
- python生成达芬奇uuid
- ggplot绘制柱状图 python_ggplot2|绘制GO富集柱形图