277 words
1 minutes
daWay

В эту субботу (08.06.24) вышел новый таск на веб уязвимость.

Ссылка на сайт задания: http://185.255.132.89:8001

Название: Secret Way

Описание: Найди путь к флагу и достань его из секретного документохранилища

На веб странице нас встречает форма поиска: web_main

Переместимся в burp suite и попробуем подставить в запрос символ ': web_error

А вот и ошибка :) Предполагаем, что поиск осуществляется по БД SQL. Попробуем подставить базовую SQL-инъекцию 111' or 1=1 -- : web_sqlinj

Получаем тот же ответ. Через пару часов постоянного подбора инъекций было выяснено, что поиск работает не на БД SQL. Очень похожа на SQL-injection - это Xpath-injection. По сути это тот же самый поиск, но уже по XML документу. Пример XML документа:

<?xml version="1.0" encoding="UTF-8"?>
<petstore>
  <pet category="cat">
    <name>Борис</name>
    <year>2021</year>
  </pet>
</petstore>

Доступ к документу осуществляется по его пути. Например, для извлечения имени кота надо ввести путь к нему: /petstore/pet/name

Теперь попробуем внедрить базовый пэйлоад для Xpath ' or true() or ': web_success Получаем: Данные переданы для модерации. Если же отправим ' or false() or ', то получим: Ничего не найдено.

Перед нами Blind Xpath boolean-based injection. То есть сервер нам может ответить либо истину, либо ложь.

Например узнаем число подкаталогов в /root: num_nodes_2 из ответа видим, что не 2, пробуем с тремя: num_nodes_3 А вот и верный ответ!

Естественно делать это вручную долго, поэтому был написан небольшой скрипт (solve.py). Реализовано 3 функции:

  1. Нахождение количества подкаталогов в директории: ' or count(/root/*)={count} or '
  2. Нахождение длины имени подкаталога по n индексу: ' or string-length(name(/root/*[{node_num}]))={length} or '
  3. Нахождение имени подкаталога путем перебора по алфавиту: ' or substring(name(/root/*[{node_num}]), {i}, 1) = '{c}' or ', где i - это индекс символа в имени подкаталога, c - это символ в алфавите.

Находим путь к флагу: /root/secrettecret/flag и сам флаг: letoctf{XML_master_da_Way_XPAth_WaY}

Спасибо за прочтение!

daWay
https://blog.kevgen.ru/posts/daway/
Author
Kevgen
Published at
2024-06-16
License
CC BY-NC-SA 4.0