IkonBoard FUNC.pm远程任意命令执行漏洞
发布日期:2003-04-01
更新日期:2003-04-04
受影响系统:Ikonboard.com ikonboard 3.1.1
描述:
IkonBoard是流行的由Perl/CGI脚本实现的基于WEB的论坛程序。
IkonBoard中的'Sources/Lib/FUNC.pm'对用户输入缺少正确检查,远程攻击者可以利用这个漏洞以WEB权限在系统上执行任意命令。
问题存在于Sources/Lib/FUNC.pm中处理'lang' Cookie值时:
# Make sure the cookie data is legal
if ($iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'}) {
$iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} =~ s/^([\d\w]+)$/$1/;
}
如果Cookie包含非法字符,s///操作就会匹配失败,而错误的Cookie值没有进行任何处理。这个Cookie值随即插入到一目录名中,转成字符串传递给eval函数,虽然对目录是否存在有检查,但是利用插入NULL字符技术可以绕过这个检查。导致插入任何PERL代码到eval函数中,可能以WEB进程权限在系统上执行任意命令。
<*来源:Nick Cleaton
链接:
http://marc.theaimsgroup.com/?l=bugtraq&m=104931731511305&w=2
*>
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* Nick Cleaton (
nick@cleaton.net)提供如下第三方补丁:
diff -Nurd Sources.orig/Lib/FUNC.pm Sources/Lib/FUNC.pm
--- Sources.orig/Lib/FUNC.pm Sun Jul 14 00:47:08 2002
+++ Sources/Lib/FUNC.pm Mon Feb 3 09:39:48 2003
@@ -101,7 +101,7 @@
my $sid = $iB::IN{'sid'} || $iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'skin'};
# Make sure it only contains a number
- $sid =~ s/^(\d+)$/$1/;
+ $sid =~ s/^(\d+)$/$1/ or die "invalid sid value";
# Make sure we have a default skin set
@@ -188,7 +188,8 @@
# Make sure the cookie data is legal
if ($iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'}) {
- $iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} =~ s/^([\d\w]+)$/$1/;
+ $iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'} =~ s/^([\d\w]+)$/$1/
+ or die "invalid lang cookie value";
}
$default = $iB::COOKIES->{$iB::INFO->{'COOKIE_ID'}.'lang'}
厂商补丁:
Ikonboard.com
-------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.ikonboard.com浏览次数:2799
严重程度:0(网友投票)