# 服务提权

服务提权，是 Windows 平台提升权限的经典途径，但实际上服务提权又可以根据利用的根源分为 **3种** 更具体的不当配置。一些有关服务提权的 CVE 漏洞原理也是来自这 3 个 (如果你发现了某个应用的服务匹配以下任一情形，只要你愿意申请，就能有 CVE)。

服务提权可以分为这三类：

### **配置不当的服务权限**

攻击者对于服务本身具有特定权限，例如修改服务的**二进制文件路径**、**停止/启动服务**、修改其他服务参数等。因此，利用手法可以是将服务二进制文件指定为攻击者的载荷。此外，由于还可以修改服务的其他参数，例如是否自启动，可以实现主机持久化。在下一个章节我们会进行介绍。

**修改二进制文件路径**：将服务的二进制文件指向恶意的载荷

**停止与启动服务**：使修改生效

**启动类型**：通过服务来维持访问

### **未用引号引用的服务路径**

因为文件夹或者文件是允许存在空格的，例如文件夹 **“C:\\Program Files”**，但如果不加引号，即 **C:\\Program Files**，Windows会把 **C:\\Program** 当成目标文件夹。并且当服务区解析二进制文件的地址的时候，例如该二进制文件地址为 **“C:\\Program Files\\Weak Services\\Unquoted Service.exe”** ，那么从前往后依次解析到的是

**C:\\Program.exe**

**C:\\Program Files\\Weak.exe**

**C:\\Program Files\\Weak Services\\Unquoted.exe**

因此，如果我们想要利用，可以在上述任一一路径丢入一个二进制文件。但需要注意的是，我们需要对响应的文件夹具有**写权限**。

如果还是有些不理解，大家可以记住这样的模式：对于一个二进制文件的地址如果是 **"C:\\A B\\C D\\E F.exe"**

我们可以在 **C:\\** 丢入 **A.exe**，即 **C:\\A.exe**

我们可以在 "**C:\\A B"** 丢入 **C.exe**，即 **"C:\\A B\\C.exe"**

我们可以在 **"C:\\A B\\C D\\"** 丢入 **E.exe**，即 "**C:\\A B\\C D\\E.exe"**

我们以 CVE 漏洞 CVE-2022-37197 ([https://www.exploit-db.com/exploits/51029](https://www.exploit-db.com/exploits/51029)) 举例，二进制文件的地址为  **C:\\Program Files (x86)\\IOTransfer\\Updater\\IOTUpdater.exe**，并没有用引号包裹该路径，那么会导致路径解析错误，通过在特定路径防止恶意载荷，可以让恶意载荷被读取。

```powershell
C:\>wmic service get name,displayname,pathname,startmode |findstr /i "auto" |findstr /i /v "c:\windows\\" |findstr /i /v """

IOTransfer Updater IOTUpdaterSvc C:\Program Files (x86)\IOTransfer\Updater\IOTUpdater.exe
                      Auto

C:\>sc qc IOTUpdaterSvc
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: IOTUpdaterSvc
        TYPE : 10 WIN32_OWN_PROCESS
        START_TYPE : 2 AUTO_START
        ERROR_CONTROL : 1 NORMAL
        BINARY_PATH_NAME : C:\Program Files (x86)\IOTransfer\Updater\IOTUpdater.exe


LOAD_ORDER_GROUP :
        TAG : 0
        DISPLAY_NAME : IOTransfer Updater
        DEPENDENCIES :
        SERVICE_START_NAME : LocalSystem
```

### **配置不当的服务二进制文件**

攻击者对于该服务的二进制文件具有修改权。因此，常规的利用手法是用生成一个恶意的服务二进制文件，替换掉原有的服务二进制文件。之后，该服务就会执行恶意的二进制文件。

让我们来查看 **CVE-2021-35312** 的利用 ([https://www.exploit-db.com/exploits/50184](https://www.exploit-db.com/exploits/50184)):

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/3nh3B4FCS3iJD4a1-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/3nh3B4FCS3iJD4a1-image.png)

根据描述，我们发现二进制文件 **RemoteBackup.Service.exe** 默认被分配了错误的文件权限，导致低权限用户也有变更权。通过替换成恶意载荷，便可以获得 SYSTEM 权限。

不用担心一时间无法仔细区分出这 3 种脆弱的服务配置，**powerup.ps1** 脚本如果发现了上述任一类型，也就是只要是实际可利用的脆弱服务，它能帮助我们自动利用。