|
MRTG CGI远程读取任意文件漏洞
受影响的系统: MRTG Multi Router Traffic Grapher CGI 2.9.17-unix - Microsoft Windows NT 4.0 SP6a - Microsoft Windows NT 4.0 SP6 - Microsoft Windows NT 4.0 SP5 - Microsoft Windows NT 4.0 SP4 - Microsoft Windows NT 4.0 SP3 - Microsoft Windows NT 4.0 SP2 - Microsoft Windows NT 4.0 SP1 - Microsoft Windows NT 4.0 - Microsoft Windows 2000 SP2 - Microsoft Windows 2000 SP1 - Microsoft Windows 2000 - Unix系统 MRTG Multi Router Traffic Grapher CGI 2.9.17-win32 - Microsoft Windows NT 4.0 SP6a - Microsoft Windows NT 4.0 SP6 - Microsoft Windows NT 4.0 SP5 - Microsoft Windows NT 4.0 SP4 - Microsoft Windows NT 4.0 SP3 - Microsoft Windows NT 4.0 SP2 - Microsoft Windows NT 4.0 SP1 - Microsoft Windows NT 4.0 - Microsoft Windows 2000 SP2 - Microsoft Windows 2000 SP1 - Microsoft Windows 2000 不受影响系统: 描述: --------------------------------------------------------------------------------
BUGTRAQ ID: 4017
多路由器流量图示(Multi Router Traffic Grapher)是一个监视网络节点上流量的软件。MRTG生成包含GIF动画的HTML页面来表示出一个当时网络流量的图示。
MRTG CGI程序实现上存在输入验证错误,远程攻击者可以利用这个漏洞浏览主机上任意有权限读取的文件。
问题在于MRTG的一些CGI脚本未对用户输入做充分的过滤,远程攻击者通过在输入里插入“../”字串可以遍历主机上的目录,读取任意Web进程有权限读取的文件。受此漏洞影响的脚本程序有mrtg.cgi、traffic.cgi、14all-1.1.cgi和14all.cgi,它们都有使用“cfg”变量,例如http://somehost/mrtg.cgi?cfg=../../../../../../../../etc/passwd。
<*来源:UkR-XblP (cuctema@ok.ru) 链接:http://archives.neohapsis.com/archives/bugtraq/2002-01/0399.html http://archives.neohapsis.com/archives/bugtraq/2002-01/0407.html *> 测试程序: -------------------------------------------------------------------------------- 警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
UkR-XblP (cuctema@ok.ru)提供了如下测试方法:
http://www.target.com/cgi-bin/14all.cgi?cfg=../../../../../../../../etc/passwd http://www.target.com/cgi-bin/14all-1.1.cgi?cfg=../../../../../../../../etc/passwd http://www.target.com/cgi-bin/traffic.cgi?cfg=../../../../../../../../etc/passwd http://www.target.com/cgi-bin/mrtg.cgi?cfg=../../../../../../../../etc/passwd
-------------------------------------------------------------------------------- 建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* sj@datanet.hu 提供了如下的修补方案:
在脚本里'$q = new CGI;' 语句后加入以下的过滤语句:
my $SECMSG = 'Pliz dont hekk us\n";
if(!defined $q->param('cfg')){ die "missing cfg file\n"; } my $xx = $q->param('cfg');
if($xx =~ /\.\.|\/\/|\.\//){ die $SECMSG; } if($xx =~ tr/a-zA-Z0-9_\-//dc){ die $SECMSG; }
(,2002-2-4)
|