CVE-2009-0229-PoC
PoC para CVE-2009-0229 "Vulnerabilidade de Leitura de Arquivo do Print Spooler" LPE AFR (relacionada à CVE-2020-1048)
Detalhes
- Autor: Andrei Costin ([email protected])
- Data do PoC: 2010-xx-xx
- Data de lançamento: 2020-05-14 (lembrado/inspirado pela CVE-2020-1048 - sim, eu cheguei tarde demais para a festa :D )
- TL;DR
- Se você quer 0days, explore o subsistema de Impressão e Fax dos SOs :) - muito código legado por razões históricas - há vulnerabilidades para todos =)
Notas
-
Nota1: Não verificado - não tenho 100% de certeza de que é o mesmo bug que aciona a CVE-2009-0229
-
Nota2: Não verificado - pode funcionar em sistemas mais novos como Windows Server 2012 e Windows Server 2016
-
Nota3: Todas as versões do Windows vêm com 4 arquivos "Separator Page" padrão
- pcl.sep
- pscript.sep
- sysprint.sep
- sysprtj.sep
-
Nota4: Esse truque é mais antigo que o Windows 95 =), tenho certeza de que era usado pelos profissionais para "recuperação furtiva de informações" ;)
Pré-requisitos
- atacante local (sem privilégios de administrador) tem "direitos de gerenciamento de impressoras"
- opção1: pode adicionar uma nova impressora
- opção2: pode modificar as configurações de uma impressora existente "de todo o sistema" (muitas vezes é o caso)
- "arquivo arbitrário" para exfiltração não tem permissão explícita de "Negar Leitura"
- muito improvável, pois isso tornaria o acesso a arquivos pela vítima realmente impraticável/inutilizável
Execução do PoC
-
O atacante local configura qualquer impressora à qual ele/ela tenha acesso para que ela use o arquivo "Separator Page" fornecido pelo atacante (attack.sep); agora o atacante tem uma "impressora armada"
- Veja "Referências do "Separator Page" do Windows" abaixo para detalhes
-
O atacante local cria o arquivo "Separator Page" (attack.sep) para usar o operador "@F"/"$F", da seguinte forma, onde se assume que o arquivo a ser exfiltrado é "C:\secret.txt" (observe o \ e a concatenação direta com o operador @F)
@
@FC:\\secret.txt
-
O atacante local precisa imprimir algo usando a impressora "armada" acima
- Por exemplo, o atacante local abre o Bloco de Notas e imprime o documento vazio através da impressora configurada acima com o arquivo "Separator Page"
- O atacante local usa a opção "imprimir em arquivo" (por exemplo, c:\temp\exfiltrated.out) ao imprimir - há opções "imprimir em arquivo" .ps na maioria das versões do Windows + .xps nas mais novas (http://ps-2.kev009.com/pcpartnerinfo/ctstips/e94a.htm)
- Isso é feito para que o conteúdo do arquivo exfiltrado não vá para a impressora (embora isso também seja uma opção), mas fique imediatamente disponível para o atacante
-
Melhoria do ataque: um único arquivo "Separator Page" pode ter uma lista de força bruta dos caminhos/nomes de arquivo mais comuns
-
Há também o operador @L :)
Curiosidades
-
Encontrado em 2010, quando eu estava fazendo pesquisas/apresentações "Hacking Printers for Fun and Profit"
-
Tenho quase certeza de que os subsistemas de Impressão e Fax estão cheios de vulnerabilidades desde o Windows 3.1 (por razões históricas)
Referências de Segurança
Referências do "Separator Page" do Windows
- É assim que as caixas de diálogo "Separator Page" aparecem em várias versões do Windows
- É assim que "Imprimir em arquivo" aparece em algumas versões do Windows
- "Separator Page" em "Hands-On Microsoft Windows Server 2016 By Michael Palmer"
- "Criar páginas separadoras personalizadas no Windows Server 2012/2016"
- "Usar uma página separadora ao imprimir no Windows"
- "Como configuro uma página separadora de impressão?"