Write Up
취약한 엔드포인트는 아래와 같다.
/my-account/change-address
__proto__ :{"foo":"bar"}
위와 같은 __proto__ 속성을 이용한 prototype pollution은 성공하지 못했다. 그래서 반응이 없는 경우도 있으니, 이전에 배운 반응이 없을 경우의 prototype pollution을 시도했으나 이 또한 실패하였다.
그래서 __proto__ 속성에 대한 filtering이 있을 것이라 생각하였고, 아래와 같은 Bypass들을 시도하였다.
위 그림 1과 같이 __proto__ 에 대한 난독화를 실시하여, Bypass를 시도해보았으나, 실패하였다.
constrcutor를 이용하여, __proto__ 속성을 사용하지 않고, prototype pollution을 시도해보았고, 응답에서 객체가 성공적으로 삽입된 것을 볼 수 있었다.
문제를 해결하기 위한 gadget은 isAdmin이고, 아래와 같은 request를 만들어준다.
위의 prototype pollution으로 admin panel에 접근할 수 있었으며, 문제를 해결할 수 있었다.