pollution 경로를 모르겠습니다
portotype pollution 을 이용해서 outputFunctionName을 공격해야될것같은데 입력 어느부분에서 injection이 되는지 모르겠습니다ㅠㅠ
merge함수에서 pollution이 발생할것같아서 /raw/:filename 에서 filename에 넣어야될것같아서 이것저것 시도해보았는데 잘안되네요..
영 잘못짚은건가 싶은데 작은 힌트라도 하나 주시면 감사하겠습니다 ㅠㅠ
#web
작성자 정보
답변
1
as3617
워게임 고인물
merge 함수에서 prototype pollution이 발생하는 것이 맞습니다.
exports.merge = function(a, b) {
for (let key in b) {
if(check(key)){
if (isObject(a[key]) && isObject(b[key])) {
this.merge(a[key], b[key]);
} else {
a[key] = b[key];
}
}
}
return a;
a객체에 b객체를 합칠 때 발생하게 되는데
func.merge(file, JSON.parse(`{"filename":"${filename}", "State":"Not Found"}`));
함수는 위와 같이 사용하고 있습니다. JSON.parse함수를 사용하고 있기 때문에 JSON 표기법에 맞춰서 filename을 조작해보신다면 쉽게 푸실 수 있을 것 같습니다.