FreeDiscuz!'s Archiver

044003 发表于 2009-8-18 15:15

Discuz! 安全更新[20090818] 适用所有版本(5.5版本手动修改已有所改动)

转自:[url=http://www.discuz.net/thread-1388523-1-1.html]http://www.discuz.net/thread-1388523-1-1.html[/url]
[b]更新描述:[/b]
        Discuz! 后台自定义风格功能模块由于用户提交数据的合法性判断不足,造成管理员可以构造特殊数据生成缓存文件。[color=red]当管理员账号泄露或者被窃时,将直接威胁论坛的安全使用。[/color]
[b]安全威胁:[/b]
        中
[b]修补办法:[/b]
        1. 首先下载补丁文件 [url=http://download.comsenz.com/Discuz/patch/all/Discuz_patch_20090818.zip]Discuz_patch_20090818.zip[/url]
        2. 在本地解压缩文件包,根据您目前的版本,选择相应的文件夹
        3. 将文件夹内的文件上传至论坛所在服务器,覆盖原有文件
        4. 使用 FTP 删除论坛 forumdata/cache/ 目录里面的所有文件
        5. 访问您的论坛,此时,论坛会自动更新并生成所有缓存文件

[b]重要提示:[/b]
        
        为保障您论坛的安全,更新完毕以后,请进入论坛管理后台, 使用 工具 --- 文件校验功能对您的文件进行安全校验。如在站点目录中发现多余文件,请即刻删除。
        如果有文件被修改,请务必确认修改文件的行为是站长自身,否则请使用标准程序进行覆盖。

本人手动修改之办法見 #2

044003 发表于 2009-8-18 15:19

手动修改方法:
更新文件:
[list][*]admin/styles.inc.php[*]include/cache.func.php[*]discuz_version.php[/list]
分析:
[list]
[*]主要修改部分是修正正则判断
[*]admin/styles.inc.php
[quote]} elseif(!preg_match("/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/", $newcvar)) {[/quote]
变为
[quote]} elseif(!preg_match("/[color=Red]^[/color][a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*[color=Red]$[/color]/", $newcvar)) {[/quote]
[*]Discuz! 5.5 include/cache.func.php 添加红色部分文字
[quote]function getcachevars($data, $type = 'VAR') {
        $evaluate = '';
        foreach($data as $key => $val) {
[color=Red]                if(!preg_match("/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/", $key) && !preg_match("/^_DCACHE\['[a-zA-Z0-9_]+\'\]$/",$key)) {
                        continue;
                }[/color]
                if(is_array($val)) {
                        $evaluate .= "\$$key = ".arrayeval($val).";\n";
                } else {
                        $val = addcslashes($val, '\'\\');
                        $evaluate .= $type == 'VAR' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";
                }
        }
        return $evaluate;
}[/quote]
[*]Discuz! 5.5 版本除外 include/cache.func.php 添加红色部分文字
[quote]function getcachevars($data, $type = 'VAR') {
        $evaluate = '';
        foreach($data as $key => $val) {
[color=Red]                if(!preg_match("/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/", $key)) {
                        continue;
                }[/color]
                if(is_array($val)) {
                        $evaluate .= "\$$key = ".arrayeval($val).";\n";
                } else {
                        $val = addcslashes($val, '\'\\');
                        $evaluate .= $type == 'VAR' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";
                }
        }
        return $evaluate;
}[/quote]
[*]discuz_version.php 版本改为 20090818
[quote]define('DISCUZ_RELEASE', '[color=Red]20090818[/color]');[/quote]
[*]Google Adsense可參考以下這篇
[url]http://www.freediscuz.net/bbs/thread-5175-1-2.html[/url]
[/list]

[[i] 本帖最后由 044003 于 2009-8-25 12:27 编辑 [/i]]

seoxoo 发表于 2009-8-18 17:32

已手動更新,感謝。

Cnstudent 发表于 2009-8-18 17:52

恩...跟想象中一样了...
那个h什么的朋友的第1个方法

horseluke 发表于 2009-8-18 19:20

回复 4# Cnstudent 的帖子

我觉得它的第二个修改步骤(include/cache.func.php)中将有问题的直接使用continue忽略不写入。
这个挺巧妙......对于自己来说,真该学学break和continue的灵活使用了......

seoxoo 发表于 2009-8-18 19:29

更新後 forumdisplay.php 出問題了

[code]Warning: Invalid argument supplied for foreach() in /forumdisplay.php on line 78[/code]第 78 行是 foreach($_DCACHE['forums'] as $sub) {
Discuz! 版本 5.5

horseluke 发表于 2009-8-18 19:31

回复 6# seoxoo 的帖子

这个与更新无关

重刷板块缓存尝试一下

seoxoo 发表于 2009-8-18 19:35

回复 7# horseluke 的帖子

OH,果然解決了,神奇!

MANY THANKS!

Cnstudent 发表于 2009-8-18 20:16

Dis[color=Red]uc[/color]z_patch_20090818.zip
高亮2个字母 完毕

horseluke 发表于 2009-8-18 20:23

回复 9# Cnstudent 的帖子

话说这补丁放在[url]http://www.comsenz.com[/url]而不是[url]http://download.comsenz.com/Discuz/patch/[/url]
挺离奇的~

044003 发表于 2009-8-18 20:57

回复 10# horseluke 的帖子

可能官方重新打包太麻煩:lol

horseluke 发表于 2009-8-18 23:49

回复 11# 044003 的帖子

按道理,它应该放到patch目录下。

Clwarm 发表于 2009-8-21 15:38

官方那个补丁包里还有 For 6.1F的;P
看来老师懒得来这边更新了。

ljweb 发表于 2009-8-21 16:49

强烈建议把置顶上的下载也更新了,方便后面下载的朋友

044003 发表于 2009-8-21 19:01

置顶了自己的帖;P

richerman2a7 发表于 2009-8-22 00:52

還是手動更新比較放心,謝謝提供:)

CS1.3 发表于 2009-8-23 02:18

一直都看这个帖子标题不顺眼
现在终于明白为啥不顺眼了:

horseluke 发表于 2009-8-23 11:53

回复 17# CS1.3 的帖子

:L :L :L

Clwarm 发表于 2009-8-23 20:59

回复 17# CS1.3 的帖子

C跑右边去了
CS1.3 那块

horseluke 发表于 2009-8-25 00:13

传闻dz5.5的补丁有一定问题([url]http://www.discuz.net/thread-1391381-1-1.html[/url],and this:[url]http://www.discuz.net/thread-1392044-1-1.html[/url])
现在太晚没法测试,待明日写完报告后再测试确认之~

[[i] 本帖最后由 horseluke 于 2009-8-25 00:18 编辑 [/i]]

页: [1] 2

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.