On October 6, 2015, xistence[at]0x90.nl disclosed a traversal issue in ManageEngine ServiceDeskPlus. According to the timeline included, the issue was fixed by ManageEngine with the release of version ServiceDesk 9.1 build 9111 on September 28, 2015 (reference SD-60283, 60280).
During plugin development, a Tenable researcher discovered that ManageEngine AssetExplorer appeared to be vulnerable to a similar traversal. In the file
org.apache.jsp.workorder.FileDownload_jsp.java file appears to be a Java Servlet that serves the URL pattern
/workorder/FileDownload.jsp according to
\applications\extracted\AdventNetAssetExplorer.eear\AdventNetServiceDeskWC.ear\AdventNetServiceDesk.war\WEB-INF\web.xml. When installed on Windows (due to the way the OS parses relative paths), an unauthenticated traversal allows for accessing arbitrary files outside the server's path. At the time the Servlet processes a GET request, the current directory is
[PRODUCT_INSTALLATION_DIR]\bin. If an attacker sends a GET request with a specially crafted
fName parameter to cause the Servlet to interpret
the relative path specifications causes Windows to traverse back to the root directory of the drive letter even though the "support" and "null" sub-directories do not exist.
Based on the initial disclosure and internal research, it appears that both ServiceDeskPlus and AssetExplorer both use the vulnerable
SDJSPClasses.jar file. The changelog for each product shows it was thought to be fixed in AssetExplorer build 6113. However, it appears that build 6113 simply changed the URL pattern
web.xml to require authentication. This means that in build 6113, all URLs ending with .jsp (with a few exceptions) will be subject to authentication. However, the path traversal vulnerability doesn't go away, it just requires authentication. In an application with multiple user roles, it may not be expected that an authenticated user should have access to potentially sensitive files on the underlying file system, so this still poses a security risk.