본문 바로가기

Wargame(hacking)/PortSwigger

Lab : Bypassing flawed input filters for server-side prototype pollution

Write Up

 

취약한 엔드포인트는 아래와 같다. 

/my-account/change-address

 

 

__proto__ :{"foo":"bar"}

 

위와 같은 __proto__ 속성을 이용한 prototype pollution은 성공하지 못했다. 그래서 반응이 없는 경우도 있으니, 이전에 배운 반응이 없을 경우의 prototype pollution을 시도했으나 이 또한 실패하였다. 

 

그래서 __proto__ 속성에 대한 filtering이 있을 것이라 생각하였고, 아래와 같은 Bypass들을 시도하였다. 

 

그림 1

 

위 그림 1과 같이 __proto__ 에 대한 난독화를 실시하여, Bypass를 시도해보았으나, 실패하였다. 

 

그림 2

 

constrcutor를 이용하여, __proto__ 속성을 사용하지 않고, prototype pollution을 시도해보았고, 응답에서 객체가 성공적으로 삽입된 것을 볼 수 있었다. 

 

문제를 해결하기 위한 gadget은 isAdmin이고, 아래와 같은 request를 만들어준다. 

 

그림 3

 

위의 prototype pollution으로 admin panel에 접근할 수 있었으며, 문제를 해결할 수 있었다.