
CVE 2021-21315 PoC
이것은 CVE-2021-21315에 대한 개념 증명(Proof of Concept)입니다. 이 취약점은 Node.JS용 System Information Library(npm 패키지 "systeminformation")에 영향을 미칩니다. npmjs.com/systeminformation
"si.inetLatency(), si.inetChecksite(), si.services(), si.processLoad()에 전달되는 서비스 파라미터를 반드시 확인하거나 정리하세요. 문자열만 허용하고 배열은 거부하세요. 문자열 정리(string sanitation)는 예상대로 작동합니다."
취약점이 (제 생각에는) 잘 설명되어 있지 않기 때문에, 취약한 버전의 systeminformation을 기반으로 한 작은 앱을 코딩하기로 결정했습니다. PoC에는 다음이 포함됩니다:
재현 단계:

이 요청은 문자열 정리(string sanitization)로 인해 실패합니다:

CVE 세부 정보에서 언급한 대로 "정리(sanitization)는 예상대로 작동하며, 배열은 거부합니다 [...]"
이번에는 "name" 값을 살펴보면, 정리되지 않았습니다 - 성공! 명령이 실행되었는지 확인해 봅시다
성공! 명령이 실행되었습니다. 물론 "pwn.txt" 같은 파일은 아무도 신경 쓰지 않지만, 잠재적 공격자는 다음과 같은 행위를 할 수 있습니다:
"명령 삽입(Command injection)"은 무해해 보일 수 있지만, 특정 조건이 충족되면 엄청난 영향을 미칠 수 있습니다.
이 문제는 "systeminformation" 버전 5.3.1에서 수정되었습니다. 크레딧: https://www.huntr.dev/users/EffectRenan (그가 취약점을 발견했습니다. 하지만 제 생각에 그의 "PoC"는 실제 세계의 영향을 보여주지 못했습니다.)
또한, 이 PoC를 일부 CTF에서 사용하는 것을 주저하지 마세요. 단, 발견자(EffectRean)와 PoC 제작자(저)를 인용해 주시면 좋겠습니다. 건배!
이 프로젝트는 교육 목적으로만 사용할 수 있습니다. 사전 허가 없이 이 소프트웨어를 대상 시스템에 사용하는 것은 불법이며, 이 소프트웨어를 오용하여 발생하는 모든 피해에 대해 저자는 책임을 지지 않습니다.