安全测试之忘记密码存在的问题
2016-02-26 17:10
344 查看
忘记密码这个功能相对于登录功能来说,是比较容易忽略的,因为大家可能觉得忘记密码(找回密码)比较简单,大多数的思路便是通过用户名、手机、邮件等找回密码,其实这个功能还是存在很多可以攻击的地方,也是比较容易出现安全问题的。
某网站的忘记密码功能是通过手机号码找回,我输入自己的手机号码,点击发送重置密码短信之后,我查看源代码(或者通过截取post请求),发现验证码存在源代码网页上(或者截取到的post请求可以查看),而且还没有进行加密(就是因为没有进行加密,才方便于联想到它是验证码,也方便重新将验证码输入后重置密码),于是我就可以输入其他人的手机号码,这样通过截取信息就可以获取相应的验证码,进而可以重置这个用户的密码信息。
场景二:截取数据将手机号换成自己的,验证码直接发送到自己手机上
假设有这样一个网站,重置密码页面由用户名、手机号码和验证码组成,这个页面中如果输入一个已存在的用户,手机号码会自动生成,但是会把中间4位使用*号代替(这是一个漏洞,将两个校验简化成了一个校验)。
某人可以通过暴力破解的方式查找到一个存在的用户名,然后自动生成了一个带有*的手机号码,我输入验证码后点击重置密码按钮,同时进行抓包截取这个请求,然后分析结果发现,post请求中有没有加密的手机号码,11位全部可以读取(是明文的),手机明文也是一个问题。
我完全可以将手机号码换成我自己的,然后重新把这个包发出去,这样短信就会发送到我的手机上,短信中有了新密码,我可以以其他人的身份去登录啦(现在好多网站会在短信中给你一个密码,然后建议你去更改)。
下面的两个例子都是发现重置邮件中的链接,虽然进行了MD5加密,但是具有规律性。
场景一:
某网站的重置密码是通过发送邮件的方式,可能我通过使用自己的邮件重置密码,在收到的邮件中发现邮件中的链接是使用id和id的MD5加密过后的字符串组合而成,如果发现了这个规律,就可以通过以下操作:
通过暴力破解查找到已存在的用户名,然后使用暴力破解重置密码链接(即使你没有收到这个邮件,因为邮件中唯一标识是由id组成,id一般是用户的id,用户数量是一定的,可以不断增大id值来暴力破解),这样就可以重置别人的账号信息。
场景二:
某网站的重置密码是通过发送邮件的方式,可能我通过使用自己的邮件重置密码,在收到的邮件中发现邮件中的链接是username的MD5加密后的字符串,发现了规律,我想会不会有一个叫做admin的管理员用户呢,于是试试的心态打开将admin使用MD5加密后的链接,竟然重置成功后使用admin登录进去了,
哇哦哦,这可是管理员的账号啊!!
2.组合破解,使用MD5加密后暴力破解或者综合技术等等。
小方案:
提问:现在有的网站有登录、访问的限制,对次数有限制要求,那怎么使用暴力破解呢?
解答:设置发送包的时间,还有就是要使用变换IP的工具,网上比较多。
注:
本篇博文主要是供学习使用,不作其他用途。
第一类:没有使用加密手段
场景一:直接截取手机验证码某网站的忘记密码功能是通过手机号码找回,我输入自己的手机号码,点击发送重置密码短信之后,我查看源代码(或者通过截取post请求),发现验证码存在源代码网页上(或者截取到的post请求可以查看),而且还没有进行加密(就是因为没有进行加密,才方便于联想到它是验证码,也方便重新将验证码输入后重置密码),于是我就可以输入其他人的手机号码,这样通过截取信息就可以获取相应的验证码,进而可以重置这个用户的密码信息。
场景二:截取数据将手机号换成自己的,验证码直接发送到自己手机上
假设有这样一个网站,重置密码页面由用户名、手机号码和验证码组成,这个页面中如果输入一个已存在的用户,手机号码会自动生成,但是会把中间4位使用*号代替(这是一个漏洞,将两个校验简化成了一个校验)。
某人可以通过暴力破解的方式查找到一个存在的用户名,然后自动生成了一个带有*的手机号码,我输入验证码后点击重置密码按钮,同时进行抓包截取这个请求,然后分析结果发现,post请求中有没有加密的手机号码,11位全部可以读取(是明文的),手机明文也是一个问题。
我完全可以将手机号码换成我自己的,然后重新把这个包发出去,这样短信就会发送到我的手机上,短信中有了新密码,我可以以其他人的身份去登录啦(现在好多网站会在短信中给你一个密码,然后建议你去更改)。
第二类:过于信任MD5加密
MD5加密可以预防一些安全问题,但是不得不承认,它也是一些安全问题的源泉。下面的两个例子都是发现重置邮件中的链接,虽然进行了MD5加密,但是具有规律性。
场景一:
某网站的重置密码是通过发送邮件的方式,可能我通过使用自己的邮件重置密码,在收到的邮件中发现邮件中的链接是使用id和id的MD5加密过后的字符串组合而成,如果发现了这个规律,就可以通过以下操作:
通过暴力破解查找到已存在的用户名,然后使用暴力破解重置密码链接(即使你没有收到这个邮件,因为邮件中唯一标识是由id组成,id一般是用户的id,用户数量是一定的,可以不断增大id值来暴力破解),这样就可以重置别人的账号信息。
场景二:
某网站的重置密码是通过发送邮件的方式,可能我通过使用自己的邮件重置密码,在收到的邮件中发现邮件中的链接是username的MD5加密后的字符串,发现了规律,我想会不会有一个叫做admin的管理员用户呢,于是试试的心态打开将admin使用MD5加密后的链接,竟然重置成功后使用admin登录进去了,
哇哦哦,这可是管理员的账号啊!!
第三类:直接暴力破解
1.暴力破解,主要使用穷举法。2.组合破解,使用MD5加密后暴力破解或者综合技术等等。
小方案:
提问:现在有的网站有登录、访问的限制,对次数有限制要求,那怎么使用暴力破解呢?
解答:设置发送包的时间,还有就是要使用变换IP的工具,网上比较多。
注:
本篇博文主要是供学习使用,不作其他用途。
相关文章推荐
- poj 2594 Treasure Exploration(可重点最小路径覆盖)(二分匹配+Floyd求传递闭包)
- inline函数
- Python中正则表达式的一些匹配规则
- 代码review发现问题 笔记201601
- httpmodule初识
- 我们为什么要用fitsSystemWindows?
- iPhone像素点和常用控件尺寸
- GitHub 优秀的 Android 开源项目
- Objective-C页面跳转方法总结
- grunt-watch插件的使用
- uva10465 完全背包
- mac mongodb 操作
- 【Web API系列教程】3.2 — 实战:处理数据(添加模型和控制器)
- 基于RMI服务传输大文件的完整解决方案
- CentOS 6.5 64位,调整分区大小
- angular.injector
- iOS开发调试篇—Print Description of "string"
- JSON串(字典、数组)转化为字符串
- java读取xls表格数据
- Redis学习--事务