[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Возможно ли получить любой файл с сервера?
Nightwalker_nsk
Есть старый download скрипт, которому передается параметром имя архив которое нужно выдать (download.php?file=zopa) и выдается в браузер этот архив (zopa.zip), никаких обработок нет, нужно доказать что можно получить с его помощью любой файл с сервера.
Итак исходные данные: есть $filename -- получаемая от пользователя и вообще никак не обрабатываемая переменная, $path -- то, что выдается пользователю

Получается $path из $filename вот так: $path = '../'.$filename.'.zip';
Все уповают на то что дописывается .zip и проблемы секурности это решает, мол можем получить только .zip архивы. Я так не считаю, но и доказать обратное не могу. Буду рад если кто-то подкинет идею.

P.S. то что ../ можем хоть сколько раз вводить и прыгать по всему серверу - этого не достаточно, нужно чтоб как-то можно было файлы с другим расширением качать.



Спустя 39 минут, 12 секунд (8.06.2012 - 16:29) neadekvat написал(а):
Давай с другого конца - что ты предлагаешь?

Спустя 2 часа, 16 минут, 45 секунд (8.06.2012 - 18:45) Nightwalker_nsk написал(а):
Этот .zip смотрится как беспомощный костыль, который не внушает доверия и я хочу доказать что так делать нельзя. Хочешь качать только архивы - проверяй хотя бы еще и тип файла который отдаешь + слэши в имени. Потому что, насмотревшись на хаки в Си, где можно манипулируя \0 резать строки как угодно, приписывание расширения не смотрится как секьюрити фича. Еще раз: кроме .zip нет вообще никаких преград на даунлоад любого файла.

Спустя 39 минут, 51 секунда (8.06.2012 - 19:25) neadekvat написал(а):
Цитата (Nightwalker_nsk @ 8.06.2012 - 19:45)
я хочу доказать что так делать нельзя.

Ты автор статей или преподаватель?

Если нет, то, знаешь, не парься. Некоторым кодерам хоть кол на голове теши. Есть правило - обрабатывать все данные, которые приходят от пользователя. И не важно, можно сломать или нельзя. Вот тебе пример: хер его знает, какой тут спец-символ надо поставить, чтобы можно было скачать любой файл. Но это для нас. А у кого-то хер знает, и он сделает это. Не здесь - так в другом месте скрипта.

Тут ведь какой принцип действует: если человек привык обрабатывать входные данные, то он будет делать это всегда. А если он еще рассуждает: делать это в данном случаи или нет - то хотя бы один раз он примет неправильное решение.

Другое дело, что надо с умом подходить к фильтрации данных и выбирать подходящие для данного случая инструменты и решения.

Спустя 2 минуты, 2 секунды (8.06.2012 - 19:27) Guest написал(а):
Нет я девелопер который рефакторит старый код и будет очень круто если я найду дыру, которой можно скачать весь проект:) дыру которой можно слить всю базу уже нашел, остались исходники:)

Спустя 2 минуты, 29 секунд (8.06.2012 - 19:30) neadekvat написал(а):
Цитата (Guest @ 8.06.2012 - 20:27)
будет очень круто если я найду дыру, которой можно скачать весь проект

Ломать сайт при условии, что у тебя уже есть все его исходники - это же неинтересно.

Спустя 1 минута, 57 секунд (8.06.2012 - 19:32) Nightwalker_nsk написал(а):
Сори, верхний пост мой, не заметил что тут можно постить гостям. А по теме - пхп развращает своей простотой и вседозволенностью и отсюда получается огромное количество секьюрити багов, для меня вопрос принципа всегда сохранять стройность кода и не допускать таких вещей. И просто завязался спор - гуд такая "защита" или нет, вот и спросил совета у комьюнити может кто сталкивался с хаком подобных мест.

Спустя 4 минуты, 26 секунд (8.06.2012 - 19:36) neadekvat написал(а):
Цитата (Nightwalker_nsk @ 8.06.2012 - 20:32)
И просто завязался спор - гуд такая "защита" или нет, вот и спросил совета у комьюнити может кто сталкивался с хаком подобных мест.

Не гуд.
Пример: так уж случилось, что часто в корне или на уровень выше хранят дампы базы или исходники одним архивом. И если дамп обычно держится в .tar.gz, то архив исходников - именно в zip.
Таким образом, при некотором умении, наличии времени, терпения и большого желания, можно выловить эти файлы (особенно учитывая, сколько архивов я видел с именем www.zip).

Спустя 3 минуты, 22 секунды (8.06.2012 - 19:39) Nightwalker_nsk написал(а):
Никто не хранит архивы с исходниками в www директории, а если и хранит то это его проблемы, так же никто не дает процессу сервера пермишн на директории выше www, ну а если дает то это тоже его проблемы, речь не об этом, это не тот случай. Т.ч. по сути дыры никакой нет если ничего нельзя сделать с расширением или как-то отсечь его.

Спустя 3 минуты, 11 секунд (8.06.2012 - 19:43) neadekvat написал(а):
Цитата (Nightwalker_nsk @ 8.06.2012 - 20:39)
а если и хранит то это его проблемы

Криворукие админы и программисты - это все та же проблема, нэ?

Цитата (Nightwalker_nsk @ 8.06.2012 - 20:39)
так же никто не дает процессу сервера пермишн на директории выше www

А нафига там какие-то разрешения (да, по-русски это звучит именно так)? Мы же не собираемся файл исполнять. Мы его тупо оттуда тащим, вот и все.

Спустя 6 минут, 59 секунд (8.06.2012 - 19:50) Nightwalker_nsk написал(а):
Если вы fopen'ом попытаетесь открыть файл который за пределами www на нормальном хостинге то получите Could't read file ибо прав на чтение у вас естественно за пределами корневой директории не будет. Это аксиоматика.

Спустя 8 минут, 50 секунд (8.06.2012 - 19:58) neadekvat написал(а):
Зачем мне fopen? readfile прекрасно справится.

За пределами www-каталога запрещается выполнение скриптов. Но я могу вынести туда скрипты, подключать их include'ом и они будут вполне себе рабочими. Никогда не встречал совет выносить важные скрипты (например, ядро фреймворка) за пределы корнивого каталога?

Спустя 28 минут, 27 секунд (8.06.2012 - 20:27) AlmazDelDiablo написал(а):
Если не ошибаюсь, то с помощью .htaccess решается то, какие файлы можно отдавать на скачивание (могу ошибаться). Плюс все каталоги, в которых лежат системные файлы, через тот же .htaccess закрываются от доступа из-вне. Так что если разработчик хоть чуть-чуть понимает, что он делает, то «гулять» по директориям не получится.

Спустя 10 часов, 54 минуты, 5 секунд (9.06.2012 - 07:21) Nightwalker_nsk написал(а):
Кому интересно - добавление нулевого байта %00 в конец $filename при magic_quotes_gpc = off отсечет расширение архива, даже в самой последней версии php, проверено. Спасибо за внимание.

Спустя 7 часов, 36 минут, 58 секунд (9.06.2012 - 14:58) neadekvat написал(а):
Цитата (Nightwalker_nsk @ 9.06.2012 - 08:21)
Кому интересно - добавление нулевого байта %00 в конец $filename при magic_quotes_gpc = off отсечет расширение архива, даже в самой последней версии php, проверено. Спасибо за внимание.

Эм.. а у меня не работает. Продемонстрируй испольование, можт я не так пробую.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.