<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
> **Microsoft SQL Server** ist ein von Microsoft entwickeltes **relationales Datenbankverwaltungssystem**. Als Datenbankserver ist es ein Softwareprodukt mit der Hauptfunktion, Daten zu speichern und abzurufen, wie von anderen Softwareanwendungen angefordert, die entweder auf demselben Computer oder auf einem anderen Computer in einem Netzwerk (einschließlich des Internets) ausgeführt werden können.\\
* **master-Datenbank**: Diese Datenbank ist entscheidend, da sie alle Details auf Systemebene für eine SQL Server-Instanz erfasst.
* **msdb-Datenbank**: Der SQL Server Agent nutzt diese Datenbank, um die Zeitplanung für Benachrichtigungen und Aufträge zu verwalten.
* **model-Datenbank**: Dient als Blaupause für jede neue Datenbank in der SQL Server-Instanz, in der alle Änderungen wie Größe, Kollation, Wiederherstellungsmodell und mehr in neu erstellten Datenbanken gespiegelt werden.
* **Resource-Datenbank**: Eine schreibgeschützte Datenbank, die Systemobjekte enthält, die mit SQL Server geliefert werden. Diese Objekte werden zwar physisch in der Resource-Datenbank gespeichert, sind jedoch logisch im sys-Schema jeder Datenbank dargestellt.
Wenn Sie **keine Anmeldeinformationen** haben, können Sie versuchen, sie zu erraten. Sie können nmap oder Metasploit verwenden. Seien Sie vorsichtig, Sie können **Konten blockieren**, wenn Sie sich mehrmals mit einem vorhandenen Benutzernamen falsch anmelden.
SELECT * FROM <databaseName>.INFORMATION_SCHEMA.TABLES;
#List Linked Servers
EXEC sp_linkedservers
SELECT * FROM sys.servers;
#List users
select sp.name as login, sp.type_desc as login_type, sl.password_hash, sp.create_date, sp.modify_date, case when sp.is_disabled = 1 then 'Disabled' else 'Enabled' end as status from sys.server_principals sp left join sys.sql_logins sl on sp.principal_id = sl.principal_id where sp.type not in ('G', 'R') order by sp.name;
#Create user with sysadmin privs
CREATE LOGIN hacker WITH PASSWORD = 'P@ssword123!'
2.**Berechtigung:** In Verbindung mit SQL Server-Schützbaren können Berechtigungen wie ÄNDERN, STEUERN und ERSTELLEN einem Prinzipal gewährt werden. Die Verwaltung von Berechtigungen erfolgt auf zwei Ebenen:
3.**Prinzipal:** Dieser Begriff bezieht sich auf die Entität, der Berechtigungen für ein Schützbares erteilt werden. Prinzipale umfassen hauptsächlich Logins und Datenbankbenutzer. Die Kontrolle über den Zugriff auf Schützbare erfolgt durch das Gewähren oder Verweigern von Berechtigungen oder durch das Einbeziehen von Logins und Benutzern in Rollen mit Zugriffsrechten.
Beachten Sie, dass es nicht nur erforderlich ist, **`xp_cmdshell`** zu aktivieren, um Befehle ausführen zu können, sondern auch die **AUSFÜHREN-Berechtigung auf der gespeicherten Prozedur `xp_cmdshell`** zu haben. Sie können herausfinden, wer (außer Sysadmins) **`xp_cmdshell`** verwenden kann, mit:
Sie sollten einen **SMB-Server** starten, um den bei der Authentifizierung verwendeten Hash abzufangen (`impacket-smbserver` oder `responder` zum Beispiel).
[**Lesen Sie diesen Beitrag**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **um mehr Informationen darüber zu finden, wie man diese Funktion missbraucht:**
Um Dateien mit `MSSQL` zu schreiben, **müssen wir** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option) **aktivieren**, was Admin-Berechtigungen erfordert, und dann einige gespeicherte Prozeduren ausführen, um die Datei zu erstellen:
Standardmäßig erlaubt `MSSQL` das Lesen von Dateien auf jedem Dateisystem, auf das das Konto Lesezugriff hat. Wir können die folgende SQL-Abfrage verwenden:
Jedoch erfordert die **`BULK`**-Option die Berechtigung **`ADMINISTER BULK OPERATIONS`** oder die Berechtigung **`ADMINISTER DATABASE BULK OPERATIONS`**.
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
MSSQL könnte es Ihnen ermöglichen, **Skripte in Python und/oder R** auszuführen. Dieser Code wird von einem **anderen Benutzer** als demjenigen ausgeführt, der **xp\_cmdshell** verwendet, um Befehle auszuführen.
Microsoft SQL Server bietet **mehrere erweiterte gespeicherte Prozeduren**, die es Ihnen ermöglichen, nicht nur mit dem Netzwerk, sondern auch mit dem Dateisystem und sogar der [**Windows-Registrierung**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)** zu interagieren:**
EXECUTE master.sys.xp_instance_regwrite 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLSERVER\SQLServerAgent\MyNewKey', 'MyNewValue', 'REG_SZ', 'Now you see me!';
Für **weitere Beispiele** schauen Sie sich die [**Originalquelle**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/) an.
Es ist möglich, eine **.NET-DLL innerhalb von MSSQL mit benutzerdefinierten Funktionen zu laden**. Dies erfordert jedoch **`dbo`-Zugriff**, daher benötigen Sie eine Verbindung zur Datenbank **als `sa` oder mit einer Administratorrolle**.
Es gibt andere Methoden, um Befehle auszuführen, wie das Hinzufügen von [erweiterten gespeicherten Prozeduren](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR-Assemblys](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server-Agent-Jobs](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) und [externen Skripten](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
Wenn einem **normalen Benutzer** die Rolle **`db_owner`** über die **von einem Administrator erstellte Datenbank** (wie z.B. **`sa`**) gegeben wird und diese Datenbank als **`trustworthy`** konfiguriert ist, kann dieser Benutzer diese Berechtigungen missbrauchen, um **Privilegien zu eskalieren**, da **gespeicherte Prozeduren** erstellt werden können, die als Besitzer (**Administrator**) ausgeführt werden können.
SQL Server verfügt über eine spezielle Berechtigung namens **`IMPERSONATE`**, die es dem ausführenden Benutzer ermöglicht, die Berechtigungen eines anderen Benutzers oder Logins zu übernehmen, bis der Kontext zurückgesetzt oder die Sitzung beendet wird.
Wenn Sie einen Benutzer impersonieren können, auch wenn er kein Sysadmin ist, sollten Sie überprüfen, ob der Benutzer Zugriff auf andere Datenbanken oder verknüpfte Server hat.
Ein Angreifer kann SQL Server Linked Server-Passwörter aus den SQL-Instanzen extrahieren und sie im Klartext erhalten, wodurch dem Angreifer Passwörter zur Verfügung stehen, die verwendet werden können, um eine größere Verankerung im Ziel zu erlangen. Das Skript zum Extrahieren und Entschlüsseln der für die Linked Server gespeicherten Passwörter finden Sie [hier](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords)
Um diesen Exploit auszuführen, müssen einige Anforderungen und Konfigurationen erfüllt sein. Zunächst müssen Sie Administratorrechte auf dem Computer haben oder die Möglichkeit haben, die SQL Server-Konfigurationen zu verwalten.
Um diese Konfigurationen zu automatisieren, verfügt [dieses Repository](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) über die benötigten Skripte. Neben einem PowerShell-Skript für jeden Schritt der Konfiguration enthält das Repository auch ein vollständiges Skript, das die Konfigurationsskripte sowie die Extraktion und Entschlüsselung der Passwörter kombiniert.
Für weitere Informationen verweisen Sie auf die folgenden Links zu diesem Angriff: [Entschlüsselung von MSSQL Database Link Server-Passwörtern](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Beheben der SQL Server Dedicated Administrator Connection-Probleme](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network (including the Internet).
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.