Нам предлагается получить доступ к административной панели,
в которой находится заветный флаг. Взглянем на задание.
Блог ИБ тематики.
Тем кто участвовал в предыдущих тасках наверняка в глаза бросился порт на котором
запущенно задание. Он четырехзначный(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/