Printer Vulnyx (Easy - Linux)

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-21 03:26 EDT
Nmap scan report for 192.168.5.86
Host is up (0.0039s 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-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.56 (Debian)
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=8/21%Time=68A6CA19%P=x86_64-pc-linux-gnu%r(NU
SF:LL,25,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\n")%r(GetRequ
SF:est,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x
SF:20")%r(HTTPOptions,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel
SF:\n\nPassword:\x20")%r(FourOhFourRequest,2F,"\nKonica\x20Minolta\x20Prin
SF:ter\x20Admin\x20Panel\n\nPassword:\x20")%r(JavaRMI,2F,"\nKonica\x20Mino
SF:lta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(GenericLines,2F,"
SF:\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(R
SF:TSPRequest,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPass
SF:word:\x20")%r(RPCCheck,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20P
SF:anel\n\nPassword:\x20")%r(DNSVersionBindReqTCP,2F,"\nKonica\x20Minolta\
SF:x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(DNSStatusRequestTCP,2
SF:F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%
SF:r(Help,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword
SF::\x20")%r(SSLSessionReq,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20
SF:Panel\n\nPassword:\x20")%r(TerminalServerCookie,2F,"\nKonica\x20Minolta
SF:\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(TLSSessionReq,2F,"\n
SF:Konica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(Ker
SF:beros,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:
SF:\x20")%r(SMBProgNeg,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Pane
SF:l\n\nPassword:\x20")%r(X11Probe,2F,"\nKonica\x20Minolta\x20Printer\x20A
SF:dmin\x20Panel\n\nPassword:\x20")%r(LPDString,2F,"\nKonica\x20Minolta\x2
SF:0Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(LDAPSearchReq,2F,"\nKon
SF:ica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(LDAPBi
SF:ndReq,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:
SF:\x20")%r(SIPOptions,2F,"\nKonica\x20Minolta\x20Printer\x20Admin\x20Pane
SF:l\n\nPassword:\x20")%r(LANDesk-RC,2F,"\nKonica\x20Minolta\x20Printer\x2
SF:0Admin\x20Panel\n\nPassword:\x20")%r(TerminalServer,2F,"\nKonica\x20Min
SF:olta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20")%r(NCP,2F,"\nKonica
SF:\x20Minolta\x20Printer\x20Admin\x20Panel\n\nPassword:\x20");
MAC Address: 08:00:27:E0:64:DE (PCS Systemtechnik/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 159.70 seconds

Veremos varios puertos interesantes, entre ellos un puerto 80 que suele alojar una pagina web y un puerto 9999 que por lo que vemos en el reporte parece ser una impresora en la que puedes iniciar sesion mediante unas credenciales, si entramos en el puerto 80 veremos una pagina normal y corriente de apache2, por lo que vamos a realizar un poco de fuzzing a ver que vemos.

Gobuster

Info:

Veremos que hay un recurso compartido llamado /api que es bastante interesante, por lo que vamos a ver que contiene dentro.

Info:

Veremos que nos ha descubierto un recurso llamado /printers, si entramos dentro de /printers veremos lo siguiente en la pagina:

Veremos que esta utilizando una estructura de id y extension, por lo que podremos realizar un poco de fuerza bruta con varias extensiones y numeros, para saber cuales estan activos.

Vamos a crearnos un script para generar 2 archivos, uno que sea ids.txt y exts.txt con todo lo necesario.

generateTexts.py

Los ejecutaremos de la siguiente forma:

Info:

Ahora vamos a crear otro script en el que pruebe con dichos diccionarios la API de la impresora a ver que vemos.

printer.py

Ahora lo ejecutaremos de esta forma:

Info:

Veremos que nos ha encontrado estas impresoras, por lo que vamos a investigar que contiene cada una de ellas.

viewJSON.py

Lo ejecutaremos de esta forma:

Info:

Veremos que es una serie de contraseñas, por lo que podremos probarlas en el puerto 9999 que hemos visto antes a ver cual funciona de todas.

Escalate user printer

Printer (9999)

Info:

Si vemos el help poniendo ? veremos lo siguiente:

Vemos que con exec podemos ejecutar comandos a nivel de sistema, por lo que vamos a probar a ejecutar lo siguiente:

Info:

Veremos que esta funcionando, por lo que vamos a realizar un reverse shell de esta forma:

Ahora antes de enviarlo nos pondremos a la escucha:

Ahora si enviamos lo de antes y volvemos a donde tenemos la escucha veremos lo siguiente:

Veremos que ha funcionado, por lo que tendremos que sanitizar la shell.

Sanitización de shell (TTY)

Ahora vamos a leer la flag del usuario:

user.txt

Escalate Privileges

Si listamos los permisos con SUID que tenemos a nivel de sistema, veremos lo siguiente:

Info:

Veremos un binario interesante en esta linea:

Si leemos la documentacion del binario veremos que se utiliza para crear sesion dentro del sistema por asi decirlo, si listamos los procesos que hay en ejecuccion en el sistema veremos lo siguiente:

Info:

Vemos que esta ejecutando una sesion como root con screen por lo que podremos realizar lo siguiente:

Info:

Veremos que con estos ya seremos root, por lo que leeremos la flag de root.

root.txt

Last updated