PHP-Nuke的用户验证漏洞
网络通信
适用系统:PHP-Nuke 5.2以下版本
漏洞描述:由于admin.php没有对用户的身份进行验证,攻击者可能拷贝任何文件到phpnuke或phpnuke以外的有权限的目录里。然后通过IE浏览系统文件或上传恶意文件。
攻击原理:
步骤1 在IE里输入括号里面的命令,会看见上传页面的界面(http://www.某某.com/admin.php?upload=1&file=config.php&file_name=test.txt&wdir=
/images/&userfile=config.php&userfile_name=test.txt);
步骤2 通常image目录没有写权限,我们需要先找一个有权限的路径出来。可以尝试把上面的“wdir=/images/”换成“wdir=/image/xxx”或者“wdir=/../../../../”等。直到没有出错信息,并可以用IE访问到为止;
步骤3 在IE输入http://www.某某.com/test.txt。这时我们看到的test.txt文件里包含了SQL用户名和密码等关键信息。如果攻击者不满足,还可通过步骤4上传恶意文件;
步骤4 通过文件上传系统上传一个php命令解释文件,例如4.1.1里的cmd.php。当然攻击者也可能上传一个shell文件,比如backdoor.c,然后通过在IE执行“www.某某.com/../images/cmd.php? cmd=cc -o back backdoor.c”编译后门,然后再通过执行cmd.php让服务器反向连接到自己的机器上。
注意:反向连接之前不要忘记用NC在自己的机器上开一个监听端口。
防范方法:升级补丁或者更新到最新的PHP-Nuke版本。如果升级不方便的话,可以把配置文件中的“if($upload){”改成“if(($upload)&&($admintest)){”。
如果网站不需要filemanager这个功能,可以直接把这个函数disable掉。最后,Web Server的权限也要设置好。