in OpenNMS Horizon, versions opennms-18.0.0-1 through opennms-27.1.0-1; OpenNMS Meridian, versions meridian-foundation-2015.1.0-1 through meridian-foundation-2019.1.18-1; meridian-foundation-2020.1.0-1 through meridian-foundation-2020.1.7-1 are vulnerable to Stored Cross-Site Scripting, since the function `createRequisitionedNode()` does not perform any validation checks on the input sent to the `node-label` parameter. Due to this flaw an attacker could inject an arbitrary script which will be stored in the database.
The module `opennms` can be abused by Stored Cross-Site Scripting vulnerability since the function `createRequisitionedNode()` does not perform any validation checks on the input sent to the `node-label` parameter. Due to this flaw an attacker could inject an arbitrary script which will be stored in the database. The `createRequisitionedNode()` function simply adds a new requisition on the server and accepts user input via `node-label` parameter. Due to lack of validation on the value passed into the parameter, an attacker can supply a crafted arbitrary script.
Login to the application and navigate to the “opennms/admin/ng-requisitions/index.jsp#/requisitions” endpoint. Click on the `Add Requisition` button and enter a name in the popped-up dialogue box and click “OK". On the same page, click on the "Quick Add Note" button. Select the requisition you’ve just added, enter an IP and insert the payload in the “Node label” field and click on “Provision”. Now click on the "pen" symbol of the requisition to edit it. Click on the "bin" symbol to delete it. Now notice the payload getting triggered.
opennms-18.0.0-1 through opennms-27.1.0-1, meridian-foundation-2015.1.0-1 through meridian-foundation-2019.1.18-1, meridian-foundation-2020.1.0-1 through meridian-foundation-2020.1.7-1
Upgrade to Horizon 27.1.1, Meridian 2020.1.8 or Meridian 2019.1.19