Discuz!x2.5 Upload Error:413错误解决

作者:linux120 发布时间:November 4, 2013 分类:服务器维护

因网站访问量越来越大,需要采取动静态分离,应客户需求将前端的Apache替换成Nginx,具体前后端转换过程不细表了,转完后在上传1M以上的附件时发生413错误。
解决方法如下:

vi /linux120/nginx/etc/ngnix.conf
#在ngnix.conf在http { }中加入以下代码
client_max_body_size 10m;

重启nginx即解决。

完全关闭shopex的缓存

作者:linux120 发布时间:May 9, 2013 分类:服务器维护

很多人是直接将home/cache下的一个16M文件改名、只读或者删除,这样很有可能会引发页面空白问题,正确的做法是:
1、找到config/config.php将define('WITHOUT_CACHE',false); 改成define('WITHOUT_CACHE',true);
2、清除home/cache/下的文件。

whmcs迁移故障一例

作者:linux120 发布时间:April 16, 2013 分类:服务器维护

帮一客户将whmcs从apache+mod_php迁移至nginx+php-fpm,迁移过程不细表,有以下两个问题。
1、中文乱码
默认whmcs系统数据库使用的是latin1编码,dump数据库的时候需要指定默认编码。
2、路径错误
检查$smarty.server.PHP_SELF的值没有正确获取到,$smarty.server.PHP_SELF又是直接读取系统$_SERVER['PHP_SELF']的,该值也为空,遂检查php-fpm中的设置cgi.fix_pathinfo为0,将cgi.fix_pathinfo改为1后重启php-fpm问题解决。

DedeCms织梦系统全局变量覆盖漏洞

作者:linux120 发布时间:January 20, 2013 分类:服务器维护

描述:
目标存在全局变量覆盖漏洞。
1.受影响版本DEDECMS 5.7、5.6、5.5。
2.漏洞文件/include/common.inc.php
3.DEDECMS的全局变量初始化存在漏洞,可以任意覆盖任意全局变量。
危害:
1.黑客可以通过此漏洞来重定义数据库连接。
2.通过此漏洞进行各种越权操作构造漏洞直接写入webshell后门。
解决方案:
目前官方版本“DedeCMS V5.7 SP1正式版”已经解决此问题,建议到此处下载最新版本进行升级:http://www.dedecms.com/products/dedecms/downloads/
临时解决方案:
在 /include/common.inc.php 中
找到注册变量的代码
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}
修改为
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) {
if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) ){
exit('Request var not allow!');
}
${$_k} = _RunMagicQuotes($_v);
}
}

ThinkPHP框架任意代码执行漏洞

作者:linux120 发布时间:January 15, 2013 分类:服务器维护

描述:
目标存在任意代码执行漏洞。
1.攻击者可以直接在使用了ThinkPHP框架的网站上执行任意php代码.
2.漏洞形成原因:ThinkPHP框架由于URI取值后动态赋值生成URL时,使用了preg_replace函数,并调用了e开关,同时又使用了支持php变量语法解析的双引号方式,最终导致了一个任意代码执行漏洞.
危害:
黑客可以利用该漏洞直接在网站执行任意代码,从而有可能直接控制网站服务器,盗取网站数据,影响网站的正常运营。
解决方案:
官方已经发布补丁:
https://code.google.com/p/thinkphp/source/detail?spec=svn2904&r=2838或者直接修改源码:/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php125行:$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));修改为$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']=\'\\2\';', implode($depr,$paths));将preg_replace第二个参数中的双引号改为单引号,防止其中的php变量语法被解析执行。