Write Up
취약한 엔드포인트는 아래와 같다.
/my-account/change-address
위 엔드 포인트로 요청 시 그림 1과 같이 필드의 데이터가 JSON으로 서버에 전송되어진다. 그리고 서버는 사용자를 나타내는 JSON 개체로 응답한다. prototype pollution에 대한 source를 식별하기위해서 임의 속성이 있는 객체를 __proto__를 통해 추가하였고, 응답으로 삽입된 임의 객체 속성이 프로토 타입 체인을 통해 상속되었음을 알 수 있다.
위 응답을 봤을 때, isAdmin 속성의 값을 변경시켜야 겠다는 추측을 할 수 있다.
위 그림 2와 같이 isAdmin에 대한 속성 값을 true로 변경하여, 프로토 타입 체인에 상속되게 만들어 준다. 이로써 isAdmin 속성의 값이 true로 변경(상속) 되었다.
carlos를 delete 해, 해당 Lab을 해결해보도록 한다.
참고
https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON