详细说明:漏洞文件在table.php中的sql_update($tbname,$row,$where) 函数function sql_update($tbname,$row,$where) { $sqlud=\’\’; if (is_string($row)) $sqlud=$row.\’ \’; else foreach ($row as $key=>$value) { if (in_array($key,explode(\’,\’,$this->getcolslist()))) { $value=addslashes($value); if (preg_match(\’/^\\[(.*)\\]$/\’,$value,$match)) $sqlud .= "`$key`"."= ".$match[1].","; elseif ($value === "") $sqlud .= "`$key`= NULL, "; else $sqlud .= "`$key`"."= \’".$value."\’,"; } } $sqlud=rtrim($sqlud); www.jb51.net $sqlud=rtrim($sqlud,\’,\’); $this->condition($where); $sql="UPDATE `".$tbname."` SET ".$sqlud." WHERE ".$where; return $sql; }循环遍历POST 值 然后直接写入数据库更新 导致用户可以自定义权限判断字段权限提升漏洞漏洞证明:注册用户名编辑资料得到管理权限(ps: 后台超炫)GetShell修复方案:不要把前台用户和普通会员放到一个表,任意权限提升, 取消table.php 中的函数sql_update 函数 或做出相应过滤 。可以暂时先关闭注册作者 CodePlay 【