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等。
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等。