Το Abducted είναι ένα box μόνο-Samba — χωρίς web server, μόνο SSH και δύο θύρες SMB. Το μονοπάτι εισόδου είναι ένα unauthenticated shell injection στο print-spooler (CVE-2026-4480) ενάντια σε ένα share εκτυπωτή προσβάσιμο ως guest, που προσγειώνεται σαν nobody. Από εκεί είναι μια ευθεία γραμμή μέσα από ένα διαρρεύσαν credential rclone, επαναχρησιμοποίηση password στο SSH, ένα symlink SMB wide-links που εκμεταλλευόμαστε για να φυτέψουμε ένα κλειδί SSH σαν δεύτερος χρήστης, και ένα τελικό privesc μέσω ενός systemd drop-in εγγράψιμου από ομάδα για την υπηρεσία Samba.
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
Θυρα
Υπηρεσια
Σημειωσεις
22
SSH
OpenSSH 9.6p1 Ubuntu
139/445
SMB
Samba smbd 4 — όνομα NetBIOS ABDUCTED, server string "Hartley Group Document Services"
Χωρίς web server σε αυτό — το SMB είναι ολόκληρη η επιφάνεια επίθεσης. Πρόσθεσε το hostname:
/etc/hosts
SP1R4@kali)-[~]└$ echo "<TARGET_IP> abducted.htb" | sudo tee -a /etc/hosts
Καταμέτρηση SMB & RPC
Λιστάρισμα shares με 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
Και τα δύο disk shares απορρίπτουν πρόσβαση guest — το HP-Reception είναι το μόνο ανοιχτό, και είναι εκτυπωτής, όχι file share. Το rpcclient ενάντια στο null session τραβάει ένα username και επιβεβαιώνει τα paths των shares στον δίσκο:
Ένας τοπικός χρήστης (scott), ένα share εκτυπωτή εγγράψιμο από guest πάνω στο /var/spool/samba, και ένας print server εκτεθειμένος σε ανώνυμους χρήστες. Σε συνδυασμό με το όνομα του box και ένα πρόσφατο CVE του Samba, ο εκτυπωτής είναι ο τρόπος εισόδου.
Το CVE-2026-4480 είναι ένα unauthenticated command injection στο print spooler του Samba. Όταν υποβάλλεται ένα print job, το Samba αντικαθιστά το όνομα job που δίνει ο client μέσα στην ρυθμισμένη print command μέσω του token %J — χωρίς να κάνει sanitize shell metacharacters. Το να ορίσεις το όνομα job σε |sh και να γράψεις ένα shell payload σαν σώμα του job κάνει εκείνο το payload να εκτελείται από όποιον λογαριασμό τρέχει τον print handler του smbd.
Το exploit μιλάει απευθείας στο named pipe spoolss: άνοιξε ένα handle στον εκτυπωτή, ξεκίνα ένα document με όνομα job |sh, και γράψε το payload σαν δεδομένα εκτύπωσης.
Πλάγια Κίνηση — SSH ως scott (Επαναχρησιμοποίηση Password)
Υπάρχουν μόνο δύο τοπικοί χρήστες στο box (scott, marcus). Το ανακτημένο password του svc-backup δοκιμάζεται ενάντια στο login SSH του scott και πετυχαίνει:
🚩 User flag πιάστηκε — το password rclone του svc-backup επαναχρησιμοποιήθηκε αυτούσιο για τον λογαριασμό SSH του scott.
Καταμέτρηση ως scott
Χωρίς δικαιώματα sudo. Το config Samba αξίζει μια δεύτερη ματιά τώρα που υπάρχει ένα πραγματικό shell για να το διαβάσει κανείς:
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 επιβεβαιώνει την αλυσίδα CVE-2026-4480 — το %J προσγειώνεται unescaped στην εντολή shell. Πιο χρήσιμο τώρα: το share transfer τρέχει τα πάντα σαν marcus (force user) και ακολουθεί symlinks σε ολόκληρα τα όρια share (wide links = yes). Κάθε αρχείο που γράφεται μέσα στο transfer ανήκει στον marcus, και ένα symlink μέσα σε αυτό μπορεί να δείχνει οπουδήποτε στον δίσκο.
Πλάγια Κίνηση — SSH Key Injection μέσω SMB Symlink
Ο scott μπορεί να γράψει στο /srv/transfer απευθείας στο filesystem. Το να φυτέψεις εκεί ένα symlink που δείχνει στο home directory του marcus μετατρέπει το share SMB σε ένα write primitive σαν 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 αρνείται κλειδιά που είναι world-readable, οπότε το mode πρέπει να αφαιρεθεί μέσω του share πριν γίνει αποδεκτό:
Το operators κατέχει τον φάκελο drop-in για το unit systemd smbd. Τα drop-ins προσθέτουν επιπλέον directives πάνω σε μια υπηρεσία χωρίς να αγγίζουν το base unit file — ένα ExecStartPre εδώ τρέχει σαν root τη στιγμή που η υπηρεσία κάνει restart:
🚩 Root flag πιάστηκε. Το ExecStartPre έτρεξε σαν root στο restart της υπηρεσίας, όρισε το bit SUID στο /bin/bash, και το bash -p διατήρησε τα privileges σε ένα shell root.