


Eine eingehende Analyse der Schwachstellen bei der Ausführung von ImageMagick-Befehlen
00 Vorwort
Was ist ImageMagick?
ImageMagick ist eine leistungsstarke Open-Source-Grafikverarbeitungssoftware, mit der mehr als 90 Arten von Bilddateien gelesen, geschrieben und verarbeitet werden können, darunter die gängigen Formate JPEG, GIF, PNG, PDF und PhotoCD. Verwenden Sie es, um Bilder mit verschiedenen Spezialeffekten wie Ausschneiden, Drehen und Kombinieren zu bearbeiten.
Aufgrund seiner leistungsstarken Funktionen, der guten Leistung und der erweiterten Unterstützung für viele Sprachen wird es häufig in der Programmentwicklung eingesetzt. Viele Website-Entwickler verwenden gerne ImageMagick-Erweiterungen, um Bildverarbeitungsarbeiten im Web durchzuführen, z. B. die Erstellung von Benutzer-Avataren, die Bildbearbeitung usw.
01 Schwachstellenbeschreibung
ImageMagick ist eine Open-Source-Bildverarbeitungsbibliothek, die mehrere Sprachen wie PHP, Ruby, NodeJS und Python unterstützt und weit verbreitet ist. Viele Bildverarbeitungs-Plug-ins, darunter PHP imagick, Ruby rmagick und paperclip sowie NodeJS imagemagick, sind alle darauf angewiesen, um ausgeführt zu werden. Wenn ein Angreifer ein Image erstellt, das bösartigen Code enthält, verarbeitet die ImageMagick-Bibliothek HTTPPS-Dateien nicht ordnungsgemäß und führt keine Filterung durch. Sie kann Remote-Befehle ausführen und möglicherweise den Server steuern.
02 Impact Level
Angriffskosten: niedrig
Gefahrenstufe: Hoch
Betroffener Bereich: Alle Versionen vor ImageMagick 6.9.3-9
03 Schwachstellenanalyse
Die Sicherheitslücke bei der Befehlsausführung tritt bei der Verarbeitung von https-Dateien durch ImageMagick auf.
Der Grund, warum ImageMagick so viele Dateiformate unterstützt, liegt darin, dass es über viele integrierte Bildverarbeitungsbibliotheken verfügt. ImageMagick hat diese Bildverarbeitungsbibliotheken „Delegate“ (Delegate) genannt und jeder Delegate entspricht einer Datei in ein Format und rufen Sie dann die externe Bibliothek zur Verarbeitung über den system()-Befehl des Systems auf. Der Prozess des Aufrufs der externen Bibliothek wird mit dem Systembefehl des Systems ausgeführt, was dazu führt, dass der Code den Befehl ausführt.
Standardkonfigurationsdatei für ImageMagick-Delegaten: /etc/ImageMagick/delegates.xml
Spezifischen Code finden Sie unter: Github-ImageMagick
Wir suchen die Zeile für die https-Delegierung:
" <delegate decode=\"https\" command=\""wget" -q -O "%o" "https:%M"\"/>"
Wie Sie sehen können, definiert der Befehl den Befehl, den er bei der Verarbeitung von https-Dateien in die Funktion system() einbringt: „wget“ -q -O „%o“ „https:%M“.
wget ist ein Befehl zum Herunterladen von Dateien aus dem Netzwerk. %M ist ein Platzhalter. Er muss in der Konfigurationsdatei wie folgt definiert werden:
%i input image filename %o output image filename %u unique temporary filename %Z unique temporary filename %# input image signature %b image file size %c input image comment %g image geometry %h image rows (height) %k input image number colors %l image label %m input image format %p page number %q input image depth %s scene number %w image columns (width) %x input image x resolution %y input image y resolution
Sie können sehen, dass %m als Eingabebildformat definiert ist, was der von uns eingegebenen URL-Adresse entspricht. Da wir jedoch nur einfaches String-Splicing ohne Filterung durchgeführt und es direkt in den Befehlsbefehl gespleißt haben, können wir die Anführungszeichen schließen und sie über „|“, „`“, „&“ usw. in andere Befehle einfügen. Das heißt, es wird eine Befehlsinjektion gebildet.
Zum Beispiel übergeben wir den folgenden Code:
https://test.com"|ls “-al
Der eigentliche Befehl, der von der Systemfunktion ausgeführt wird, ist:
“wget” -q -O “%o” “ https://test.com"|ls “-al”
Auf diese Weise wird der Befehl ls -al erfolgreich ausgeführt.
04 Ausnutzung von Sicherheitslücken
Der POC dieser Schwachstelle wurde von einem Ausländer wie folgt angegeben:
push graphic-context viewbox 0 0 640 480 fill 'url(https://"|id; ")' pop graphic-context
Push und Pop werden für Stapeloperationen verwendet, einer wird in den Stapel geschoben und der andere wird aus dem Stapel herausgeholt;
Viewbox stellt die Größe des sichtbaren Bereichs von SVG dar, oder man kann es sich als Bühnengröße oder Leinwandgröße vorstellen. Ein einfaches Verständnis besteht darin, einen Teil des Bildschirms basierend auf den folgenden Parametern auszuwählen:
fill url() füllt das Bild in das aktuelle Element;
Darin verwenden wir fill url(), um den anfälligen https-Delegaten aufzurufen. Wenn ImageMagick diese Datei verarbeitet, wird die Schwachstelle ausgelöst.
Anhang: ImageMagick unterstützt standardmäßig ein Bildformat namens mvg, und mvg ähnelt dem SVG-Format, in dem der Inhalt des Vektorbilds in Textform geschrieben wird, sodass andere Delegaten in ImageMagick geladen werden können (z. B der anfällige https-Delegierte). Und während des Grafikverarbeitungsprozesses verarbeitet ImageMagick sie automatisch entsprechend ihrem Inhalt, was bedeutet, dass wir die Datei willkürlich als PNG, JPG und andere für den Website-Upload zulässige Formate definieren können, was die Ausnutzbarkeit der Schwachstelle erheblich erhöht.
Nutzungsprozess:
Erstellen Sie eine Exploit.png-Datei mit folgendem Inhalt:
push graphic-context viewbox 0 0 640 480 fill 'url(https://test.com/image.jpg"|ls "-al)' pop graphic-context
Befehl ausführen: Convert Exploit.png 1.png (im Folgenden sind die Parameter von Convert)
05 Fehlerbehebungen
Upgrade auf die neueste Version
Konfigurieren Sie /etc/ImageMagick/policy.xml, um https- und mvg-Delegates zu deaktivieren, oder löschen Sie den entsprechenden Delegaten direkt in der Konfigurationsdatei
<policymap> <policy domain="coder" rights="none" pattern="EPHEMERAL" /> <policy domain="coder" rights="none" pattern="URL" /> <policy domain="coder" rights="none" pattern="HTTPS" /> <policy domain="coder" rights="none" pattern="MVG" /> <policy domain="coder" rights="none" pattern="MSL" /> </policymap>
Das Obige ist das vom Herausgeber eingeführte Wissen über die Schwachstellen bei der Befehlsausführung von ImageMagick. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der Script House-Website bedanken!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit dem Befehl sudo können Benutzer Befehle im Modus mit erhöhten Rechten ausführen, ohne in den Superuser-Modus wechseln zu müssen. In diesem Artikel erfahren Sie, wie Sie Funktionen simulieren, die Sudo-Befehlen in Windows-Systemen ähneln. Was ist das Shudao-Kommando? Sudo (kurz für „Superuser Do“) ist ein Befehlszeilentool, das es Benutzern von Unix-basierten Betriebssystemen wie Linux und MacOS ermöglicht, Befehle mit erhöhten Rechten auszuführen, die normalerweise Administratoren vorbehalten sind. Ausführen von SUDO-Befehlen in Windows 11/10 Mit der Veröffentlichung der neuesten Vorschauversion von Windows 11 Insider können Windows-Benutzer diese Funktion nun nutzen. Mit dieser neuen Funktion können Benutzer Folgendes tun

Dieser Artikel führt Leser in die Verwendung der Eingabeaufforderung (CommandPrompt) ein, um die physische Adresse (MAC-Adresse) des Netzwerkadapters im Win11-System zu finden. Eine MAC-Adresse ist eine eindeutige Kennung für eine Netzwerkschnittstellenkarte (NIC), die eine wichtige Rolle bei der Netzwerkkommunikation spielt. Über die Eingabeaufforderung können Benutzer problemlos die MAC-Adressinformationen aller Netzwerkadapter auf dem aktuellen Computer abrufen, was für die Fehlerbehebung im Netzwerk, die Konfiguration von Netzwerkeinstellungen und andere Aufgaben sehr hilfreich ist. Methode 1: „Eingabeaufforderung“ verwenden 1. Drücken Sie die Tastenkombination [Win+X] oder klicken Sie mit der rechten Maustaste auf das [Windows-Logo] in der Taskleiste und wählen Sie im sich öffnenden Menüelement [Ausführen] aus . Führen Sie das Fenster aus, geben Sie den Befehl [cmd] ein und dann

Im Win11-System können Sie den erweiterten Hyper-V-Sitzungsmodus über Befehle aktivieren oder deaktivieren. In diesem Artikel wird die Verwendung von Befehlen zur Bedienung vorgestellt und Benutzern dabei geholfen, Hyper-V-Funktionen im System besser zu verwalten und zu steuern. Hyper-V ist eine von Microsoft bereitgestellte Virtualisierungstechnologie, die in Windows Server und Windows 10 und 11 (außer Home Edition) integriert ist und es Benutzern ermöglicht, virtuelle Betriebssysteme in Windows-Systemen auszuführen. Obwohl virtuelle Maschinen vom Host-Betriebssystem isoliert sind, können sie über Einstellungen dennoch die Ressourcen des Hosts wie Soundkarten und Speichergeräte nutzen. Eine der wichtigsten Einstellungen ist die Aktivierung des erweiterten Sitzungsmodus. Der erweiterte Sitzungsmodus ist Hyper

1. Übersicht Der Befehl sar zeigt Systemnutzungsberichte anhand von Daten an, die aus Systemaktivitäten gesammelt wurden. Diese Berichte bestehen aus verschiedenen Abschnitten, die jeweils die Art der Daten und den Zeitpunkt der Datenerfassung enthalten. Der Standardmodus des Befehls sar zeigt die CPU-Auslastung in verschiedenen Zeitschritten für verschiedene Ressourcen an, die auf die CPU zugreifen (z. B. Benutzer, Systeme, E/A-Planer usw.). Darüber hinaus wird der Prozentsatz der inaktiven CPU für einen bestimmten Zeitraum angezeigt. Der Durchschnittswert für jeden Datenpunkt wird unten im Bericht aufgeführt. Standardmäßig erfasst sar alle 10 Minuten Daten. Sie können diese Berichte jedoch mithilfe verschiedener Optionen filtern und anpassen. Ähnlich wie der Befehl uptime kann Ihnen auch der Befehl sar dabei helfen, die CPU-Auslastung zu überwachen. Durch sar können Sie das Auftreten einer übermäßigen Belastung verstehen

Linux ist ein leistungsstarkes Betriebssystem, das viele effiziente Kommunikationsmechanismen zwischen Prozessen bereitstellt, wie z. B. Pipes, Signale, Nachrichtenwarteschlangen, gemeinsam genutzten Speicher usw. Aber gibt es eine einfachere, flexiblere und effizientere Art der Kommunikation? Die Antwort ist ja, das ist eventfd. eventfd ist ein Systemaufruf, der in Linux Version 2.6 eingeführt wurde. Er kann zur Implementierung von Ereignisbenachrichtigungen verwendet werden, d. h. zur Übermittlung von Ereignissen über einen Dateideskriptor. eventfd enthält einen vom Kernel verwalteten 64-Bit-Ganzzahlzähler ohne Vorzeichen. Der Prozess kann den Zählerwert lesen/ändern, indem er diesen Dateideskriptor liest/schreibt, um eine Kommunikation zwischen Prozessen zu erreichen. Was sind die Vorteile von eventfd? Es verfügt über die folgenden Funktionen

Was ist der richtige Weg, einen Dienst unter Linux neu zu starten? Wenn wir ein Linux-System verwenden, stoßen wir häufig auf Situationen, in denen wir einen bestimmten Dienst neu starten müssen, aber manchmal können beim Neustart des Dienstes Probleme auftreten, z. B. wenn der Dienst nicht tatsächlich gestoppt oder gestartet wird. Daher ist es sehr wichtig, die richtige Methode zum Neustarten von Diensten zu beherrschen. Unter Linux können Sie normalerweise den Befehl systemctl verwenden, um Systemdienste zu verwalten. Der Befehl systemctl ist Teil des systemd-Systemmanagers

Widgets sind eine neue Funktion des Win11-Systems. Es ist jedoch unvermeidlich, dass einige Benutzer Widgets nicht häufig verwenden, weil sie Speicherplatz beanspruchen. Der untenstehende Editor zeigt Ihnen die Bedienung und Sie können es ausprobieren. Was sind Widgets? Widgets sind kleine Karten, die dynamische Inhalte Ihrer bevorzugten Apps und Dienste auf Ihrem Windows-Desktop anzeigen. Sie werden auf dem Widget-Board angezeigt, wo Sie Widgets entdecken, anheften, lösen, anordnen, in der Größe ändern und an Ihre Interessen anpassen können. Das Widget-Board ist für die Anzeige relevanter Widgets und personalisierter Inhalte basierend auf der Nutzung optimiert. Öffnen Sie das Widget-Panel in der linken Ecke der Taskleiste, wo Sie das Live-Wetter sehen können

LSOF (ListOpenFiles) ist ein Befehlszeilentool, das hauptsächlich zur Überwachung von Systemressourcen ähnlich wie bei Linux/Unix-Betriebssystemen verwendet wird. Über den LSOF-Befehl können Benutzer detaillierte Informationen über die aktiven Dateien im System und die Prozesse erhalten, die auf diese Dateien zugreifen. LSOF kann Benutzern helfen, die Prozesse zu identifizieren, die derzeit Dateiressourcen belegen, wodurch Systemressourcen besser verwaltet und mögliche Probleme behoben werden können. LSOF ist leistungsstark und flexibel und kann Systemadministratoren dabei helfen, dateibezogene Probleme wie Dateilecks, nicht geschlossene Dateideskriptoren usw. schnell zu lokalisieren. Über den LSOF-Befehl Das LSOF-Befehlszeilentool ermöglicht Systemadministratoren und Entwicklern Folgendes: Im Falle eines Portkonflikts festzustellen, welche Prozesse derzeit eine bestimmte Datei oder einen bestimmten Port verwenden
