[프리미엄] 구매 불가한 상품 결제 수행

Writer 8ug8ear Program 마인리스트

WEB Informative Medium No Reward Created: Jul 2, 2022 (a month ago) Last Updated: Jul 17, 2022 (a month ago)

Weakness

불충분한 인가 / 파라미터 변조

Description

개요

  • 서버리스트 상단에 서버를 고정 시키기 위하여 사용자가 결제하는 상품 구매제한을 임의로 해제 시켜 구매 가능한 취약점
    (※취약점 발생 url : /api/v1/internal/campaigns/get_slots)

재현 과정

[구매 가능 기간이 도래하지 않은 상품 결제 시도]

  1. 마인리스트 페이지 내의 프리미엄 메뉴에서 광고를 노출하고자 하는 기간 선택
    Description
  2. 구매 가능한 기간이 도래하지 않아 선택 불가한 상품 목록 확인
    Description
  3. [프리미엄] > [광고기간] 선택 시 Response되는 can_pay 파라미터 값을 false에서 true로 변경하여 상품 활성화 시도
    Description
  4. 상품 선택 및 결제 가능한 상태로 활성화됨을 확인 가능
    Description

[광고 가능한 서버 대수 제한 해제]

  1. 광고 가능한 서버대수가 제한되어 추가 상품 구매 불가능한 기간 확인
    Description
  2. [프리미엄] > [광고기간] 선택 시 Response되는 ①can_pay 파라미터 값을 false에서 true로 변경하여 상품 활성화 및 ②max_slot 파라미터 값을 2에서 4로 변경하여 서버대수 제한 수 증가 시도
    Description
  3. 광고 구매 가능한 서버대수가 증가하여 상품 구매가 가능한 상태로 활성화됨을 확인 가능
    Description

[타 사용자가 이미 구매한 상품 중복 결제 시도]

  1. 타 사용자가 이미 구매한 상품은 중복 구매가 불가함을 확인
    Description
  2. [프리미엄] > [광고기간] 선택 시 Response되는 ①can_pay 파라미터 값을 false에서 true로 변경하여 상품 활성화, ②max_slot 파라미터 값을 2에서 4로 변경하여 서버대수 제한 수 증가, ③ user_id 및 server_id 파라미터 값을 null으로 변경 시도
    Description
  3. 타 사용자 이미 구매한 상품을 중복 구매가 가능한 상태로 활성화됨을 확인 가능
    Description

예상되는 취약점 발생 원인

  • 특정 기간이 도래하였을 때 선착순으로 저렴하게 구매 가능한 상품을 우선적으로 선점 구매 가능
  • 타 사용자가 구매한 상품에 대한 중복 및 광고 가능한 서버 제한 해제하여 추가 구매 가능

Timeline

8ug8ear submitted ticket. July 2, 2022 (a month ago)
4064f9b2 MANAGER changed the status from 'Submitted' to 'Informative'. July 2, 2022 (a month ago)
4064f9b2 MANAGER changed the disclosure from 'Closed' to 'Disclosed (Full)'. July 2, 2022 (a month ago)
4064f9b2 MANAGER posted a comment. July 2, 2022 (a month ago)

프론트엔드 상에서의 데이터를 변경하면 결제가 가능한 것처럼 보일 수 있지만, 이미 백엔드 최종 결제 승인 단계에 말씀주신 내용들에 대한 검증을 진행하고 있습니다. 따라서 종료 처리하도록 하겠습니다. 감사합니다.