• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Path Truncation для эксплуатации LFI

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Данный пост будет носить практический характер. В нём мы решим очередное задание на эксплуатацию уязвимостей веб-приложений в контексте заданий CTF. Задания будут взяты с известного сайта с различными задачами (CTF и не только) - https://www.root-me.org. Будем решать задачи из категории: Web - Server


Задание.
Разберём решение задания "PHP - Path Truncation". Как обычно взглянем на описание.

c7628ea705428f6e646f9.png

Как всегда, сразу обращаем внимание на название, а также описание и краткое описание. Нам указана некоторая уязвимость, а также намёк "PHP limits". По заданию нужно будет получить доступ к зоне администратора. Перед тем как начать поиск информации о подобных атаках/уязвимостях, взглянем на сайт с заданием.

c17e5a3551562a46beb9d.png

Всё довольно просто, есть две гиперссылки, попробуем перейти по первой.

154f870136981bb28562e.png

Видим, что выставляется параметр "page" и ему передаётся некоторый аргумент. Попробуем обратиться к странице администратора.

24b3ddf79fc16174bd86d.png

Видим, что доступ заблокирован. Попробуем базовые LFI-пейлоады в параметр и поймём, что это не тот вектор (можно этого и не делать, потому что задание нам чётко намекает на то, что нужно сделать.

Ищем информацию про уязвимость.


Path Truncation
Одно из первых, что попадается это данная статья - https://jbedelsec.wordpress.com/2018/12/11/exploiting-php-file-truncation-php-5-3/

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

Пример такого запроса:
Код:
http://website.com/index.php?page=random_path/../etc/passwd/.[repeated multiples times to reach a path size of 4096 char]/
Таким нехитрым образом можно получить необходимый файл.

Попробуем реализовать что-то подобное для нашего случая.

c84b0d2f50ce67496bc1e.png

Генерируем достаточно большую строку с применением "/.". И пробуем её отправить на сервер.

dfdaf312eb9b7e246f58a.png

Получаем флаг. Задание решено.

Для чего нужен Path Truncation?
Когда у вас есть LFI, но вам надо каким-то образом обойти фильтр расширения, а %00 байт не работает, данный способ может помочь. Однако, всё зависит от версии PHP, а также внутреннего устройства функции, которая осуществляет подключения файлов.
 
На самом деле немного не понятно почему неожиданно разрешили вход от усечения пути(или нормализации, хз как правильно), я так понял при инклуде расширение приклевалось, на тасках нет уязвимого кода?
а не робит эта тема вроде с 5.3.4
 
Стоило раскрыть что такое lfi и например добавить каким образом lfi далее раскручивается до rfi.
никаким она не раскручивается, что такое в гугли посмотри
 
вот для чего нужны дизы) когда человек "раскручивает" локальный инклуд до удаленного)))))))
rfi - это rfi, а lfi - это lfi, при lfi может быть rfi, но сейчас его редко встретишь на норм ресурсах и локальный инклуд уж точно не раскручивается до удаленного:smile86:
второе - это описание таска - в таске нет rfi, так что смысла расписывать нет что это такое и вообще заводить речь об rfi
и вас тварищ кадони я попрошу яснее излагать свои мысли, а не раскручивать то что нельзя раскрутить, тут либо есть либо нет
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Стоило раскрыть что такое lfi и например добавить каким образом lfi далее раскручивается до rfi.
RFI Когда в настройках allow_url_include ON
Но тебе уже ответили на этот вопрос.
И да, глупо с твоей стороны из за собственного незнания ставить дизлайки
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх