Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
libreofficeExploit1 — Implémentation de l'exploit CVE-2018-16858 | Kitploit
Outils/GitHubGitHub/4nimanegra/libreofficeexploit1
Frameworks d'ExploitationExploitationTests d'IntrusionCommandement et ContrôleApprentissage et ÉducationDéveloppement de Charges Utiles
GitHub4nimanegra/libreofficeexploit1

libreofficeExploit1

Implémentation de l'exploit CVE-2018-16858

Voir le dépôt
3110il y a 7 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Manuel de base de la génération d'un exploit

Cette entrée montre comment utiliser une faille simple d'un programme pour ouvrir une porte dérobée dans le système utilisant ce programme.

La faille en question est définie dans le CVE-2018-16858 appartenant à la suite bureautique LibreOffice. Cette faille permet, dans un fichier spécialement conçu, d'effectuer une escalade de répertoires, permettant l'exécution de code Python. Cette exécution est liée ou se déclenche lors de l'action de l'utilisateur sur le document, et s'effectue sans qu'aucun avertissement ne soit donné à l'utilisateur pour l'exécution de macros.

Le présent document se divise en cinq parties. Dans la première, nous expliquerons la faille elle-même, comment décompresser un OpenDocument, comment modifier sa structure pour exécuter le script local souhaité, et comment recomposer le document pour son exécution et test.

Dans la deuxième partie, nous verrons comment utiliser l'exécution locale pour lancer n'importe quelle commande sur le système où le document est ouvert, et nous générerons une porte dérobée permettant l'exécution de commandes à distance.

Dans la troisième partie, nous automatiserons le processus pour générer des documents créant des portes dérobées avec communication directe ou inverse, en déterminant l'adresse IP et le port auxquels se connecter.

La quatrième partie traitera de l'intégration de la faille dans le système metasploit afin que, via msfconsole, des documents compatibles avec la méthode d'exploitation de metasploit puissent être générés. Ainsi, on pourra choisir comme code à exécuter n'importe quelle payload définie dans la suite metasploit.

La cinquième et dernière partie montrera comment intégrer dans un système antivirus le processus de détection permettant d'identifier les fichiers de type LibreOffice infectés via la procédure précédente. Le format de détection de l'antivirus ClamAV sera utilisé, permettant de mieux comprendre le processus de détection des antivirus et ainsi faciliter notre protection contre les menaces de ce type.

L'ensemble du processus sera réalisé pour des systèmes Linux basés sur Debian, mais ce qui est expliqué ici peut être extrapolé à d'autres systèmes, car il est décrit en détail. Tant la faille que les preuves de concept du CVE original ont été réalisées pour la version de LibreOffice pour Windows, on peut donc toujours se référer à cette source pour utiliser ce qui est décrit dans ce document de manière analogue pour les versions Windows.

Description de la faille

LibreOffice (et, pour des raisons génétiques, Apache OpenOffice) a une faille dans les versions antérieures à sa dernière version (6.1.5) qui permet l'exécution de code Python situé n'importe où sur l'ordinateur sans que l'utilisateur soit averti de l'exécution d'une macro.

Pour voir la faille en question, nous pouvons générer un nouveau document dans l'éditeur de texte dans lequel nous écrirons quelque chose, nous le sélectionnerons et générerons un lien hypertexte. Pour créer un lien hypertexte dans le texte, il faut sélectionner le menu Insert et, à l'intérieur, l'option Hyperlink (on peut aussi y parvenir en sélectionnant le texte puis en utilisant la combinaison de touches Ctrl+K).

La boîte de dialogue suivante apparaîtra :

Pour définir un lien hypertexte, nous devrons insérer une URL et cliquer sur Apply. En dehors de l'option URL dans la partie inférieure de la boîte de dialogue, où on peut lire Further Settings, nous disposerons d'un bouton avec l'icône Play qui nous permettra en outre de lier des événements à certaines actions. C'est là que nous définirons que nous souhaitons exécuter un code Python comme action.

En cliquant sur ce bouton, une nouvelle boîte de dialogue s'ouvrira :

Dans celle-ci, nous pourrons sélectionner parmi trois événements de base et le script à utiliser. Comme événement, nous sélectionnerons Mouse Over Object et comme script parmi les scripts de la famille LibreOffice Macros, nous sélectionnerons Python Samples. Dans cette option, il n'existe qu'un seul script prédéfini appelé TableSample, que nous sélectionnerons.

Une fois cela fait, si nous passons la souris sur le texte que nous avons transformé en lien hypertexte, nous verrons qu'une fenêtre s'ouvre avec un document contenant un tableau. Cela signifie que nous avons associé l'événement de passage de la souris sur le lien hypertexte au script Python. Ce que nous voulons faire, c'est remplacer cette action par une autre de notre choix.

Pour cela, nous enregistrerons le document que nous avons créé et quitterons LibreOffice pour exécuter une série de commandes dans la console.

Comprendre les OpenDocument

Le format de document ODT n'est rien d'autre qu'un zip contenant une série de fichiers (le format DOCX de Microsoft Office est très similaire). Par conséquent, la première chose à faire est de décompresser le fichier avec un décompresseur de fichiers zip.

Dans notre cas, nous utiliserons l'outil en ligne de commande appelé unzip, donc nous exécuterons simplement la commande suivante :

user@host:~/Documents/prueba$ unzip ~/Documents/blog/exploitlibreoffice/doc/CV.odt

Avec cela, nous verrons les fichiers réellement contenus dans un fichier de type OpenDocument. Les plus pertinents pour nous seront le fichier mimetypes, le fichier content.xml et le fichier styles.xml.

Le fichier mimetype doit être le premier à apparaître dans la liste des fichiers du zip, donc lorsque nous rempaqueterons les fichiers, nous devrons forcer avec notre empaqueteur de fichiers qu'il en soit ainsi, sinon le fichier ne sera pas interprété comme un OpenDocument.

Le fichier content.xml contient le texte du document que nous avons écrit, dans lequel nous avons du texte mélangé à certaines balises qui indiquent dans quel format le texte doit être affiché.

Par exemple, dans la ligne suivante :

<text:p text:style-name="_5f_ECV_5f_SectionDetails">Indicar lista de documentos adjuntos a su CV. Ejemplos:</text:p>

On peut voir un exemple d'un paragraphe de texte écrit avec un style spécifique défini par l'attribut text:style-name. Le paragraphe de texte se trouve entre la balise d'ouverture text:p et la balise de fermeture </text:p>.

Le script associé au lien hypertexte que nous avons fait peut également être vu assez simplement. Si nous cherchons dans le texte de content.xml le mot python ou le nom du script python que nous avons chargé, dans notre cas TableSample.py, on peut facilement détecter la ligne où nous devons modifier le contenu :

<script:event-listener script:language="ooo:script" script:event-name="dom:mouseover" xlink:href="vnd.sun.star.script:pythonSamples|TableSample.py$createTable?language=Python&amp;location=share" xlink:type="simple"/>

Dans cette ligne se trouve le chemin du script python qui sera chargé lorsque nous placerons la souris sur le lien hypertexte appelé TableSample.py et la fonction qui sera exécutée dans le code python, dans ce cas createTable.

Le problème inhérent à LibreOffice est que lorsqu'il lit les documents, la valeur du code python à charger n'est pas correctement nettoyée. Le programme ne nettoie pas les caractères ../ du chemin du fichier, on peut donc accéder à n'importe quel fichier du système sur lequel le document texte est ouvert. De plus, si ce fichier auquel on accède est un fichier avec du code python, nous pourrons exécuter n'importe quelle fonction définie dans ce fichier.

Premier test d'exécution de commande simple

Télécharger l’outil