partywavesec/CVE-2026-25860

GitHub: partywavesec/CVE-2026-25860

针对 OpenClinic GA 5.247.01 DICOM 图像上传处理程序中反射型 XSS 漏洞(CVE-2026-25860)的概念验证代码及利用说明。

Stars: 0 | Forks: 0

# CVE-2026-25860 ## OpenClinic GA 5.247.01 通过 DICOM 图像上传处理程序导致的反射型 XSS 如果你想将此 XSS 与 RCE 进行链式利用,可以阅读: - [https://www.partywave.site/show/research/cve-2026-25860-openclinic-ga-xss-to-rce](https://www.partywave.site/show/research/cve-2026-25860-openclinic-ga-xss-to-rce) ### 描述 **OpenClinic GA <= v5.351.19** (12/05/2026) 的 DICOM 图像上传处理程序中存在反射型跨站脚本漏洞,攻击者可以通过在 DICOM 文件元数据字段中嵌入恶意 payload,在受害者的浏览器中执行任意 JavaScript。攻击者可以在 Study Description 等元数据字段中制作带有 JavaScript payload 的 DICOM 文件,当通过上传 DICOM 图像功能进行处理时,这些字段会未经净化地反射在 `popup.jsp` 和 `archiving/uploadfiles.java` 中。 在旧版本中,文件名为 `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) + "" + obj.getString(Tag.StudyDescription).replaceAll("\\^", " ")); } } catch (Exception e) { e.printStackTrace(); } } } ``` __注意:最新的稳定版、可直接下载运行的发布版本略落后于我们测试的版本。但该漏洞依然存在,并且在 Linux 和 Windows 上均可触发__ ### POC 通过修改 `StudyDescription`,将其替换为用于执行 javascript 的待注入 html 代码,以此创建恶意 DICOM 文件 `file.dcm`: malicious dcm file 进一步的检查和弹窗管理由 `popup.js` 处理 上传此文件以触发反射型 XSS: dcm reflected XSS image ### 链接 - [https://sourceforge.net/projects/open-clinic](https://sourceforge.net/projects/open-clinic)
标签:JS文件枚举, OpenClinic GA, PoC, Web安全, 暴力破解, 蓝队分析, 跨站脚本(XSS)