169 похожих чатов

Друзья, нужна ваша помощь. Нашел LFI, но не могу докрутить. Суть

в том, что если запросить любой файл из папки, в которой работает этот скрипт, он скачается (и даже если указать ./filename, то все равно скачается).

Но если попытаться выйти на директорию выше, и выкачать оттуда 100% существующий файл, то сервак выдаёт 302 и редиректит на страницу 404, при этом заголовок Content-Disposition с запрошенным файлом есть, но контента файла нет)))
1 скрин показывает это

А если запросить несуществующий файл из другой директории, то возвращается 200 статус.
На 2 скрине видно это поведение

То есть сейчас импакт такой, что я могу только определить по коду ответа, есть файл на серваке или нет.

Но очень хочу докрутить до получения контента из файла, может у кого будут идеи как это можно реализовать?

24 ответов

152 просмотра
ㅤ-ㅤ Автор вопроса

попробуй response splitting

ㅤ-ㅤ Автор вопроса
b1b1Z3N*
попробуй response splitting

Если ты имеешь в виду попробовать вставить CRLF в путь к файлу, то так не сработает, так он не найдет нужного файла, и вернёт 200 код ответа. А в 200 коде нет заголовка Content-Disposition. Или я не так понял?

ㅤ ㅤ
Если ты имеешь в виду попробовать вставить CRLF в ...

ты для начала попробуй проверить что за ваф на той стороне, так это прям поъоже на шляпу

Ну ты исходник скрипта который тебе файл отдает, скачал? Посмотрел что там по коду? Или директория откуда качается и директорая скрипта - разные?

А пробовал url кодировать? Или прописывать путь к файлу типа: ../../../../../../unexist_file_path/../../../../../exist_file_path

Стикер

Arbitrary file reading) Но очень многие почему-то его lfi называют, что ошибочно

ㅤ-ㅤ Автор вопроса
Lipton Ice Tea
Ну ты исходник скрипта который тебе файл отдает, с...

Исходник скрипта нет возможности скачать, так как он в директории выше находится

ㅤ-ㅤ Автор вопроса
ss0wl
А пробовал url кодировать? Или прописывать путь к ...

Url кодировал, без результата. А вот unexist_file_path не делал, сегодня попробую и отпишу, спасибо!

ㅤ-ㅤ Автор вопроса
ss0wl
А пробовал url кодировать? Или прописывать путь к ...

Если в путь подставить папку, которая не существует в системе, а потом выйти из неё и попытаться достать существующий файл, то выдаёт 200 код, как будто файл не был найден...

ㅤ-ㅤ Автор вопроса
ㅤ ㅤ
screenshot

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

ㅤ ㅤ
В общем, до получения контента файлов я так и не с...

Нет там импакта((( Установленные пакеты, в твоём случае это пальцем в небо. Так как ты на 💯 не уверен правильный ли ты получаешь ответ. Я бы такое не сдавал конечно, но тут дело твое )

ㅤ-ㅤ Автор вопроса
Андрей Чернобров
Нет там импакта((( Установленные пакеты, в твоём с...

Почему же не могу быть уверен в правильности? Если я запрошу, например, /etc/apache2/apache2.conf, и мне сервер вернет 302, то этот файл там есть. Если вернёт 200, то его там нету) Или я что то не так понял?

ㅤ-ㅤ Автор вопроса
Андрей Чернобров
Ну запроси /etc/nginx/nginx.conf

Запросил, 302 вернуло) все как и должно быть

ㅤ ㅤ
Запросил, 302 вернуло) все как и должно быть

Тебя не смущает что у тебя 2 веб сервера ?

дак, и в чем проблема? можно и с десяток других напихать

reewardius' 🇺🇦
дак, и в чем проблема? можно и с десяток других на...

Я не сказал что не можно. Но это больше исключение чем правило. Как минимум Я бы призадумался на кой хрен на хосте несколько веб серверов

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта