Express Prototype Pollution Gadgets
WhiteIntel은 다크 웹을 통해 제공되는 무료 기능을 제공하는 검색 엔진으로, 회사나 그 고객이 스틸러 악성 소프트웨어에 의해 침해당했는지 확인하는 데 사용됩니다.
WhiteIntel의 주요 목표는 정보를 도난당한 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격을 막는 것입니다.
그들의 웹사이트를 확인하고 무료로 엔진을 시험해 볼 수 있습니다:
XSS 응답 제공
더 자세한 내용은 원본 연구를 확인하세요
JSON 콘텐츠 유형을 HTML로 변경
JSON 콘텐츠 유형 응답을 사용하는 익스프레스 앱에서 JSON을 반영하는 경우:
이러한 경우에는 JSON 콘텐츠 유형으로는 일반적으로 XSS가 불가능합니다. 그러나 프로토타입 오염을 통해 Express가 HTML 응답을 제공하도록 혼란스럽게 만들 수 있습니다. 이 취약점은 응용 프로그램이 **res.send(obj)
**를 사용하고 body parser를 사용하여 application/json 콘텐츠 유형을 사용하는 데 의존합니다.
body
및 _body
속성을 오염함으로써 Express가 HTML 콘텐츠 유형을 제공하고 _body
속성을 반영하여 저장된 XSS를 유발할 수 있습니다.
UTF7 렌더링
Express가 UTF-7 콘텐츠를 렌더링하도록 할 수 있습니다:
안전한 스캐닝 기술
JSON 공백
다음 PP는 JSON 내의 속성에 추가 공백을 넣어 기능을 손상시키지 않습니다:
그러면 반사된 JSON은 다음과 같이 보입니다:
노출된 헤더
다음 PP 가젯은 서버가 다음 HTTP 헤더를 보내도록 만듭니다: Access-Control-Expose_headers: foo
CORS 모듈이 설치되어 있어야합니다
OPTIONS 메소드
다음 payload를 사용하면 OPTIONS 응답에서 메소드를 숨길 수 있습니다:
상태
다음 PP 페이로드를 사용하여 반환된 상태 코드를 변경할 수 있습니다:
오류
원시 값인 문자열과 같은 것으로 프로토타입을 할당하면 프로토타입은 객체여야 하므로 no-op 작업이 생성됩니다. Object.prototype
에 프로토타입 객체를 할당하려고 하면 예외가 발생합니다. 이 두 가지 동작을 사용하여 프로토타입 오염이 성공적으로 감지되었는지 확인할 수 있습니다:
반사된 값
응용 프로그램이 응담에 객체를 포함하고 __proto__
와 함께 비정상적인 이름의 속성을 생성하는 경우, 이는 통찰력을 제공할 수 있습니다. 특히 응답에 비정상적인 속성만 반환되는 경우, 이는 응용 프로그램의 취약점을 나타낼 수 있습니다:
또한 Lodash와 같은 라이브러리가 사용되는 시나리오에서는 프로토타입 오염(PP)을 통해 속성을 설정하고 객체 내부에 직접 설정하는 것이 다른 진단 접근 방법을 제공합니다. 응답에서 해당 속성이 누락된 경우, Lodash가 병합하기 전에 대상 객체에서 속성의 존재 여부를 확인하고 있음을 시사합니다:
기타
점 허용
Express에는 쿼리 문자열 매개변수에서 객체를 생성하는 옵션이 있습니다. 이를 사용하여 프로토타입 오염 취약점을 악용하는 버그 체인을 만들 수 있습니다.
?foo.bar=baz
는 Node에서 객체를 생성합니다.
참고 자료
WhiteIntel은 다크 웹을 기반으로 하는 검색 엔진으로, 회사나 그 고객이 스틸러 악성 소프트웨어에 의해 침해당했는지 확인하는 무료 기능을 제공합니다.
WhiteIntel의 주요 목표는 정보를 도난하는 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격을 막는 것입니다.
그들의 웹사이트를 방문하여 무료로 엔진을 시험해 볼 수 있습니다:
Last updated