+ -
当前位置:首页 → 问答吧 → Ucenter登录验证机制

Ucenter登录验证机制

时间:2009-02-06

来源:互联网

在网上看了一篇Discuz的验证机制分析的文章,其实Ucenter跟DZ的验证机制差不多(毕竟是同一个公司的产品) 废话少说,下面说说Ucenter的验证机制:  Ucenter最主要还是通过cookie来验证的
  用户登录成功后 会得到一个用“用户名”加密后的密文  并将密文赋值给cookie['sid']  保存在cookie中

  登录验证的大体流程是这样的:

1:如果cookie['sid']存在 则 $sid=cookie['sid']  否则 $sid=$_GET['sid']
     <也就是说$sid的值  要么从cookie中 获取 要么从URL传递的参数中获取>

2:反解$sid中的密文 得到“用户名”

3:查询数据库中是否存在该用户,存在则设置 cookie['sid']=sid_encode($username)
  <也就是将 用户名 加密后的密文存于 COOKIE中>

  这样似乎就万无一失了呢? 肯定不是!

  这种验证机制存在如下漏洞,

A: 由于Ucenter是开源软件 用户通过在本地测试可以得到某个用户名加密后的密文,然后通过URL传递给被   攻击的服务器上的Ucenter,那么反解后照样能得到 该用户名,于是 顺利绕过 (蜗牛我就通过这种方法在本地计算机上 在不知道密码的情况下,顺利通过别的用户名登录到后台)

B: 原理同上,只不过是伪造COOKIE
………………………………………………………………………
很多朋友肯定会想了,人家DZ的人都是吃屎的啊?  怎么可能这么弱智的问题都没想到
呵呵! 我当然是乱说的,其实 在这个 用户名 加密 解密上人家DZ的人做了手脚,让我们没有那么容易破解的。
下面我说说加解密用户名:
其实 用户名加解密 要用到三个数据 ip,agent,UC_KEY 分别是用户的IP,用户的浏览器信息,以及每个UC程序所特有的值UC_KEY,  在不知道UC_KEY的情况下 是没办法模拟别人的UC程序 将用户名加密后的数据的。
在这里蜗牛我也几个问题想问各位大虾们

首先如果我知道别人的UC_KEY了 是否就能 绕过别人的登录验证

其次 我自己做了个实验,我用某个用户名登录后,然后记录下该用户名加密后的SID,然后退出清空COOKIE然后第二天,我不输入用户名密码 ,而直接传递这个SID给UC 竟然登录到后台了。 这样的机制是否安全?

作者: E蜗牛   发布时间: 2009-02-06

我是菜鸟。“首先如果我知道别人的UC_KEY了 是否就能 绕过别人的登录验证
”这么一说,按楼主的理论确定可以通过

作者: action2001   发布时间: 2009-02-06

还在研究中........

作者: E蜗牛   发布时间: 2009-02-06

以前研究过discuz的,和你说的一个原理,即使知道网站的UC_KEY,也很难伪造登陆的,因为还有ip信息难以伪造,浏览器信息伪造也有一定难度。
至于你做的实验,那个没什么好说明的,只要有这个cookie[sid]的备份,一年后你用这个cookie也能登陆,前提是在同一台计算机上。

作者: carche   发布时间: 2009-02-07

最后你做的那个实验可以登入进去应该是因为
三个数据 ip,agent,UC_KEY
这三个数相同吧。。。

作者: kakashilw   发布时间: 2009-03-18

不错....感觉太复杂了

作者: xinxing520   发布时间: 2009-03-18

也就是说,如果有人用你的机器,登录了ucenter,
你就能找到sid,然后用他的账号登录。
问题是,别人为什么要用你的机器呢?

所以说网吧里千万不要使用需要登录才能用的任何工具。

作者: faallan   发布时间: 2009-03-20


不错

作者: imhehe   发布时间: 2009-03-22

原帖由 carche 于 2009-2-7 16:47 发表
以前研究过discuz的,和你说的一个原理,即使知道网站的UC_KEY,也很难伪造登陆的,因为还有ip信息难以伪造,浏览器信息伪造也有一定难度。
至于你做的实验,那个没什么好说明的,只要有这个cookie[sid]的备份,一年 ...

作者: happyyin   发布时间: 2009-03-22

顶一个啦...不错

作者: xinxing520   发布时间: 2009-03-22

其实并不是像楼主说说的这样的,dz的加密也是有密钥交换过程的,就算让你知道了密钥你也没有办法模拟的,去好好读一下加密解密吧。

作者: T.T.R   发布时间: 2009-03-23

已阅 谢谢

加密 解密 的确有密钥传递

作者: E蜗牛   发布时间: 2009-03-23

我是菜鸟。“首先如果我知道别人的UC_KEY了 是否就能 绕过别人的登录验证
”这么一说,按楼主的理论确定可以通过

作者: kwlong2008   发布时间: 2009-03-24