
CVE-2026-25860 POC git
Se você quiser encadear este XSS com RCE, pode ler:
OpenClinic GA <= v5.351.19 (12/05/2026) contém uma vulnerabilidade de cross-site scripting refletido no manipulador de upload de imagens DICOM que permite que atacantes executem JavaScript arbitrário no navegador da vítima ao incorporar payloads maliciosos em campos de metadados de arquivos DICOM. Atacantes podem criar um arquivo DICOM com payloads de JavaScript em campos de metadados como Study Description, que são refletidos sem sanitização em popup.jsp e archiving/uploadfiles.java quando processados pelo recurso Upload DICOM images.
Na versão mais antiga, o nome do arquivo era uploadfiles_jsp.java.
O arquivo web/archiving/uploadfiles.jsp lida com a renderização do resultado do upload de .DICOM e exibe alguns campos DICOM. Eles são refletidos sem processamento adicional e sanitização, levando a XSS refletido.
O código vulnerável ocorre (versão resumida) onde a Tag DICOM é manipulada. Em particular, StudyDescription é o nosso campo de POC nas próximas imagens:
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();
}
}
}
Nota: a versão estável mais recente para download pronta para execução está algumas versões atrás da testada. Mas a vulnerabilidade ainda está presente e funciona tanto no Linux quanto no Windows
Crie o arquivo DICOM malicioso file.dcm modificando o StudyDescription com o código HTML para injetar e executar javascript:
A inspeção adicional e o gerenciamento do popup são tratados por popup.js
Carregue este arquivo para acionar o XSS refletido: