Write Up
이전 Lab 과 동일하게, 아래 엔드포인트에서 prototye pollution을 exploit할 수 있었다.
/my-account/change-address
먼저, 아래와 같이 __proto__ 속성을 통해 객체를 삽입하려 했으나, 응답이 반환되지 않았다.
"__proto__": {
"foo1":"bar"
}
그래서 Charset override 방법을 이용해 해당 Lab을 해결해나가고자 한다 .
위 그림 1과 같이 city property에 대한 값으로 UTF-7 인코딩 한 foo 를 대입해 request 하면, 응답으로 해당 인코딩 된 값이 그대로 반환된다. ( 응답에 foo: bar property가 보이는데, __proto__ 속성을 사용하지 않고 주입했더니 지속적으로 응답 값으로 반환되었다. 페이지에 하드코딩되어짐. )
위 그림 2와 같이 content-type property로 prototype pollution을 시도한다. 만약 성공한다면 위의 city의 값으로 입력된 UTF-7 인코딩의 값이 디코딩되어 출력될 것이다.
위 그림 3과 같이 응답 값에 디코딩된 값을 볼 수 있다. 즉, prototype pollution이 성공적으로 시행됬음을 나타낸다.
위와 같이 Charset override 외에도, Status code override 공격도 시도해볼 수 있다.