Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
libreofficeExploit1 — CVE-2018-16858 Exploit-Implementierung | Kitploit
Tools/GitHubGitHub/4nimanegra/libreofficeexploit1
Exploit-FrameworksExploitationPenetrationstestsCommand and ControlLernen & BildungPayload-Entwicklung
GitHub4nimanegra/libreofficeexploit1

libreofficeExploit1

CVE-2018-16858 Exploit-Implementierung

Repository anzeigen
3110vor 7 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Grundlagenhandbuch zur Erstellung eines Exploits

In diesem Beitrag wird gezeigt, wie man eine einfache Schwachstelle eines Programms ausnutzt, um eine Hintertür in dem System zu öffnen, das dieses Programm verwendet.

Der betreffende Fehler wird durch CVE-2018-16858 definiert und gehört zur Bürosoftware-Suite LibreOffice. Dieser Fehler ermöglicht es, in einer speziell erstellten Datei einen Verzeichnis-Pfadangriff durchzuführen, der die Ausführung von Python-Code erlaubt. Diese Ausführung wird durch die Aktion des Benutzers auf dem Dokument ausgelöst und erfolgt, ohne dass der Benutzer vor der Ausführung von Makros gewarnt wird.

Das vorliegende Dokument ist in fünf Teile gegliedert. Im ersten Teil wird der Fehler selbst erklärt, wie man ein OpenDocument entpackt, wie man seine Struktur ändert, um das gewünschte lokale Skript auszuführen, und wie man das Dokument wieder zusammensetzt, um es zu testen und auszuführen.

Im zweiten Teil werden wir sehen, wie man die lokale Ausführung nutzt, um beliebige Befehle auf dem System auszuführen, auf dem das Dokument geöffnet wird, und wir werden eine Hintertür erstellen, die die Ausführung von Remotebefehlen ermöglicht.

Im dritten Teil werden wir den Prozess automatisieren, um Dokumente zu erstellen, die Hintertüren mit direkter oder umgekehrter Kommunikation erzeugen, wobei die IP-Adresse und der Port festgelegt werden, mit denen die Verbindung hergestellt werden soll.

Der vierte Teil befasst sich mit der Integration des Fehlers in das Metasploit-System, sodass mit msfconsole Dokumente erstellt werden können, die mit der Exploit-Methode von Metasploit kompatibel sind. Dadurch kann man als auszuführenden Code jedes in der Metasploit-Suite definierte Payload wählen.

Der fünfte und letzte Teil zeigt, wie man in ein Antiviren-System einen Erkennungsprozess integriert, der infizierte LibreOffice-Dateien identifizieren kann, die mit dem obigen Verfahren erstellt wurden. Dabei wird das Erkennungsformat des Antivirenprogramms ClamAV verwendet, um den Erkennungsprozess von Antivirenprogrammen besser zu verstehen und so unseren Schutz vor solchen Bedrohungen zu erleichtern.

Der gesamte Prozess wird für Linux-Systeme auf Debian-Basis durchgeführt, aber das hier Beschriebene kann auf andere Systeme übertragen werden, da es ausführlich beschrieben wird. Sowohl der Fehler als auch die Proof-of-Concept-Dateien des ursprünglichen CVE wurden für die Windows-Version von LibreOffice erstellt, daher kann man bei Bedarf auf diese Quelle zurückgreifen, um das in diesem Dokument Beschriebene analog für Windows-Versionen zu verwenden.

Beschreibung des Fehlers

LibreOffice (und aus genetischen Gründen auch Apache OpenOffice) hat in Versionen vor der neuesten Version (6.1.5) einen Fehler, der die Ausführung von Python-Code an beliebiger Stelle auf dem Computer ermöglicht, ohne dass der Benutzer vor der Ausführung eines Makros gewarnt wird.

Um den Fehler zu sehen, können wir ein neues Dokument im Texteditor erstellen, etwas schreiben, es auswählen und einen Hyperlink erzeugen. Um einen Hyperlink im Text zu erstellen, muss man das Menü Einfügen und darin die Option Hyperlink wählen (auch möglich durch Auswahl des Textes und anschließende Tastenkombination Strg+K).

Es erscheint folgender Dialog:

Um einen Hyperlink zu definieren, müssen wir eine URL einfügen und auf Anwenden klicken. Neben der URL-Option im unteren Teil des Dialogfelds, wo man Weitere Einstellungen lesen kann, gibt es einen Button mit dem Symbol Abspielen, mit dem wir Ereignisse an bestimmte Aktionen binden können. Hier definieren wir, dass wir einen Python-Code als Aktion ausführen möchten.

Beim Klicken auf diesen Button öffnet sich ein neuer Dialog:

Dort können wir zwischen drei grundlegenden Ereignissen und dem gewünschten Skript wählen. Als Ereignis wählen wir Mouse Over Object und als Skript innerhalb der Skriptfamilie LibreOffice-Makros wählen wir Python-Beispiele. Innerhalb dieser Option gibt es nur ein voreingestelltes Skript namens TableSample, das wir auswählen.

Wenn wir dann mit der Maus über den Text fahren, den wir in einen Hyperlink umgewandelt haben, sehen wir, dass sich ein Fenster mit einem Dokument öffnet, das eine Tabelle enthält. Das bedeutet, dass wir das Ereignis des Mauszeigerüberfahrens mit dem Python-Skript verknüpft haben. Unser Ziel ist es, diese Aktion durch eine andere zu ersetzen, die wir wünschen.

Dazu speichern wir das erstellte Dokument und verlassen LibreOffice, um in der Konsole eine Reihe von Befehlen auszuführen.

OpenDocument verstehen

Das ODT-Dokumentformat ist nichts anderes als ein Zip-Archiv, das eine Reihe von Dateien enthält (das DOCX-Format von Microsoft Office ist sehr ähnlich). Daher entpacken wir die Datei zunächst mit einem Zip-Entpacker.

In unserem Fall verwenden wir das Kommandozeilen-Tool unzip, also führen wir einfach den folgenden Befehl aus:

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

Damit sehen wir die Dateien, die tatsächlich in einer OpenDocument-Datei enthalten sind. Die für uns relevantesten sind die Dateien mimetypes, content.xml und styles.xml.

Die Datei mimetype muss als erste in der Liste der Zip-Dateien erscheinen. Wenn wir die Dateien wieder verpacken, müssen wir daher mit unserem Packer erzwingen, dass dies geschieht, sonst wird die Datei nicht als OpenDocument erkannt.

Die Datei content.xml enthält den Text des Dokuments, den wir geschrieben haben, wobei der Text mit bestimmten Tags vermischt ist, die das Format des Textes angeben.

Zum Beispiel in der folgenden Zeile:

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

Hier sieht man ein Beispiel für einen Textabsatz, der mit einem bestimmten Stil geschrieben wurde, der durch das Attribut text:style-name definiert wird. Der Textabsatz befindet sich zwischen dem öffnenden Tag text:p und dem schließenden Tag </text:p>.

Das mit dem Hyperlink verknüpfte Skript kann ebenfalls recht einfach eingesehen werden. Wenn wir im Text der content.xml nach dem Wort python oder dem Namen des geladenen Python-Skripts suchen, in unserem Fall TableSample.py, können wir die Zeile leicht finden, in der wir den Inhalt ändern müssen:

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

In dieser Zeile befindet sich der Pfad des Python-Skripts, das geladen wird, wenn wir die Maus über den Hyperlink bewegen, genannt TableSample.py, und die Funktion, die aus dem Python-Code ausgeführt wird, in diesem Fall createTable.

Das inhärente Problem von LibreOffice ist, dass beim Lesen der Dokumente der Wert des zu ladenden Python-Codes nicht korrekt bereinigt wird. Das Programm bereinigt die Zeichen ../ aus dem Dateipfad nicht, sodass auf jede Datei im System zugegriffen werden kann, in dem das Textdokument geöffnet wird. Wenn diese Datei zudem eine Python-Code-Datei ist, können wir jede darin definierte Funktion ausführen.

Erster Test einer einfachen Befehlsausführung

Als ersten Proof of Concept lassen wir beim Überfahren des Hyperlinks den Rechner ausführen, in unserem Fall das Programm galculator, das den Taschenrechner öffnet. Wir müssen ein Python-Programm erstellen, das einen Befehl innerhalb einer Funktion ausführt, so wie LibreOffice es erwartet. Dazu erstellen wir den folgenden Code im Pfad /tmp/prueba.py:

import os;

def ejecuta():
	os.system("galculator");
Tool herunterladen