任意密码重置那些事
目录:
0x01 先来说说暴力修改密码的漏洞
0x02 CMS类的重置
0x03 修改密码时,拦截发送的邮箱或手机
0x04 鸡肋,(为什么要屌丝的加密)
0x05 metinfo的一处任意密码重置漏洞的分析!
0x06 总结
PS:任意密码重置,你为何要这么吊!
0x01 先来说说暴力修改密码的漏洞
这样的漏洞无非就是找回密码时,密码重置链接中的验证码,设置过于简单(6位纯数字),且发送请求时,无次数限制,可以通过爆破重置任意用户密码。
就来看下面这个例子:http://www.vm888.com/Article/201208/150905.html
115网盘忘记密码有缺陷,未对手机验证码提交的次数进行限制,导致可以通过无限穷举手机验证码来重置用户的密码。
这就是一个典型的例子!
首先在忘记密码的页面输入帐号,然后选择使用密保手机找回。系统会自动给你发送一条疑验证短信:
验证的是6位的数字,所以我们来生成密码本:
由于网络限制,速度非常慢,不能完整地从000000到999999进行穷举测试,由于我已经知道了手机验证码是多少,所以我们就从这个范围进行测试。
开始
突然,我们截取到一个长度仅为610的数据包,前面的数据为114376,与我手机收到的相同。
接着,我把114376输入进了网页的那个框,不过似乎错误了,过期了。
额,从此可以得出这个密码的使用是一次性的。
看上面的图,我们可以发现是一个302地址,那么他重定向到的地址可能就是修改密码的地址了。
我们仔细去看看那个302的地址,发现了一个连接。打开后,就进入了一个密码修改的位置:
引用:WooYun
看见了吧,不需要费多少的功夫,就可以任意修改密码,如果有了管理员的密码重置了呢?
0x02 CMS类的重置
这就可以引用到我的一个漏洞了!
SiteStar任意账户密码修改(可以修改管理员)
http://loudong.360.cn/vul/detail/id/1815
先注册一个账号,然后登陆:
点击编辑个人信息:
这时,打开火狐插件 Live HTTP headers,进行监听
我们先看一下现在数据库的用户:
先修改一次密码,抓包:
我这输入的是shackm,抓包:
这时,把 POST的内容修改一下
_r=_ajax&passwd%5Bpasswd%5D=shackm&passwd%5Bre_passwd%5D=shackm&user%5Bemail%5D=616146%40qq.com&user%5Bfull_name%5D=njk&user%5Bmobile%5D=13705501516&submit=%E4%BF%9D%E5%AD%98
这个是原来的,修改成
_r=_ajax&passwd%5Bpasswd%5D=shackm&passwd%5Bre_passwd%5D=shackm&user%5Bemail%5D=6164566%40qq.com&user%5Bfull_name%5D=njk&user%5Bmobile%5D=13701501516&submit=%E4%BF%9D%E5%AD%98&id=1
修改了3个值,增加了一个id=1,这个是管理员id值,然后修改了一些mobile,和email,为了避免重复,点击replay:
修改成功,看下数据库:
更改成功了
0x03 修改密码时,拦截发送的邮箱或手机
这类的漏洞,实在是没什么说的了,纯属程序猿偷懒!
http://www.wooyun.org/bugs/wooyun-2010-033286
这个大家可能没看明白,就是说,在获取验证码之后,自己的手机会获取正确验证码,但是在修改密码的时候,拦截包,改的手机号码,就是对方的账号!
好吧,苦逼的程序猿!
0x04 鸡肋(为什么要屌丝的加密)
这就是在找回密码时候,邮箱会接受一个验证码,是被加密的,但是由于弱智加密导致通杀!(纯属个人想象力)
http://www.wooyun.org/bugs/wooyun-2010-034192
我们给我们的邮箱发送重置密码连接:
然后看看我们收到的重置密码的链接:
来看看这个链接的构造:
其中最重要的是base64编码的用户id,加上8位持续增加的16进制字符,其他的不管,这里的base64编码的用户id,我们可以替换为任意用户的uid,然后可以重置任意用户密码。
由于登陆需要邮箱,下面我们找到一个用户名为邮箱的用户:
把连接中的用户uid换成这个用户的uid,4930,构造好连接,访问之:
成功啦,输入新密码,重置密码成功:
其实这个就是思路,有的网站也是md5,甚至是明文,我勒个擦!
0x05 metinfo的一处任意密码重置漏洞的分析!
这个我就拿5.0版本的,这个版本还是存在漏洞的,我们看一下
/member/save.php 这个修改密码文件!
代码:
if($action=="editor"){require_once 'login_check.php';if($_SESSION['metinfo_admin_id']!=$useid){Header("Location:$returnurl");}$query = "update $met_admin_table SETadmin_id = '$useid',admin_name = '$realname',admin_sex = '$sex',admin_tel = '$tel',admin_modify_ip = '$m_user_ip',admin_mobile = '$mobile',admin_email = '$email',admin_qq = '$qq',admin_msn = '$msn',admin_taobao = '$taobao',admin_introduction = '$admin_introduction',admin_modify_date = '$m_now_date',companyname = '$companyname',companyaddress = '$companyaddress',companyfax = '$companyfax',companycode = '$companycode',companywebsite = '$companywebsite'";if($pass1){$pass1=md5($pass1);$query .=", admin_pass = '$pass1'";}$query .=" where admin_id='$useid'";$db->query($query);okinfo('basic.php?lang='.$lang,$lang_js21);}
我们可以看一下,我们修改密码的时候没有进行用户验证。
0x06 总结
通过上面这两个例子,我们可以看出,这都是一方面的小小细节方面,现在程序猿都比较注重的是SQL注入这一方面,却忽视了验证的权限,其实这类漏洞是很好找的,不需要看代码,都可以测试得出。
任意密码重置,似乎看起来没有什么,但是真正利用起来,是很牛X的
- 11-15不看后悔!程序员防御XSS的无奈
- 11-10揭秘Web黑客3种注入点判断方法
- 11-10黑客Web脚本注入攻击深度剖析
- 10-21全球无线网络面临黑客攻击风险 WiFi曝安全漏洞
- 02-24iPhone再爆安全漏洞 黑客1分钟可盗照片及加密信息
- 02-22互联网金融风险 警示网站漏洞或成“致命点”
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复