
CVE-2026-25860 POC git
Si quieres encadenar este XSS con RCE, puedes leer:
OpenClinic GA <= v5.351.19 (12/05/2026) contiene una vulnerabilidad de cross-site scripting reflejado en el manejador de carga de imágenes DICOM que permite a los atacantes ejecutar JavaScript arbitrario en el navegador de la víctima mediante la inserción de cargas útiles maliciosas en los campos de metadatos de archivos DICOM. Los atacantes pueden crear un archivo DICOM con cargas útiles de JavaScript en campos de metadatos como Study Description, que se reflejan sin saneamiento en popup.jsp y archiving/uploadfiles.java cuando se procesan a través de la función Upload DICOM images.
En versiones anteriores, el nombre del archivo era uploadfiles_jsp.java.
El archivo web/archiving/uploadfiles.jsp gestiona la representación del resultado de la subida de archivos .DICOM y muestra algunos campos DICOM. Se reflejan sin ningún procesamiento ni saneamiento adicional, lo que conduce a un XSS reflejado.
El código vulnerable se encuentra (versión resumida) donde se maneja el Tag DICOM. En particular, StudyDescription es nuestro campo POC en las siguientes imágenes:
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: la última versión estable descargable lista para ejecutar está algunas versiones por detrás de la probada. Pero la vulnerabilidad sigue presente y funciona tanto en Linux como en Windows
Crea el archivo DICOM malicioso file.dcm modificando el campo StudyDescription con el código HTML a inyectar para ejecutar JavaScript:
La inspección adicional y la gestión de la ventana emergente se manejan mediante popup.js
Sube este archivo para activar el XSS reflejado: