WordPress wp-includes/feed.php模块跨站脚本漏洞


添加时间:
2008-12-09

系统编号:
WAVDB-01287
BUGTRAQ: 32476

影响版本:
WordPress < 2.6.5

程序介绍:

WordPress是一款免费的论坛Blog系统。

漏洞分析:

WordPress的wp-includes/feed.php文件中的self_link()函数用于为ATOM和RSS 2.0源中的<atom:link>标签生成绝对URL:

function self_link() {
   echo 'http'
        . ( $_SERVER['https'] == 'on' ? 's' : '' ) . '://'
        . $_SERVER['HTTP_HOST']
        . wp_specialchars(stripslashes($_SERVER['REQUEST_URI']), 1);
}

这个函数没有过滤HTTP_HOST变量,而WordPress在wp-settings.php中用转义后变量替换了所有$_SERVER变量:

$_SERVER = add_magic_quotes($_SERVER);

几乎在所有设置中add_magic_quotes()都会对单元运行mysql_real_escape_string()并返回修改过的数组,而这种转义方式在标记环境中是不安全的。向WordPress安装发布恶意的请求可能导致在文档的root目录中生成包含有跨站脚本的文件。



漏洞利用:

curl -H "Host: \"><body onload=alert(String.fromCharCode(88,83,83))>" \
         http://www.example.org/blog/feed

解决方案:
厂商补丁:
WordPress
---------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://wordpress.org/development/2008/11/wordpress-265/

信息来源:
<*来源:Jeremias Reith (jr@noxss.org)

链接:http://marc.info/?l=bugtraq&m=122765274912454&w=2
http://secunia.com/advisories/32882/
*>