<code><!--?php defined('IN_PHPCMS') or exit('Access Denied'); $serverid ? 1 : showmessage($LANG['illegal_operation']); $db--->query("UPDATE ".TABLE_MOVIE_SERVER." SET `num` = (num-1) WHERE serverid = $serverid AND num > 0 "); 2?></code> $serverid没有进行任何过滤也没有用单引号括起来,所以无视gpc。 核心文件include\common.inc.php里大概80左右变量覆盖漏洞。 <code>if($PHP_QUERYSTRING && preg_match("/^(.*)\.(htm|html|shtm|shtml)$/", $PHP_QUERYSTRING, $urlvar)) { parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1])); }</code> 这个判断太弱了,判断querystring是不是等于静态文件后缀,结尾随便加个参数赋个静态文件的值就过了,经过parse_str就产生了 <pre class="prettyprint linenums"><!--?php defined('IN_PHPCMS') or exit('Access Denied'); $serverid ? 1 : showmessage($LANG['illegal_operation']); $db--->query("UPDATE ".TABLE_MOVIE_SERVER." SET `num` = (num-1) WHERE serverid = $serverid AND num > 0 "); 2?></pre> $serverid没有进行任何过滤也没有用单引号括起来,所以无视gpc。...
<code><!--?php defined('IN_PHPCMS') or exit('Access Denied'); $serverid ? 1 : showmessage($LANG['illegal_operation']); $db--->query("UPDATE ".TABLE_MOVIE_SERVER." SET `num` = (num-1) WHERE serverid = $serverid AND num > 0 "); 2?></code> $serverid没有进行任何过滤也没有用单引号括起来,所以无视gpc。 核心文件include\common.inc.php里大概80左右变量覆盖漏洞。 <code>if($PHP_QUERYSTRING && preg_match("/^(.*)\.(htm|html|shtm|shtml)$/", $PHP_QUERYSTRING, $urlvar)) { parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1])); }</code> 这个判断太弱了,判断querystring是不是等于静态文件后缀,结尾随便加个参数赋个静态文件的值就过了,经过parse_str就产生了 <pre class="prettyprint linenums"><!--?php defined('IN_PHPCMS') or exit('Access Denied'); $serverid ? 1 : showmessage($LANG['illegal_operation']); $db--->query("UPDATE ".TABLE_MOVIE_SERVER." SET `num` = (num-1) WHERE serverid = $serverid AND num > 0 "); 2?></pre> $serverid没有进行任何过滤也没有用单引号括起来,所以无视gpc。 核心文件include\common.inc.php里大概80左右变量覆盖漏洞。 <pre class="prettyprint linenums">if($PHP_QUERYSTRING && preg_match("/^(.*)\.(htm|html|shtm|shtml)$/", $PHP_QUERYSTRING, $urlvar)) { parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1])); }</pre> 这个判断太弱了,判断querystring是不是等于静态文件后缀,结尾随便加个参数赋个静态文件的值就过了,经过parse_str就产生了 phpcms 2007 sebug 临时解决方案: 1、过滤变量$serverid 厂商补丁: PHPCMS ------- 目前厂商暂无提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: http://www.phpcms.cn/