[하루한줄] CVE-2021-21972: VMware vCenter의 인증되지 않은 시스템 권한의 원격 코드 실행 취약점
URL
Unauthorized RCE in VMware vCenter
Target
- vmware vcenter_server 7.0 U1c 이전
- vmware vcenter_server 6.7 U3l 이전
- vmware vcenter_server 6.5 U3n 이전
Explain
VMware 중앙 집중식 관리 유틸리티이며 여러 가상 시스템 및 ESXi 호스트와 구성 요소를 관리하는 vCenter에서 unrestricted file upload, path traversal 취약점을 이용한 원격 코드 실행 취약점에 대한 세부 정보가 공개되었습니다.
취약점이 존재하는 uploadova
엔드포인트의 경로인 /ui/vropspluginui/rest/services/*
는 인증 없이 접근할 수 있습니다.
@RequestMapping(value = {"/uploadova"}, method = {RequestMethod.POST})
public void uploadOvaFile(@RequestParam(value = "uploadFile",required = true) CommonsMultipartFile uploadFile, HttpServletResponse response) throws Exception {
...
if (!uploadFile.isEmpty()) {
try {
...
InputStream inputStream = uploadFile.getInputStream();
File dir = new File("/tmp/unicorn_ova_dir");
if (!dir.exists()) {
dir.mkdirs();
} else {
String[] entries = dir.list();
String[] var9 = entries;
int var10 = entries.length;
for(int var11 = 0; var11 < var10; ++var11) {
String entry = var9[var11];
File currentFile = new File(dir.getPath(), entry);
currentFile.delete();
}
logger.info("Successfully cleaned : /tmp/unicorn_ova_dir");
}
TarArchiveInputStream in = new TarArchiveInputStream(inputStream);
TarArchiveEntry entry = in.getNextTarEntry();
ArrayList result = new ArrayList();
...
uploadova
는 아카이브 파일을 받아 /tmp/unicorn_ova_dir
경로에 해당 아카이브 파일을 열어 파일을 생성하는데, 생성되는 아카이브 내부의 파일 이름에 대한 검증이 없어 ../
을 포함하여 원하는 위치에 파일 업로드가 가능합니다.
Windows의 경우 해커가 .jsp
형식의 웹 쉘을 마찬가지로 인증 없이 접근 가능한 엔드포인트 경로인 C:\ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport\
에 업로드하고 접근하면 시스템 권한으로 vCenter 호스트에서 원격 코드 실행이 가능합니다.
이후 모든 엔드포인트가 인증 후 접근이 가능하도록 패치되었지만 여전히 파일 업로드 및 path traversal 취약점은 남아있기 때문에 인증된 클라이언트에 의한 공격에는 PoC가 유효한 것으로 알려졌습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.