目录

0X00 前言

0X01 无效验证

0X02 客户端验证绕过

0X03 短信轰炸

0X04 验证码爆破

0X05 验证码与手机号未绑定

0X06 代码层逻辑缺陷


0X00 前言

  手机验证码在web应用中得到越来越多的应用,通常在用户登陆,用户注册,密码重置等业务模块用手机验证码进行身份验证。针对手机验证码可能存在的问题,收集了一些手机验证码漏洞的案例,这里做一个归纳总结,在测试中,让自己的思路更加明确。常见的手机验证码漏洞如下:

1、无效验证

2、客户端验证绕过

3、短信轰炸

4、验证码爆破

5、验证码与手机号未绑定

0X01 无效验证

  有验证码模块,但验证模块与业务功能没有关联性,此为无效验证,一般在新上线的系统中比较常见。

案例一:

  获取短信验证码后,随意输入验证码,直接输入两次密码,可成功更改用户密码,没有对短信验证码进行验证,可能导致CSRF等问题。

案例二:任意用户注册

  第一步,利用自己的手机号接收验证码进行验证,下一步跳转到一个设定密码的页面

  第二步,抓包,篡改手机号,使用任意手机号进行注册

问题剖析:业务一致性存在安全隐患,身份验证与密码修改过程分开,验证无效。

参考链接:https://woo.49.gs/static/bugs/wooyun-2016-0189300.html

        https://woo.49.gs/static/bugs/wooyun-2013-026652.html

0X02 客户端验证绕过

  客户端验证是不安全的,可能导致任意账号注册、登录及重置任意用户密码等一系列问题。

案例一:直接返回明文验证码

  点击获取收集验证码,监听到两条json数据,可以发现验证码就藏在ticket里面,输入9360即可登陆成功。

案例二:返回密文验证码

  验证加密后返回客户端,用户解密即可获取验证码。

案例三:拦截替换返回包

  第一步,使用正常账号修改密码,获取验证码通过时服务器返回数据,保存该信息

  第二步,使用fiddler下断,之后点击确定,服务器会返回验证码错误之类的信息,使用{"MessageHeader":{"MessageID":"RSP036","ErrorCode":"S000","Description":"成功!"}}此信息进行替换后再执行,密码修改成功。

问题剖析:常见于APP等客户端软件,通过拦截替换返回信息,绕过客户端本地验证。

参考链接:吉祥航空可以绕过手机验证码修改任意账号密码

      http://cb.drops.wiki/bugs/wooyun-2015-0104509.html

0X03 短信轰炸

  短信轰炸是手机验证码漏洞中最常见的一种漏洞类型。

  在测试的过程中,对短信验证码接口进行重放,导致大量发送恶意短信。

案例一:无限制,任意下发

案例二:有一定时间间隔,无限下发

  每隔60秒可下发一条短信,无限下发,短信轰炸。在测试过程中,可通过编写Python脚本来计算短信下发时间间隔,实现短信轰炸。

#coding=utf-8
import json
import requests
import time
start_time = time.time()
count =input("Please input counts:")
phone =raw_input("Please inut your phone:")
i=0
while (i<count):url= "http://xxxx.cn:9092/map/GenerationUpdate"data=json.dumps({"headerInfo": { "functionCode": "randomcode4G"},"requestContent":{"phoneNumber":phone}})header = { 'User-Agent' : 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Version/10.0 Mobile/14D27 Safari/602.1''Host': 'xxxx.com:9092',}  r = requests.post(url, data=data,headers=header,timeout=5)result=r.contentif result.count('serviceCode":0'):print 'Sending message : %d seconds ' % (time.time()-start_time)i=i+1#print 'send %s time'%(i)

0X04 验证码爆破

  短信验证码一般由4位或6位数字组成,若服务端未对验证时间、次数进行限制,则存在被爆破的可能。

  输入手机号获取验证码,输入任意短信验证码,发起请求,抓包,将短信验证码字段设置成payloads取值范围为000000-999999进行暴力破解,根据返回响应包长度判断是否爆破成功。

0X05 验证码与手机号未绑定

  一般来说短信验证码仅能使用一次,验证码和手机号未绑定,验证码一段时期内有效,那么就可能出现如下情况:

  1、A手机的验证码,B可以拿来用

  2、A手机在一定时间间隔内接到两个验证码,都可以用。(该问题可能为产品策略设定,参考链接:https://woo.49.gs/static/bugs/wooyun-2012-08679.html)

  检测接收验证码的手机号和绑定的手机号是否一致。

案例一:任意用户密码重置

  1.使用自己手机号收取验证码

  2.自己的验证码和对方的手机号填上,下一步城管设置新密码

0X06 代码层逻辑缺陷

如果代码层的逻辑是这样子:
  1、验证手机号是否已发送给验证码
  2、去除用户输入的空格和其他特殊字符
  3、重新发送验证码

那么,可利用"\n"和空格可绕过,持续递增空格就可造成无限短信轰炸。

思路:有空就在手机号号码后面加一位进行FUZZ,可能会发现不一样的惊喜。

参考链接:

https://woo.49.gs/static/bugs/wooyun-2014-080315.html

https://woo.49.gs/static/bugs/wooyun-2012-013836.html

解决方案:

  1.在服务器进行有效验证,手机号和验证码在服务器进行唯一性绑定验证。

  2.在服务端限制验证码发送周期,设置时效,限制次数。

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

手机验证码常见漏洞总结相关推荐

  1. 短信验证码常见漏洞总结

    使用短信验证码验证身份已经是很普遍的了,注册和忘记密码时最为常见.但是在实际应用中,很多产品的短信验证接口存在诸多漏洞,很多人在开发中也是没有注意到这些问题,因此呢给企业和个人造成不必要的损失.接下来 ...

  2. 六种黑客入侵手机的常见方式

    六种黑客入侵手机的常见方式 在移动网络科技高速发展的今天,我们每个人的手机都有可能成为黑客攻击的对象,下面为大家介绍6种黑客入侵手机的常见方式,希望能够帮助大家避免手机被不对象攻击. 1.网络钓鱼攻击 ...

  3. 小心黑客入侵,六种黑客入侵手机的常见方式

    9月5日,国家计算机病毒应急处理中心发布了关于西北工业大学遭受境外网络攻击的调查报告,初步判明攻击活动源自美国国家安全局的"特定入侵行动办公室",其使用41种网络攻击武器,对西北工 ...

  4. 常见漏洞知识库(原理/场景/修复)

    Jsonp漏洞 0x01 漏洞描述 1. 一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨域请求,一律不准. 2. 不过我 ...

  5. 密码找回,验证码绕过漏洞详解

    前言 在TOP10漏洞中,逻辑漏洞被称为"不安全的对象引用,和功能级访问控制缺失"!此外,逻辑漏洞也是作为渗透测试人员必须深入了解和学习的,而且日后逻辑漏洞在我们的漏洞产出中也是占 ...

  6. 常见漏洞扫描工具AWVS、AppScan、Nessus的使用

    HVV笔记--常见漏洞扫描工具AWVS.AppScan.Nessus的使用 1 AWVS 1.1 安装部署 1.2 激活 1.3 登录 1.4 扫描web应用程序 1.4.1 需要账户密码登录的扫描 ...

  7. 【Web安全笔记】之【4.0 常见漏洞攻防】

    文章目录 4.0 常见漏洞攻防 4.1 SQL注入 4.1.1 注入分类 1. 简介 2. 按技巧分类 1). 盲注 2). 报错注入 3). 堆叠注入 3. 按获取数据的方式分类 1). inban ...

  8. android WebView详解,常见漏洞详解和安全源码(下)

    上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑.  上篇:android WebView详解,常见漏洞详解和安全源码(上)  转载请注明出处:http ...

  9. android WebView详解,常见漏洞详解和安全源码(上)

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...

最新文章

  1. 链表问题15——将搜索二叉树转换成双向链表
  2. arcgis9.2系列下载
  3. 对seq2seq的一些个人理解
  4. helm search搜索charts命令
  5. 实战|Python轻松实现动态网页爬虫(附详细源码)
  6. Windows用户最佳远程控制器——Xmanager
  7. 软件测试简历制作技巧与方法
  8. libpng库的移植与使用
  9. solidworks图纸模板添加_solidworks工程图模板如何设置和替换?
  10. 记一次机房断电办公室网络瘫痪的恢复经过
  11. ESP8266学习笔记(3)——GPIO接口使用
  12. 安卓手机屏幕分辨率怎么调整
  13. 程序员 面试如何介绍自己
  14. 《Web前端》学习总结
  15. 读《逍遥游》感叹中国教育
  16. 机房收费系统——用户类型
  17. i710750h和i510300h对比哪个好 i5 10300h和i7 10750h选哪个
  18. Redis-Lua语言:简单小巧但功能强大
  19. git常用操作--分支
  20. 戴尔服务器硬盘non-raid,DELL 服务器 PERC10配置RAID与Non-RAID混用方法

热门文章

  1. c++ 求四边形面积和周长_c++-面向对象类的示例-求周长面积,判断体积相等-文件操作和一般操作...
  2. Redash中文版:低代码平台之3D+BI开发
  3. 实现h5端播放rtsp流视频--通过ffmpeg转流实现
  4. 遇到svg 图标颜色无法修改怎么处理
  5. 【GNURadio实验报告】实验3-关于GNU Radio和HackRF的采样率问题
  6. 树-广度优先和深度优先搜索算法
  7. 找公司 CTO 聊了聊,原来技术总监需要这些能力!
  8. 去掉图片黑背景输出为透明背景
  9. 硬件基础知识---如何设计一个三极管放大电路
  10. python 基于PHP+MySQL的学生成绩管理系统