Portswigger-Multi-step process with no access control on one step
풀이
유저 역할을 변경하는 multi-step 작업에 결함이 있다. administrator:admin 계정으로 로그인하여 결함을 조사하고, wiener:peter로 로그인하여 wiener의 권한을 관리자로 상승시켜라.

admin 페이지에서 권한을 변경할 수 있다.

Upgrade User 버튼을 누르면 위와 같은 요청이 나간다.

그리고 정말로 변경할지 한 번 더 확인하는 페이지로 간다.

여기서 Yes를 누르면 바디에 confirmed=true 인자가 추가된다.

다른 브라우저에서 wiener로 로그인하여 첫 번째 요청(confirmed=true가 없는)을 보내면 액세스 컨트롤이 되어 Unauthorized 메시지를 받는다.

confirmed=true 를 붙이면 요청이 성공한다.

wiener의 계정을 upgrade하면 문제가 풀린다.
이 취약점은 여러 단계에 걸친 작업에서, 일부에만 액세스 컨트롤을 적용했기에 발생했다. confirmed=true 인자가 붙는 작업은 첫 번째 작업인 권한 변경 작업에서 액세스 컨트롤을 통과했을 때만 한다고 잘못된 가정을 했기에 발생했다.
tags: writeup, access control vulnerability, wstg-athz-02, wstg-athz-03, business-logic-vul, wstg-busl-06, web hacking