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

Статья Blind XXE через JSON

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Blind XXE через JSON. Решение задания bnv с Google CTF Quals 2019

На прошлых выходных проходит Google CTF Quals. Задания были довольно сложные, выше среднего. Тем не менее что-то можно было решить. Разбор некоторых заданий выйдет на канале на текущей недели.

Задания всё ещё доступны - https://capturetheflag.withgoogle.com/#challenges/

Ссылка на событие - https://ctftime.org/event/809

Задание.
a00c67b831ef75139e573.png

Задание категории Web

Описание мало что нам даёт, поэтому сразу переходим на сайт.

4f8d4ee2df79185849970.png

Сайт содержит только одно (явное) активное действие, которое заключается в возможности выбора города. Подключим Burp Suite, чтобы перехватить запрос, который отправляется на сервер.

d3cca7170a66eec210737.png

Видим, что в формате JSON отправляется некоторое число. Его значение нам ничем помочь не может.

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

После ряда неудачных попыток внедриться внутрь JSON'а можно подумать, что в JSON нам не нужно внедряться, а необходимо как-то изменить запрос, например поменяв тип передаваемых данных. Как оказалось, это довольно популярный способ эксплуатации XXE.

https://blog.netspi.com/playing-content-type-xxe-json-endpoints/

Таких статей не одна, и все они описывают процесс изменения запроса с JSON'a на XML.

Попробуем и мы сделать подобное.

e85e0164e109c0cd9d70a.png

Отлично, мы можем отправлять xml вместо json. Теперь попробуем сделать XXE, про неё уже не раз выходили посты на канале.

К сожалению, многие стандартные пейлоады не сработали и пришлось искать другие идеи. Не сработали пейлоады из-за невозможности получения вывода результатов команд. В этом случае нужно использовать Blind XXE, принцип и примеры которой хорошо описаны тут - https://portswigger.net/web-security/xxe/blind

Пробуем пейлоад из статьи, для чтения /etc/passwd

f0c29005773bfc36cd267.png

Отлично, теперь надо понять где лежит флаг. Самый первый вариант - просто ввести flag, ожидая что он лежит в корне.

84a303fb7ff35cc9f9a97.png


Так и есть. Задание не особо простое, но и не сказать, что сложное. Палки в колёса вставляет первый этап, на котором нужно понять, что JSON иногда можно передавать в виде xml. После найти варианты слепой эксплуатации XXE для чтения файлов.

авторство - канал "Убежище Хакера"
 


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