任意密码重置那些事

浏览:
字体:
发布时间:2013-12-09 23:24:20
来源:
今年来看,任意密码重置确实是一个挺火的项目,在各大小小的网站上,都出现过类似的漏洞,无论是CMS,还是通用型,总会有那么几个!

 目录:

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的

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();