
CVE-2026-25860 POC git
Если вы хотите объединить этот XSS с RCE, прочитайте:
OpenClinic GA <= v5.351.19 (12.05.2026) содержит уязвимость отражённого межсайтового скриптинга (XSS) в обработчике загрузки DICOM-изображений, которая позволяет злоумышленникам выполнять произвольный JavaScript в браузере жертвы, внедряя вредоносные полезные нагрузки в поля метаданных DICOM-файлов. Злоумышленники могут создать DICOM-файл с полезными нагрузками JavaScript в полях метаданных, таких как Study Description, которые отражаются без санитизации в popup.jsp и archiving/uploadfiles.java при обработке через функцию загрузки DICOM-изображений.
В старой версии имя файла было uploadfiles_jsp.java.
Файл web/archiving/uploadfiles.jsp обрабатывает отображение результатов загрузки .DICOM и показывает некоторые поля DICOM. Они отражаются без дальнейших вычислений и санитизации, что приводит к отражённому 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
Создайте вредоносный DICOM-файл file.dcm, изменив StudyDescription с помощью HTML-кода, который нужно внедрить для выполнения JavaScript:
Дальнейшее исследование показывает, что управление всплывающим окном осуществляется с помощью popup.js.
Загрузите этот файл, чтобы вызвать отражённый XSS: