[Dreamhack]wargame/WEB
[Dreamhack] Filestorage 문제
bigwhaleking
2024. 5. 13. 16:29
-코드 분석

/test 라는 곳에서 ‘func’ 값이 rename 일 때 파일에 이름을 변경할 수 있게 해주고, reset 이면 read 라는 객체를 초기화 해줍니다.
위 코드에서 중점으로 봐야 하는 코드는 “setValue(file,filename,rename)”이라는 코드입니다.
이 코드에는 Prototype Pollution 이라는 취약점이 존재합니다. Prototype Pollution이라는 공격은 공격자가 JS언어 고유의 프로토타입 체인 동작 원리를 이용해 웹 서버를 공격하는 방법을 의미합니다.
file 이라는 객체의 프로토타입에 접근을 해서 filename 값을 flag 경로로 설정을 한다면 read[filename] 값이 flag 경로로 값이 변하게 됩니다.

-EXPLOIT

위 요청을 통해서 먼저 object를 초기화를 해줍니다.

위에 요청을 보내게 된다면 read[filename] 값이 바뀌게 됩니다.

flag 값이 출력이 되었습니다..