hackerone-shopify-2020-08-n-962895

Stocky App Administrator can create a backdoor admin account by using an existing POS User

보고서

POS 모바일 앱으로 로그인하면 POS 유저가 생성되었다. 이 계정은 원래 Stocky(shopify에서 관리하는 어플)의 페이지인 https://stocky.shopifyapps.com/users 에서 편집할 수 없었다. 하지만 삭제 버튼으로 사용자 ID를 얻은 후 https://stocky.shopifyapps.com/users/{user_id}/edit 에 접근하면 편집할 수 있다. 또한 프로필을 저장할 때 요청에 user[admin] 을 추가하면 해당 사용자를 관리자로 만들 수도 있다.

Stocky 앱에는 POS 유저에 대한 관리 기능이 UI에 표시되지 않기 때문에, POS 유저가 실제 계정을 갖고 있는지, 그 계정은 어떤 권한까지 있는지는 다른 관리자에게는 모호하다.

이 취약점을 악용하기 위해서는 위 작업을 하기 위해 Stocky 앱에 액세스 권한이 있는 실제 직원이 필요하다. 이미 앱 관리 권한을 가진 직원은 POS 사용자를 백도어 관리자로 만들 수 있다. 추후 해당 직원이 권한을 잃었을 경우 백도어 계정을 사용할 수 있다.

  1. POS 모바일 앱에서 POS 유저로 Stocky 앱을 연다. 이는 Stocky 앱에 POS 유저를 생성한다.
  2. Stocky 앱 관리자 직원으로 로그인하여 https://stocky.shopifyapps.com/preferences/users 에서 POS 유저의 delete 버튼에서 ID를 얻는다.
  3. https://stocky.shopifyapps.com/users/{user_id}/edit 에 접근하여 이메일, 패스워드, 이름 등을 설정한다.
  4. 페이로드를 잡아서 user[admin]=1 을 추가해 권한을 상승시킨다.

tags: bughunting, shopify, access control vulnerability, wstg-athz-03, business-logic-vul, wstg-busl-01, severity none, web hacking