首页 -> 安全研究

安全研究

安全漏洞
Avenger's News System目录遍历漏洞

发布日期:2002-02-21
更新日期:2002-03-07

受影响系统:
Avenger Avenger's News System 2.11
Avenger Avenger's News System 2.01
描述:
BUGTRAQ  ID: 4147
CVE(CAN) ID: CVE-2002-0307

Avenger's News System (ANS)是用Perl编写的基于表单的WEB更新、管理工具,可运行于绝大多数Unix/Linux系统上。

ANS没有过滤URL请求中的"../",容易遭受目录遍历攻击,导致任意WEB Server进程有权读取的文件内容泄漏。

在ANS的配置文件中定义了$QUERY变量

<define QUERY>"$ENV{'QUERY_STRING'}"

ANS实现中存在如下代码处理URL POST请求

  if (substr($QUERY, 0, 2) eq "p=")
  {
    $plugin = substr((split /&/, $QUERY)[0], 2);
    if (index("$QUERY", "&") < 0) { $QUERY = ""; }
                             else { $QUERY = substr($QUERY, index("$QUERY",
"&")+1); }


    open (PLUGIN, "$FILE_LOCATION/$plugin");
    @plugin = <PLUGIN>;
    close (PLUGIN);


    eval("@plugin");
    exit;
  }

注意到这里未对用户输入做"../"过滤。

<*来源:"b0iler _" (b0iler@hotmail.com
  
  链接:http://archives.neohapsis.com/archives/bugtraq/2002-02/0229.html
*>

建议:
临时解决方法:

"b0iler _" (b0iler@hotmail.com)建议您采取以下措施以降低威胁:

* 把程序中的以下代码:

  if (substr($QUERY, 0, 2) eq "p=")
  {
    $plugin = substr((split /&/, $QUERY)[0], 2);
    if (index("$QUERY", "&") < 0) { $QUERY = ""; }
                             else { $QUERY = substr($QUERY, index("$QUERY",
"&")+1); }


    open (PLUGIN, "$FILE_LOCATION/$plugin");
    @plugin = <PLUGIN>;
    close (PLUGIN);


    eval("@plugin");
    exit;
  }

改为:

if (substr($QUERY, 0, 2) eq "p="){
        $QUERY =~ s/([\&;\`'\\\|"*?~<>^\(\)\[\]\{\}\$\n\r])/\\$1/g; # 过滤某些转义字符

$QUERY =~ s/\.\.//g; #filter double dot (..)
        $plugin = substr((split /&/, $QUERY)[0], 2);
        if (index("$QUERY", "&") < 0) { $QUERY = ""; }
                else { $QUERY = substr($QUERY, index("$QUERY", "&")+1); }

        open (PLUGIN, "<$FILE_LOCATION/$plugin"); #added a < to the open() -
readonly
        @plugin = <PLUGIN>;
        close (PLUGIN);

        eval("@plugin");
        exit;
}

厂商补丁:

Avenger
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://ans.gq.nu/

浏览次数:2929
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障