Discuz! 数据库错误信息xss bug author: 80vul-B team:http://www.80vul.com 一 分析 在文件include\db_mysql_error.inc.php里代码: if($message) { $errmsg = "Discuz! info: $message\n\n"; } if(isset($GLOBALS['_DSESSION']['discuz_user'])) { $errmsg .= "User: ".htmlspecialchars($GLOBALS['_DSESSION']['discuz_user'])."\n"; } $errmsg .= "Time: ".gmdate("Y-n-j g:ia", $timestamp + ($GLOBALS['timeoffset'] * 3600))."\n"; $errmsg .= "Script: ".$GLOBALS['PHP_SELF']."\n\n"; if($sql) { $errmsg .= "SQL: ".htmlspecialchars($sql)."\n"; } $errmsg .= "Error: $dberror\n"; $errmsg .= "Errno.: $dberrno"; $GLOBALS['PHP_SELF']确实过滤,导致在出现sql错误信息时利用$GLOBALS['PHP_SELF']进行xss攻击. 二 利用 需要结合其他的让出现错误信息的漏洞. 三 补丁[fix] 过滤$GLOBALS['PHP_SELF']