Server Side XSS (Dynamic PDF)
XSS do Lado do Servidor (PDF Dinâmico)
Se uma página da web estiver criando um PDF usando entrada controlada pelo usuário, você pode tentar enganar o bot que está criando o PDF para executar código JS arbitrário. Portanto, se o bot criador de PDF encontrar algum tipo de tags HTML, ele vai interpretá-las, e você pode abusar desse comportamento para causar um XSS do Servidor.
Por favor, observe que as tags <script></script>
nem sempre funcionam, então você precisará de um método diferente para executar JS (por exemplo, abusando de <img
).
Além disso, observe que em uma exploração regular você será capaz de ver/fazer o download do PDF criado, então você poderá ver tudo o que você escreve via JS (usando document.write()
por exemplo). Mas, se você não puder ver o PDF criado, você provavelmente precisará extrair as informações fazendo uma solicitação web para você (Cego).
Geração de PDF Popular
wkhtmltopdf é conhecido por sua capacidade de converter HTML e CSS em documentos PDF, utilizando o motor de renderização WebKit. Esta ferramenta está disponível como uma utilidade de linha de comando de código aberto, tornando-a acessível para uma ampla gama de aplicações.
TCPDF oferece uma solução robusta dentro do ecossistema PHP para geração de PDF. É capaz de lidar com imagens, gráficos e criptografia, mostrando sua versatilidade para criar documentos complexos.
Para aqueles que trabalham em um ambiente Node.js, PDFKit apresenta uma opção viável. Ele permite a geração de documentos PDF diretamente a partir de HTML e CSS, fornecendo uma ponte entre conteúdo da web e formatos imprimíveis.
Desenvolvedores Java podem preferir iText, uma biblioteca que não apenas facilita a criação de PDF, mas também suporta recursos avançados como assinaturas digitais e preenchimento de formulários. Seu conjunto abrangente de recursos o torna adequado para gerar documentos seguros e interativos.
FPDF é outra biblioteca PHP, distinguida por sua simplicidade e facilidade de uso. É projetado para desenvolvedores que procuram uma abordagem direta para a geração de PDF, sem a necessidade de recursos extensivos.
Payloads
Descoberta
SVG
Qualquer um dos payloads anteriores ou seguintes podem ser usados dentro deste payload SVG. Um iframe acessando o subdomínio Burpcollab e outro acessando o endpoint de metadados são colocados como exemplos.
Você pode encontrar muitos outros payloads SVG em https://github.com/allanlw/svg-cheatsheet
Divulgação de caminho
Carregar um script externo
A melhor maneira de explorar essa vulnerabilidade é abusar dela para fazer o bot carregar um script que você controla localmente. Em seguida, você poderá alterar o payload localmente e fazer com que o bot o carregue com o mesmo código todas as vezes.
Ler arquivo local / SSRF
Altere file:///etc/passwd
para http://169.254.169.254/latest/user-data
por exemplo para tentar acessar uma página da web externa (SSRF).
Se o SSRF for permitido, mas você não consegue alcançar um domínio ou IP interessante, verifique esta página em busca de possíveis bypasses.
Atraso do bot
Verificação de Porta
Essa vulnerabilidade pode ser facilmente transformada em um SSRF (pois você pode fazer o script carregar recursos externos). Então tente explorá-la (ler alguns metadados?).
Anexos: PD4ML
Existem alguns motores HTML 2 PDF que permitem especificar anexos para o PDF, como o PD4ML. Você pode abusar dessa funcionalidade para anexar qualquer arquivo local ao PDF. Para abrir o anexo, abri o arquivo com o Firefox e cliquei duas vezes no símbolo do clipe de papel para armazenar o anexo como um novo arquivo. Capturando a resposta em PDF com o burp também deve mostrar o anexo em texto claro dentro do PDF.
Referências
Last updated