安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障