当前位置: 首页 > article >正文

[权限提升] Windows 提权 维持 — 系统错误配置提权 - 注册表权限配置错误提权

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客

0x01:注册表权限配置错误提权原理

通常 Windows 中的服务都是以 System 权限运行的,而 Windows 的服务程序的启动路径又是存放在注册表中的,若注册表配置不当,导致低权限用户可以更改注册表项时,就可能造成提权漏洞。

攻击者可以通过修改注册表中服务的 imagepath 值,将其替换为恶意程序路径,当服务重新启动时即会以 System 权限执行恶意程序,导致提权:

0x02:注册表权限配置错误提权环境配置

复现环境

  • 靶机 Windows 7:IP 192.168.0.132

  • 攻击机 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,在打开的 “运行” 窗口中输入 regedit 来打开注册表:

定位注册表中的下面这个路径,这个路径就是存放 Windows 服务信息的:

 HKEY_LOCAL_MACHINE\system\ControlSet001\services

在上面这个路径中找到我们刚刚通过命令行创建的 testService 服务:

如上,成功找到,说明我们服务创建的没问题。

0x0203:授予低权限用户注册表编辑权限

1. 授予低权限用户注册表编辑权限 — 图形化方式

右击上面找到的 testService 服务的文件夹,然后按照下面的图片,给 Users 普通用户组授予对 testService 服务的完全控制权限:

2. 授予低权限用户注册表编辑权限 — 命令行方式

工具获取:subinacl.zip

以命令行方式授权需要用到 subinacl 工具,将工具上传到靶机,并在工具的同级目录下打开 CMD 窗口输入以下命令即可授予 Users 用户组对 testService 服务的完全控制权:

 subinacl /keyreg "HKEY_LOCAL_MACHINE\system\ControlSet001\services\testService" /grant=Users=f

执行完上面的命令后,你要是去查看注册表,会发现 testService 服务的权限中,Users 用户组被授予了 “完全控制权限”,证明我们上面的命令有效:

0x03:注册表权限配置错误提权漏洞复现

0x0301:拿到靶机低权限用户 Shell

首先让靶机中的一个低权限用户上线 CS,这里笔者是通过 CS 制作 Windows 后门程序,让靶机中的 test01 用户上线了,该用户属于 Users 用户组,是一个普通权限的用户:

如上,拿到靶机中的一个低权限用户 Shell,下面我们开始通过 “注册表权限配置错误漏洞” 进行提权。

0x0302:获取靶机中所有的服务

输入下面的命令,获取靶机中的所有服务信息:

 sc query type= all state= all |findstr /i service_name.* |more

0x0303:使用 subinacl 查询服务权限

工具获取:subinacl.zip

将 subinacl 上传到靶机上,然后我们开始一个一个的查询服务的权限,笔者以最后两个服务为例(WwanSvc 与 testService):

 # 查询 WwanSvc 服务的权限
 subinacl /keyreg "HKEY_LOCAL_MACHINE\system\ControlSet001\services\WwanSvc" /display

然后查询 testService 服务信息:

 subinacl /keyreg "HKEY_LOCAL_MACHINE\system\ControlSet001\services\testService" /display

如上,我们查询到针对 testService 服务,本地的 Users 用户组,具有完全控制权限,恰巧,我们拿到的用户就是 Users 用户组中的成员。

0x0304:查询注册表中服务的 imagepath 值

输入下面的命令,查找注册表中 testService 服务的 imagepath 值,即该服务的启动程序的路径:

 reg query HKEY_LOCAL_MACHINE\system\ControlSet001\services\testService /v imagepath

0x0305:替换注册表中服务的 imagepath 值

输入下面的命令,将注册表中 testService 服务的启动程序路径替换为我们的恶意程序(通过 CS 生成的 Windows 反弹 Shell 的木马程序)路径:

 reg add "HKEY_LOCAL_MACHINE\system\ControlSet001\services\testService" /t REG_EXPAND_SZ /v ImagePath /d "C:\Users\test01\Desktop\artifact.exe" /f

输入下面的命令查询一下 testService 服务的 imagepath 信息是否被修改:

reg query HKEY_LOCAL_MACHINE\system\ControlSet001\services\testService /v imagepath

如上,可以看到,注册表中的 testService 服务的启动程序路径已经被我们修改了,接下来,我们只要等待管理员启动服务即可提权(要是设置服务为开机自启,就只需要等待电脑重启就能拿到高权限了)。

0x0306:等待管理员启动服务 & 提权

我们以 Administrator 登录 Windows 7 靶机中,输入下面的命令,手动以管理员权限启动 testService 服务,同时留意 CS 中的信息:

sc start testService

如上,当管理员运行 testService 服务时,靶机成功以 SYSTEM 权限上线 CS,提权成功。


http://www.kler.cn/a/530731.html

相关文章:

  • (CICD)自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)
  • WPF进阶 | WPF 动画特效揭秘:实现炫酷的界面交互效果
  • 100.3 AI量化面试题:解释配对交易(Pairs Trading)的原理,并说明如何选择配对股票以及设计交易信号
  • 一文讲解HashMap线程安全相关问题(上)
  • LeetCode:300.最长递增子序列
  • 高温环境对电机性能的影响与LabVIEW应用
  • 《机器学习数学基础》补充资料:仿射变换
  • Linux:宏观搭建网络体系
  • t基础使用--6---git常用命令
  • node模块查找策略
  • MQTT 术语表
  • Windows和苹果MacOS上的vscode翻页及上下滚动行快捷键
  • 给AI加知识库
  • WPF进阶 | WPF 动画特效揭秘:实现炫酷的界面交互效果
  • Vulkan 学习(13)---- Vulkan Framebuffercommand buffer
  • 修复使用unplugin-auto-import和unplugin-vue-components后tsc-vue报错的问题
  • 寒假day10
  • 一文讲解Spring中应用的设计模式
  • Swoole如何进行错误处理
  • Linux下安装Redis详细教程
  • 6. 【Vue实战--孢子记账--Web 版开发】-- 主币种设置
  • 强化学习、深度学习、深度强化学习的区别是什么?
  • PySPARK带多组参数和标签的SparkSQL批量数据导出到S3的程序
  • Unity Shader Graph 2D - 跳动的火焰
  • 大语言模型深度研究功能:人类认知与创新的新范式
  • Pyside6异步通信测试