<summary><strong>Lernen Sie das Hacken von AWS von Grund auf 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 bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 senden.
Finden Sie die wichtigsten Sicherheitslücken, damit Sie sie schneller beheben können. Intruder verfolgt Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch und findet Probleme in Ihrer gesamten Technologie-Stack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. [**Probieren Sie es noch heute kostenlos aus**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
> **Microsoft SQL Server** ist ein **relationales Datenbankmanagementsystem**, das von Microsoft entwickelt wurde. 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 über ein Netzwerk (einschließlich des Internets) ausgeführt werden.
* **master-Datenbank**: Diese Datenbank ist entscheidend, da sie alle systemweiten Details für eine SQL Server-Instanz erfasst.
* **msdb-Datenbank**: Der SQL Server Agent nutzt diese Datenbank zur Verwaltung der Zeitplanung für Benachrichtigungen und Aufgaben.
* **model-Datenbank**: Dient als Vorlage für jede neue Datenbank auf der SQL Server-Instanz, wobei 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 aber logisch im sys-Schema jeder Datenbank dargestellt.
* **tempdb-Datenbank**: Dient als temporärer Speicherbereich für vorübergehende Objekte oder Zwischenergebnisse.
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.
Port scanning is the first step in enumerating a Microsoft SQL Server (MSSQL) service. It helps identify open ports and services running on those ports.
Das Port-Scannen ist der erste Schritt bei der Enumeration eines Microsoft SQL Server (MSSQL)-Dienstes. Es hilft dabei, offene Ports und die darauf laufenden Dienste zu identifizieren.
##### Banner Grabbing
##### Banner Grabbing
Banner grabbing involves retrieving information from the MSSQL server's banner or initial response. This can provide valuable details about the server version and other relevant information.
Beim Banner Grabbing wird die Information aus dem Banner oder der initialen Antwort des MSSQL-Servers abgerufen. Dies kann wertvolle Details über die Serverversion und andere relevante Informationen liefern.
##### Service Version Detection
##### Erkennung der Dienstversion
Service version detection involves identifying the specific version of the MSSQL service running on the target system. This information can be useful for finding vulnerabilities specific to that version.
Die Erkennung der Dienstversion beinhaltet die Identifizierung der spezifischen Version des MSSQL-Dienstes, der auf dem Zielsystem läuft. Diese Information kann nützlich sein, um Schwachstellen zu finden, die spezifisch für diese Version sind.
The SQL Server Browser service helps clients locate and connect to named instances of MSSQL on a network. Enumerating this service can provide information about the named instances available on the target system.
Der SQL Server-Browser-Dienst hilft Clients dabei, benannte Instanzen von MSSQL in einem Netzwerk zu finden und eine Verbindung herzustellen. Die Enumeration dieses Dienstes kann Informationen über die verfügbaren benannten Instanzen auf dem Zielsystem liefern.
##### SQL Server Instance Enumeration
##### Enumeration der SQL Server-Instanz
Enumerating the SQL Server instances involves identifying the different instances of MSSQL running on the target system. This can help in targeting specific instances for further enumeration and exploitation.
Die Enumeration der SQL Server-Instanzen beinhaltet die Identifizierung der verschiedenen Instanzen von MSSQL, die auf dem Zielsystem laufen. Dies kann dabei helfen, bestimmte Instanzen für weitere Enumeration und Ausnutzung zu identifizieren.
##### SQL Server Database Enumeration
##### Enumeration der SQL Server-Datenbank
Enumerating the SQL Server databases involves identifying the databases hosted on the MSSQL server. This can provide valuable information about the data stored on the server and potential targets for further exploitation.
Die Enumeration der SQL Server-Datenbanken beinhaltet die Identifizierung der auf dem MSSQL-Server gehosteten Datenbanken. Dies kann wertvolle Informationen über die auf dem Server gespeicherten Daten und potenzielle Ziele für weitere Ausnutzung liefern.
##### SQL Server User Enumeration
##### Enumeration der SQL Server-Benutzer
Enumerating the SQL Server users involves identifying the users and their privileges on the MSSQL server. This information can be useful for further exploitation and privilege escalation.
Die Enumeration der SQL Server-Benutzer beinhaltet die Identifizierung der Benutzer und ihrer Privilegien auf dem MSSQL-Server. Diese Informationen können für weitere Ausnutzung und Privileg-Eskalation nützlich sein.
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!'
1.**Sicherbar**: Definiert als die Ressourcen, die von SQL Server zur Zugriffskontrolle verwaltet werden. Diese werden in folgende Kategorien unterteilt:
- **Server** - Beispiele hierfür sind Datenbanken, Logins, Endpunkte, Verfügbarkeitsgruppen und Serverrollen.
2.**Berechtigung**: Mit SQL Server-Sicherbaren verbundene Berechtigungen wie ALTER, CONTROL und CREATE können 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 Sicherbares gewährt werden. Prinzipale umfassen hauptsächlich Logins und Datenbankbenutzer. Die Kontrolle über den Zugriff auf Sicherbare 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`** **aktiviert** zu haben, um Befehle ausführen zu können, sondern auch die **AUSFÜHREN-Berechtigung für die gespeicherte Prozedur `xp_cmdshell`** zu besitzen. Sie können herausfinden, wer (außer Sysadmins) **`xp_cmdshell`** verwenden kann, indem Sie Folgendes verwenden:
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 weitere 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 Administratorrechte erfordert, und dann einige gespeicherte Prozeduren ausführen, um die Datei zu erstellen:
Standardmäßig erlaubt `MSSQL` das Lesen von Dateien auf dem Betriebssystem, für die das Konto Lesezugriff hat. Wir können die folgende SQL-Abfrage verwenden:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
SELECT column_name FROM table_name WHERE 1=convert(int,(select top 1 column_name from table_name)))
```
This error-based vector for SQL injection is used to extract data from a Microsoft SQL Server database. It leverages the `convert` function to force a conversion error and reveal information.
To use this vector, replace `column_name` with the name of the column you want to extract data from, and `table_name` with the name of the table containing the desired data.
The `select top 1` statement is used to retrieve only one record from the specified column. If the injection is successful, the converted value will cause an error, and the error message will contain the extracted data.
Keep in mind that this technique may not work in all scenarios, as it relies on the specific error messages generated by the SQL Server. Additionally, it is important to note that SQL injection is illegal and should only be performed with proper authorization and for legitimate purposes, such as penetration testing.
MSSQL ermöglicht es Ihnen, 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**, mit denen Sie 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/) interagieren können:
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 [**ursprüngliche Quelle**](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 den Zugriff auf `dbo`, daher benötigen Sie eine Verbindung zur Datenbank **als `sa` oder mit einer Administratorrolle**.
Es gibt andere Methoden, um die Befehlsausführung zu erhalten, wie z.B. 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).
Finden Sie die wichtigsten Sicherheitslücken, damit Sie sie schneller beheben können. Intruder verfolgt Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch und findet Probleme in Ihrer gesamten Technologie-Stack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. [**Probieren Sie es noch heute kostenlos aus**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
Wenn einem **normalen Benutzer** die Rolle **`db_owner`** über die **Datenbank eines Administrator**-Benutzers (wie **`sa`**) gegeben wird und diese Datenbank als **`trustworthy`** konfiguriert ist, kann dieser Benutzer diese Privilegien missbrauchen, um **Privilege Escalation** durchzuführen, da in dieser Datenbank gespeicherte Prozeduren als Eigentümer (**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 anzunehmen, bis der Kontext zurückgesetzt oder die Sitzung beendet wird.
Wenn Sie sich als Benutzer ausgeben können, auch wenn er kein Sysadmin ist, sollten Sie überprüfen, **ob der Benutzer Zugriff** auf andere **Datenbanken** oder verknüpfte Server hat.
## Extrahieren von Passwörtern aus SQL Server Linked Servers
Ein Angreifer kann Passwörter von SQL Server Linked Servers 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 erreichen.
Das Skript zum Extrahieren und Entschlüsseln der für die Linked Servers gespeicherten Passwörter finden Sie [hier](https://www.richardswinbank.net/admin/extract_linked_server_passwords).
Um diese Konfigurationen zu automatisieren, enthält [dieses Repository](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) 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.
Weitere Informationen zu diesem Angriff finden Sie unter den folgenden Links:
[Entschlüsselung von MSSQL Database Link Server-Passwörtern](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Beheben von Problemen mit der SQL Server Dedicated Administrator Connection](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
Finden Sie die wichtigsten Schwachstellen, damit Sie sie schneller beheben können. Intruder überwacht Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch und findet Probleme in Ihrer gesamten Technologie-Stack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. [**Probieren Sie es noch heute kostenlos aus**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
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>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 bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 senden.