– “隐患险于明火,防范胜于救灾,责任重于泰山”

安全问题不容忽视,不要亡羊补牢!

  • 前言
  • 一丶找到对外短信接口
  • 二丶分析外部防御措施
  • 三丶查看请求报文
  • 四丶分析测试
    • 1. 分析测试要点
    • 2. 编写代码模拟请求进行测试
  • 五丶结果分析
  • 六丶结语

前言

本文详细介绍了针对发送短信验证码接口的安全性测试过程,包含思路、部分测试代码已经测试结果。
本次测试网站 —孔夫子旧书网(kongfz.com)
孔夫子旧书网是国内领先的古旧书交易平台,汇集全国各地13000家网上书店,50000家书摊,展示多达9000万种书籍;

一丶找到对外短信接口

从该网站注册入口可以发现,有提供发送短信验证码的服务。

二丶分析外部防御措施

  1. 输入手机号

  2. 点击发送验证码

发现需要先输入图片验证码,输入后才可点击发送

外部防御措施:图片验证码

三丶查看请求报文

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的训练部署套件》

安全测试:孔夫子旧书网短信接口安全测试,你的短信接口到底有多危险,可能瞬间损失过万,短信接口防盗刷测试相关推荐

  1. 前嗅教你大数据:采集孔夫子旧书网

    l 采集网站 [场景描述]采集孔夫子旧书网数据. [源网站介绍]孔夫子旧书网是国内专业的古旧书交易平台,汇集全国各地13000家网上书店,50000家书摊,展示多达9000万种书籍:大量极具收藏价值的 ...

  2. 爬虫案例:类和对象思维获取孔夫子旧书网信息

    本案例只做学习,不做他用! import os import re import requests import random from lxml import etree from bs4 impo ...

  3. [光劍藏書館2020] 孔夫子旧书网

    在孔夫子旧书网上开了一个书店,感觉挺不错的,推荐给大家: [光劍藏書館2020]

  4. 【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

    背景: 之前用过芝麻IP,写过这几篇文章 <[Python]芝麻HTTP代理系列保姆级全套攻略(对接教程+自动领取每日IP+IP最优算法)> <[Python]记录抓包分析自动领取芝 ...

  5. 我们公司的短信接口被刷了,瞬间损失两万,怎么解决?(短信接口被盗刷系列1)

    1 我们公司的短信接口被刷了,瞬间损失两万 前两天的中午像往常一样热,太阳不知疲倦的在天空燃烧,热跑了云彩和鸟儿,马上就要点燃空气和我的脑神经.为我和电脑降温的,是我简陋的书桌上的小电扇,没有它的话, ...

  6. 短信接口被恶意调用,瞬间损失两万,怎么解决?

    1 我们公司的短信接口被恶意调用,瞬间损失两万 前两天的中午像往常一样热,太阳不知疲倦的在天空燃烧,热跑了云彩和鸟儿,马上就要点燃空气和我的脑神经.为我和电脑降温的,是我简陋的书桌上的小电扇,没有它的 ...

  7. 安全测试 : 潮点视频(shipin520.com)网站短信接口安全测试,你的网站安全吗?这一漏洞可能让你瞬间损失过万。

    – "隐患险于明火,防范胜于救灾,责任重于泰山" 安全问题不容忽视,不要亡羊补牢! 前言 一丶找到对外短信接口 二丶分析外部防御措施 三丶查看请求报文 四丶分析测试 1. 分析测试 ...

  8. 听云短信接口安全测试,你的短信接口到底有多危险,可能瞬间损失过万,短信接口防盗刷测试

    – "隐患险于明火,防范胜于救灾,责任重于泰山" 安全问题不容忽视,不要亡羊补牢! 前言 一丶找到对外短信接口 二丶分析外部防御措施 三丶查看请求报文 四丶分析测试 1. 直接在浏 ...

  9. 终端软件测试风险,浅谈三大终端测试 - 测试泡泡 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    浅谈三大终端测试 K#JCx8q6v0文章出处:新浪科技 作者:李波 马治国 孙元宇 发布时间:2005-11-01 ac"x"E h)?+CywU3J0WCDMA.CDMA200 ...

最新文章

  1. Ubuntu下python升级pip(ImportError: cannot import name 'main')
  2. 利用反射球实现镜面效果
  3. 初中职校计算机学什么,职高有哪些专业 初中生毕业上职高学什么好
  4. Android之jni编译出现error: jump to label ‘XXXX’ [-fpermissive]解决办法
  5. php支持二级域名共享,PHP二级域名session共享方案
  6. 计算机网络模拟校园,计算机网络课程设计模拟校园网组网实验.doc
  7. 区块链技术核心概念与原理讲解-Tiny熊
  8. 「兼容M1」iZotope RX 9 Advanced for Mac - 音频修复工具
  9. python center用法_【语言学习】python——字符串
  10. 公司所有账号和密码,都要记录成文档
  11. curl和libcurl的区别简介
  12. noi linux 比赛使用哪个编译器,2020NOI考题及答案
  13. 微信再次重大更新,同时支持5个浮窗展示,你怎么看?
  14. Java小游戏,防止物体跑出四周边界的算法
  15. 新词发现:中文新词识别技术简介
  16. PS从复制图层到的项目
  17. mysql 分区表 外键_【MySQL】表分区
  18. 下一个颠覆的领域:区块链如何影响审计行业?(中)
  19. 友推微信分享失败解决办法
  20. 前端 Leader 如何做好团队规划?阿里内部培训总结公开

热门文章

  1. 为什么新闻稿发布效果不明显?
  2. JNA调用dll - java集成一美IP对讲SDK(dll文件)
  3. 试问失恋怎么说 郭乔伊抛单曲《爱情没电了》
  4. 基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件
  5. html5加本地音乐播放器,HTML5打造的炫酷本地音乐播放器-喵喵Player
  6. clock_gettime函数详解
  7. Gitblit自建仓库及多人使用
  8. el-table组件 数据刷新之后选中的列表状态消失问题
  9. python生成达芬奇uuid
  10. ggplot绘制柱状图 python_ggplot2|绘制GO富集柱形图