Portswigger-Infinite money login flaw
풀이
wiener:peter로 로그인 할 수 있다. 지불 로직에 결함이 있다. “Lightweight l33t leather jacket” 를 구매해 문제를 풀라.

상품 중에 기프트 카드가 있다. 이를 구매하면 코드가 발급된다. My account에서 이를 등록해 크레딧을 늘릴 수 있다.

그대로 리피터로 반복하면 더이상 유효하지 않은 기프트카드라는 오류가 뜬다.

사이트의 맨 아래에 가면 뉴스레터를 받기 위한 이메일을 등록하는 폼이 있다. 이 폼에 아무 메일을 등록하면 (인증 없이) 30% 할인 쿠폰을 받을 수 있다.

쿠폰을 사용하여 기프트카드를 구매하면 조금씩 돈을 늘릴 수 있다. 또한 이 쿠폰은 재활용이 가능해 반복적으로 메일을 등록할 필요는 없다.
충분한 자금을 확보하기 위해 여러 번 반복해야 한다. Burpsuite의 매크로를 이용하여 반복 작업을 자동화할 수 있다. 매크로를 이용하면 Intruder 등을 이용할 때, 패킷을 보낼 때마다 해당 동작을(특정 패킷 보내기) 실행하게 할 수 있다. 어떤 패킷을 매번 전송할지 설정하고, 연계 패킷에서 사용할 파라미터를 설정해 다음 패킷을 보내도록 설정한다. 자세한 이용 방법은 burpsuite-macro를 참고.

Project option 의 Session Handling Reules에 Add를 한다.

이와 같은 다이얼로그가 나온다. Add를 누르면 어떤 작업을 추가할지 선택할 수 있다. Run a macro를 추가하면 매크로를 지정할 수 있다.

Record macro를 누르면 패킷을 캡쳐한다. 목록에 있는 패킷 중 원하는 패킷을 다중 선택하고(shift) OK를 누른다.

상품 담기, 결제 요청, 기프트카드 코드 확인, 기프트카드 등록 패킷을 지정한 모습이다. 이제 발급한 기프트카드 코드를 파라미터로 등록하도록 연결해준다. Configure item 버튼을 누르면 파라미터를 지정할 수 있다.

먼저 기프트카드 코드를 떼어 온다. Define Custom Parameter에서 Add를 눌러 설정 창을 띄우면 해당 Request에 대한 Response가 뜬다. 이 Response에서 떼어오고 싶은 위치를 드래그한다. 드래그하면 자동으로 regex를 생성해준다. regex를 직접 쓰거나 오프셋을 잡아도 된다. 이렇게 드래그한 파라미터의 이름을 gift-card로 지정한다.

이제 기프트카드 코드를 전송하는 패킷에서 Configure item 버튼을 누른다. 그리고 gift-card 파라미터를 Response4로부터 받도록 설정한다.
참고로 CSRF나 세션이 자꾸 바뀐다면 Cookie handling을 조정하자. 세션(쿠키)이 바뀌어 CSRF 토큰도 바뀌는 것이다. 두 체크박스 모두 해제한다. 이 작업은 패킷 여러개를 선택해서 일괄 적용은 안 되는 것 같다. 하나하나 직접 해야 했다.

CSRF, 세션 문제를 해결하기 위해서는 또한 매크로를 만든 후 Session handling action editor에서 이 두 옵션을 꺼주어야 한다.

마지막으로 CSRF, 세션 문제를 피하기 위해 디폴트로 생성되어있는 룰을 해제한다.
이제 툴을 이용하여 패킷을 보내면 매크로가 실행된다. Intruder를 이용하여 패킷을 생성하고, 매크로를 실행하자. Intruder 자체로는 딱히 할 일이 없고 단지 매크로를 실행시키기 위해 이용하는 것이다. 따라서 NULL 페이로드를 이용한다.

주의할 점은 Intruder의 쓰레드를 1개로 설정해야 한다는 점이다. 멀티쓰레드로 돌리면 장바구니에 여러 개의 물건이 쌓여 카드는 여러개 사고, 등록은 하나의 카드만 하여 제대로 동작하지 않는다.

적당히 반복해 돈을 모으면 물건을 살 수 있다. 이 취약점은 쿠폰을 여러번 이용 가능한 점, 쿠폰 발급을 위한 이메일 절차가 없는 점, 이를 악용하여 기프트카드를 통해 더 싼 가격에 무한정 돈을 얻을 수 있다는 점으로 인해 발생했다. 쿠폰은 할인을, 기프트카드는 금전을 제공하고, 이를 통해 금전적 이득을 얻을 수 있다는 도메인 지식이 필요했다.
tags: writeup, business-logic-vul, burpsuite-macro, wstg-busl-05, web hacking