2014-02-11 2 views
0

Я работаю над этой проблемой:Вопросы о Traversal Каталог

https://www.hackthissite.org/missions/realistic/3/

Сайт выше был взломан, и это наша работа, чтобы вернуть его обратно в исходное состояние. Я начал с изучения исходного кода. Хакер оставил комментарий:

«Примечание для веб-мастераЭтот веб-сайт был взломан, но не полностью уничтожен. Старый веб-сайт по-прежнему работает. Я просто скопировал старый файл index.html в oldindex.html и переделал этот Извините за неудобства.

Поэтому я пошел https://www.hackthissite.org/missions/realistic/3/oldindex.html

затем я нажал на представить поэзию. В поле имени я положил ../index.html и в поле poem я положил исходный код страницы:

www (dot) hackthissite.org (точка) миссии/реалистичный/3/oldindex (точка) HTML.

Я получил правильный ответ; однако я не совсем понимаю, как это работает.

  1. Прежде всего, как вы знаете, когда что-то восприимчиво к каталогу обхода. Я сделал это, потому что я посмотрел на форумы, но , как я узнаю, что обход каталога является опцией?

  2. Если нажать на чтение стихотворения -> 'Название стихотворения' вы получите URL, как это:

    WWW (точка) hackthissite (точка) орг/миссии/реалистичную/3/readpoem (точка) PHP ? имя = Значение% 20Idiot

    В этом случае не окончательный URL с помощью ../index.html быть:

    WWW (точка) hackthissite (точка) орг/миссии/реалистической/3/имя? = индекс (точка) html

    не www (dot) hackthissite (dot) org/mission/realistic/3/index (dot) html

Sory для (точка). Мне нужно больше репутации, чтобы размещать больше ссылок.

ответ

0

Во время атаки обхода каталога злоумышленник отправит имя файла, содержащее символы, которые позволят им обращаться к файлам за пределами предполагаемой директории. Например, одна точка (.) Возвращает текущую директорию и две точки (..) родительский каталог. Во время атаки целью будет доступ и чтение файлов с ограниченным доступом с использованием привилегий PHP.

Это пример каталог поперечного уязвимого кода PHP:

$page = $_GET['page']; 
$filename = "/pages/$page"; 
$file_handler = fopen($filename, "r"); 
$contents = fread($file_handler, filesize($file)); 
fclose($file_handler); 
echo $contents; 

В вашем вызове в файл: «readpoem.php» уязвим в его $ _GET [ «имени»] переменной и ее случаться что-то похожее.

В пенсовке черного ящика вы можете обнаружить его, следуя ошибкам, возникающим при размывании значения и анализе вашего трафика запроса/ответа.

en.wikipedia.org/wiki/Fuzz_testing

Один тип решения, чтобы предотвратить это проверка для «запрещенных» вхождений, как кто-то положить пример здесь: Preventing Directory Traversal in PHP but allowing paths

+0

Я до сих пор не совсем понимаю, хотя. Как именно вы знаете, что «readpoem.php» имеет такой код. Вы просто используете пробную версию и ошибку? И это еще не объясняет целое? Name = _ вещь. Извините за все вопросы. – user3295361

+0

И как только я отправлю стихотворение, где именно оно хранится? Сохраняется ли она на странице прочитанных стихотворений, но не указана или хранится где-то в другом месте? Мне кажется, что он хранится где-то в другом месте, потому что прочитанная стихотворная страница, похоже, использует метод get, таким образом, page page_ _, если это так, то это объясняет, почему нет? Page = _, когда он сохраняется в индексе. Также я прочитал статью о тестировании fuzz, но я точно не понимаю, потому что я не очень хорошо разбираюсь в PHP. Еще раз спасибо! – user3295361

+0

«Я тогда нажал на отправку стихов. В поле имени я положил ../index.html и в поле стихотворения я поставил исходный код страницы: www (dot) hackthissite.org (dot) mission/realistic/3/oldindex (точка) html. Я получил правильный ответ. " Я считаю, что на этом этапе вы объявляете файл, который будет «trasverse». Затем добавьте содержимое с помощью стихотворения. – EdCapetti