
CVE-2026-25860 POC git
이 XSS를 RCE와 연쇄적으로 사용하려면 다음을 읽을 수 있습니다:
OpenClinic GA <= v5.351.19(2026년 12월 5일)는 DICOM 이미지 업로드 핸들러에 반사형 크로스사이트 스크립팅 취약점을 포함하고 있으며, 공격자는 DICOM 파일 메타데이터 필드에 악성 페이로드를 삽입하여 피해자 브라우저에서 임의의 JavaScript를 실행할 수 있습니다. 공격자는 DICOM 이미지 업로드 기능을 통해 처리될 때 popup.jsp 및 archiving/uploadfiles.java에서 삭제(sanitization) 없이 반사되는 Study Description과 같은 메타데이터 필드에 JavaScript 페이로드가 포함된 DICOM 파일을 제작할 수 있습니다.
이전 버전에서 파일 이름은 uploadfiles_jsp.java였습니다.
web/archiving/uploadfiles.jsp 파일은 .DICOM 업로드 결과 렌더링을 처리하고 일부 DICOM 필드를 표시합니다. 이 필드들은 추가 연산이나 삭제(sanitization) 없이 그대로 반사되어 반사형 XSS로 이어집니다.
취약한 코드는 DICOM Tag가 처리되는 부분에서 발생합니다(요약 버전). 특히 StudyDescription이 다음 이미지들에서 POC 필드입니다:
while (itr.hasNext()) {
i++;
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
} else {
try {
String fn = SCANDIR_BASE + "/from/" + filename + "_" + i;
File savedFile = new File(fn);
InputStream is = item.getInputStream();
FileUtils.copyInputStreamToFile(is, savedFile);
is.close();
DicomObject obj = Dicom.getDicomObject(savedFile);
if (obj == null) {
errors.add(item.getName());
} else {
patients.add(obj.getString(Tag.PatientID));
studies.add(obj.getString(Tag.StudyID) + "</td><td>" + obj.getString(Tag.StudyDescription).replaceAll("\\^", " "));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
참고: 최신 안정화 버전의 다운로드 실행 가능 릴리스는 테스트된 버전보다 몇 버전 뒤처져 있습니다. 그러나 취약점은 여전히 존재하며 Linux와 Windows 모두에서 동작합니다.
JavaScript를 실행하기 위해 주입할 HTML 코드로 StudyDescription을 수정하여 악성 DICOM 파일 file.dcm을 생성합니다:
추가 검사 및 팝업 관리는 popup.js에서 처리됩니다.
이 파일을 업로드하여 반사형 XSS를 트리거합니다: