Write Up
burp suite의 server side prototype pollution scanner를 사용해보았다. 그 결과는 아래와 같다.
위 메시지를 읽어보면, JSON Body에 prototype pollution source가 존재함을 알 수 있다. status override, json spaces를 이용해 prototype pollution 악용이 가능함을 확인한다.
위 그림 2와 같은 속성 추가를 통해 RCE가 가능함을 확인하도록 한다. 위 curl 뒤의 주소는 본인의 웹 주소를 하면 되나, 현재 Lab에서는 방화벽이 이를 막아 Burp Collaborator만을 사용해야 한다.
일반적으로 env 속성은 환경 변수를 저장하는데 사용된다. 위에서는 env 객체에 happy라는 새 속성을 추가하였다. happy 속성은 child_process 모듈을 로드하고 해당 모듈에서 execSync함수를 호출해 명령을 실행한다.
위 패킷을 request한 뒤, /admin-job 엔드포인트로 가 프로세스 재 실행 및 DNS 통신을 확인하여 상호작용이 이뤄졌음을 확인한다.
이제 exploit을 해준다.
위 그림 3 혹은 아래와 같은 exploit을 구상할 수 있다.
"__proto__": {
"execArgv":[
"--eval=require('child_process').execSync('rm /home/carlos/morale.txt')"
]
}