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

10月18日笔记(基于系统服务的权限提升)

系统内核漏洞提权

当目标系统存在该漏洞且没有更新安全补丁时,利用已知的系统内核漏洞进行提权,测试人员往往可以获得系统级别的访问权限。

查找系统潜在漏洞

手动寻找可用漏洞

在目标主机上执行以下命令,查看已安装的系统补丁。

systeminfo

测试人员会通过没有列出的补丁号,结合系统版本等信息,借助相关提权辅助网站寻找可用的提权漏洞,如MS18-8120与KB4131188对应、CVE-2020-0787与KB4540673对应等。

借助WES-NG查找可用漏洞

下载地址:https://github.com/bitsadmin/wesng

1、在本地主机上执行以下命令,更新最新的漏洞数据库。

python3 wes.py --update

这里因为我的kali无法直接连接到更新源,所以使用proxy代理。

2、在目标主机上执行systeminfo命令,并将执行结果保存到sysinfo.txt中。然后执行以下命令,使用WES-NG进行检查。

python3 wes.py sysinfo.txt --impact "ELevation of Privilege"

#–impact 指定漏洞类型为提权漏洞

执行以下命令,查找所有已公开EXP的提权漏洞。

python3 wes.py sysinfo.txt --impact "Elevation of Privilege" --exploits-only

根据查到的可用漏洞和给出的Exploit参考链接,测试人员可以寻找相应的漏洞利用程序。然后上传利用。

示例:

下载下来sysinfo.txt使用wes-ng执行之后,发现CVE-2018-8120可以用,在msf搜索。

配置好变量后,run

本地提权成功

系统服务提权

通常情况下,用户安装的一些应用软件会在本地注册一些服务,并且大多数服务在计算机开机时以系统SYSTEM权限启动。应用软件在注册服务时,会在以下路径中创建相应的注册表项。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\services

如下图中,其中的ImagePath健指向该系统服务所启动的二进制程序。

Windows系统服务在操作系统启动时运行,并在后台调用其相应的二进制文件。由于大多数系统服务是以系统权限(SYSTEM)启动的,如果让服务启动时执行其他程序,该程序就可以随着服务的启动获得系统权限,这是利

用系统服务提权的主要思路。

系统服务类提权从主观上可以归咎于用户的配置疏忽或操作错误,如不安全的服务权限、服务注册表权限脆弱、服务路径权限可控、未引用的服务路径等。

不安全的服务权限

ACL定义了安全对象的访问控制策略,用于规定哪些主体对其拥有访问权限和拥有什么样的权限。Windows的系统服务正是通过ACL来指定用户对其拥有的权限。常见的权限如下表:

低权限用户可以检查“Authenticated Users”组和“INTERACTIVE”组对系统服务的权限。前者为经过身份验证的用户,,包含系统中所有使用用户名、密码登录并通过身份验证的账户,但不包括来宾账户;后者为交互式用户组,包含系统中所有直接登录到计算机进行操作的用户。默认情况下,这两个组为计算机本地“Usrs”组的成员。

如果拿下的主机没有accesschk。

下载地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/accesschk

下载完上传到目标主机

环境搭建:先用本地管理员授予newman用户对apache服务的完全控制权限。

net start

查看服务。

给newman赋予apache权限。

subinacl.exe /service Apache2.4 /grant=newman=F

环境完成。提权操作

执行以下命令:

accesschk.exe /accepteula -uwcqv "newman" *

枚举目标主机“newman”是否具有更改服务配置的权限。

发现newman对apache服务完全控制权限。此时执行以下命令,把该服务启动时执行的二进制文件替换为预先上传的攻击载荷。当服务重启时,载荷会随服务启动继承系统权限。

sc config 服务名 binPath="cmd.exe /k c:\beacon.exe"
sc config Apache2.4 binPath= "cmd.exe /k c:\beacon.exe" #大小写敏感

修改成功,重启一下该服务。

成功攻击

服务注册表权限脆弱

Windows的注册表中存储了每个系统服务的条目,而注册表使用ACL来管理用户对其所拥有的访问权限。如果注册表的ACL配置错误,使得一个低权限用户对服务的注册表拥有写入权限,此时可以通过修改注册表来更改服务配置。例如,修改注册表中的ImagePath键,从而变更服务启动时的二进制文件路径。

1、执行如下,通过AccessChk在目标主机中检查newman用户是否对某个服务的注册表有写入权限

accesschk.exe /accepteula newman -uvwqk HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

发现对apache服务的注册表拥有完全控制权限.

2、将该服务注册表中的ImagePath键指向预先上传的攻击载荷:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4 /v ImagePath /t REG_EXPAND_SZ /d "cmd.exe /k c:\beacon.exe" /f

3、检查该用户是否对该服务由重启权限。

accesschk.exe /accepteula newman -ucqv Apache2.4

从执行结果可知,当前用户有权限重启apache服务。

重启后

服务路径权限可控

如果目标主机上用户存在错误配置或操作,使得一个低权限的用户对此服务调用的二进制文件或其所在目录拥有写入权限,那么可以直接将该文件替换成攻击载荷,并随着服务的启动继承系统权限。

使用以下命令,用Accesschk查看apache这个服务的二进制文件所在目录是否有写入权限

accesschk.exe /accepteula -quv "C:\phpStudy\Apache\bin\"

有权限,可替换。

未引入的服务路径

未引用的服务路径(Unquoted Service Path)漏洞曾被称为可信任的服务路径(Trusted Service Path),利用了Windows文件路径解析的特性。当服务启动所执行的二进制文件的路径中包含空格且未有效包含在引号中时,就会导致该漏洞。

造成该漏洞的根本原因在于windows系统中用户创建进程的CreateProcess函数中,如下语法:

BOOL CreateProcessA([in, optional]      LPCSTR                lpApplicationName,[in, out, optional] LPSTR                 lpCommandLine,[in, optional]      LPSECURITY_ATTRIBUTES lpProcessAttributes,[in, optional]      LPSECURITY_ATTRIBUTES lpThreadAttributes,[in]                BOOL                  bInheritHandles,[in]                DWORD                 dwCreationFlags,[in, optional]      LPVOID                lpEnvironment,[in, optional]      LPCSTR                lpCurrentDirectory,[in]                LPSTARTUPINFOA        lpStartupInfo,[out]               LPPROCESS_INFORMATION lpProcessInformation
);

其中,lpApplicationName参数用户指定要执行的模块或应用程序的路径或文件名。如果完整路径中包含空格且未有效包含在引号中,那么对于该路径中的每个空格,windows会按照从左到右的顺序依次尝试寻找并执行与空格前的名字相匹配的程序。例如:路径C:Program Files\Sub Dir\Program Name.exe

系统依次寻找并执行以下程序:

C:\Program.exe
C:\Program Files\Sub.exe
C:\Program Files\Sub Dir\Program.exe
C:\Program Files\Sub Dir\Program Name.exe

当系统在依次尝试服务路径中的空格时,会以当前服务所拥有的权限进行。因此,测试人员可以将一个经过特殊命名的攻击载荷上传到受影响的目录中,当重启服务时,攻击载荷将随着服务的启动继承系统权限。但前提是当前用户对受影响的目录具有写入权限。

使用vmic查看是否存在该种未引入的服务路径。

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

可能存在,把攻击载荷名字命名成two.exe文件,放入one file文件下。

成功上线。

相关文章:

10月18日笔记(基于系统服务的权限提升)

系统内核漏洞提权 当目标系统存在该漏洞且没有更新安全补丁时,利用已知的系统内核漏洞进行提权,测试人员往往可以获得系统级别的访问权限。 查找系统潜在漏洞 手动寻找可用漏洞 在目标主机上执行以下命令,查看已安装的系统补丁。 system…...

【STM32 Blue Pill编程实例】-控制步进电机(ULN2003+28BYJ-48)

控制步进电机(ULN2003+28BYJ-48) 文章目录 控制步进电机(ULN2003+28BYJ-48)1、步进电机介绍2、ULN2003步进电机驱动模块3、硬件准备及接线4、模块配置3.1 定时器配置3.2 ULN2003输入引脚配置4、代码实现在本文中,我们将介使用 STM32Cube IDE 使用 ULN2003 电机驱动器来控制28B…...

监督学习、无监督学习、半监督学习、强化学习、迁移学习、集成学习分别是什么对应什么应用场景

将对监督学习、无监督学习、半监督学习、强化学习、迁移学习和集成学习进行全面而详细的解释,包括定义、应用场景以及具体的算法/模型示例。 1. 监督学习 (Supervised Learning) 定义:监督学习是一种机器学习方法,其中模型通过已知的输入数…...

WSL2 Linux子系统调整存储位置

WSL2 默认不支持修改Linux 安装路径,官方提供的方式,只有通过导出、导入的方式实现Linux子系统的迁移。 修改注册表的方式官方不推荐,没有尝试过,仅提供操作方式(自行评估风险,建议备份好数据) 1. 打开 **注册表编辑器…...

Shiro授权

一、定义与作用 授权(Authorization),也称为访问控制,是确定是否允许用户/主体做某事的过程。在Shiro安全框架中,授权是核心组件之一,它负责控制用户对系统资源的访问权限,确保用户只能访问其被…...

算法题总结(十五)——贪心算法(下)

1005、K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数组 可…...

《深度学习》【项目】自然语言处理——情感分析 <下>

目录 一、了解项目 1、任务 2、文件内容 二、续接上篇内容 1、打包数据,转化Tensor类型 2、定义模型,前向传播函数 3、定义训练、测试函数 4、最终文件格式 5、定义主函数 运行结果: 一、了解项目 1、任务 对微博评论信息的情感分…...

postgresql是国产数据库吗?

PostgreSQL不是国产数据库。但是PostgreSQL对国产数据库的发展有着重要影响,许多国产数据库产品是基于PostgreSQL进行二次开发的。 PostgreSQL的开源特性也是其受欢迎的重要原因之一。开源意味着任何人都可以查看、修改和使用PostgreSQL的源代码。这使得PostgreSQL…...

软考——计算机网络概论

文章目录 🕐计算机网络分类1️⃣通信子网和资源子网2️⃣网络拓扑结构3️⃣ 计算机网络分类3:LAN MAN WAN4️⃣其他分类方式 🕑OSI 和 TCP/IP 参考模型1️⃣OSI2️⃣TCP/IP🔴TCP/IP 参考模型对应协议 3️⃣OSI 和 TCP/IP 模型对应…...

01 设计模式-创造型模式-工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。 工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。 通过使用工厂模式…...

ComnandLineRunner接口, ApplcationRunner接口

ComnandLineRunner接口, ApplcationRunner接口 介绍: 这两个接口都有一个run方法,执行时间在容器对象创建好后,自动执行run ( )方法。 创建容器的同时会创建容器中的对象,同时会把容器中的对象的属性赋上值: 举例&…...

Swift用于将String拆分为数组的components与split的区别

根据特定分隔符拆分字符串 在 Swift 中,components(separatedBy:) 和 split(separator:) 都可以用于将字符串拆分为数组,但它们有一些关键区别。下面将从返回值类型、性能和功能等角度进行对比。 1. 返回值类型 components(separatedBy:):…...

docker之redis安装(项目部署准备)

创建网络 docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1 redis安装 #创建目录 mkdir -p /data/redis/{conf,data} #上传redis.conf文件到/data/redis/conf文件夹中 #对redis.conf文件修改 # bind 0.0.0.0 充许任何主机访问 # daemonize no #密码 # …...

使用Maven前的简单准备

目录 一、Maven的准备 1、安装jdk1.8或以上版本 2、下载Maven 3、安装Maven 二、Maven目录的分析 三、Maven的环境变量配置 1、设置MAVEN_HOME环境变量 2、设置Path环境变量 3、验证配置是否完成 一、Maven的准备 1、安装jdk1.8或以上版本 jdk的安装 2、下载Maven…...

Java | Leetcode Java题解之第494题目标和

题目&#xff1a; 题解&#xff1a; class Solution {public int findTargetSumWays(int[] nums, int target) {int sum 0;for (int num : nums) {sum num;}int diff sum - target;if (diff < 0 || diff % 2 ! 0) {return 0;}int neg diff / 2;int[] dp new int[neg …...

阅读笔记 Contemporary strategy analysis Chapter 13

来源&#xff1a;Robert M. Grant - Contemporary strategy analysis (2018) Chapter 13 Implementing Corporate Strategy: Managing the Multibusiness Firm Ⅰ Introduction and Objectives 多业务公司 multibusiness firm由多个独立的业务部门组成&#xff0c;如业务单元…...

Python GUI 编程:tkinter 初学者入门指南——复选框

在本文中&#xff0c;将介绍 tkinter Checkbox 复选框小部件以及如何有效地使用它。 复选框是一个允许选中和取消选中的小部件。复选框可以保存一个值&#xff0c;通常&#xff0c;当希望让用户在两个值之间进行选择时&#xff0c;可以使用复选框。 要创建复选框&#xff0c;…...

使用vscode导入库失败解决方法

导入库失败原因 在使用vscode写python代码时&#xff0c;有时会遇见导入库失败的情况&#xff0c;如下图&#xff1a;无法解析导入“xxxxx” 或者 运行时报错&#xff1a;ModuleNotFoundError: No module named xxxxx。 原因可能有&#xff1a; 根本没有下载库&#xff1b…...

无线网卡知识的学习-- mac80211主要代码流程

一 简介概要: mac80211驱动程序作为Linux内核中管理和控制无线网络接口的核心模块,其主要流程涵盖了从数据帧接收到发送的完整过程。 主要覆盖了7个方面: 1. 数据帧接收流程,2. 数据帧发送流程 3. 频道管理和切换 4. 接口管理 5. 安全和认证 6. 管理和调试 7. 注册和初…...

关于k8s集群高可用性的探究

1. k8s的高可用的核心是什么&#xff1f; 说到核心、本质 意味着要从物理层来考虑技术 k8s是一个容器编排管理工具&#xff0c;k8s受欢迎的时机 是docker容器受欢迎时&#xff0c;因为太多的docker容器&#xff0c;管理起来是一个大工程 那么刚好k8s是google自己用了十来年…...

Neper终极指南:免费开源的多晶体建模与网格划分神器

Neper终极指南&#xff1a;免费开源的多晶体建模与网格划分神器 【免费下载链接】neper Polycrystal generation and meshing 项目地址: https://gitcode.com/gh_mirrors/nep/neper 你是否正在为材料微观结构建模而烦恼&#xff1f;面对复杂的多晶体生成、网格划分和可视…...

ARM调试异常与调试状态机制详解

1. ARM调试异常机制深度解析调试异常是ARM处理器调试体系中的核心机制&#xff0c;当处理器在监控调试模式(Monitor debug-mode)下发生特定调试事件时触发。理解这一机制对于嵌入式系统开发至关重要&#xff0c;它直接影响着断点设置、单步调试等基础调试功能的实现效果。1.1 调…...

如何用HF Patch解决Koikatu游戏三大痛点:200+插件整合的完整指南

如何用HF Patch解决Koikatu游戏三大痛点&#xff1a;200插件整合的完整指南 【免费下载链接】KK-HF_Patch Automatically translate, uncensor and update Koikatu! and Koikatsu Party! 项目地址: https://gitcode.com/gh_mirrors/kk/KK-HF_Patch 如果你正在玩Koikatu!…...

JiT源码深度剖析:从Denoiser到Transformer的完整实现

JiT源码深度剖析&#xff1a;从Denoiser到Transformer的完整实现 【免费下载链接】JiT PyTorch implementation of JiT https://arxiv.org/abs/2511.13720 项目地址: https://gitcode.com/gh_mirrors/jit8/JiT JiT&#xff08;Just image Transformer&#xff09;是一个…...

【Claude Code 源码解析教程】第33章:性能调优实战

本章深入解析 Claude Code 的性能优化策略,包括内存优化、响应速度优化、缓存策略和并发处理。性能优化是提升用户体验的关键。 目录 33.1 内存优化策略 33.1.1 慢操作监控 33.1.2 慢操作检测使用示例 33.1.3 内存管理策略 33.1.4 内存泄漏检测与修复 33.2 响应速度优化…...

RAG提示工程失效?NotebookLM上下文压缩机制深度拆解,3类文档结构适配公式即拿即用

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;RAG提示工程失效的底层归因与NotebookLM破局逻辑 RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统在真实场景中频繁遭遇“提示失焦”现象——检索结果与生成目标语义脱节&#xff0c;导…...

污水处理通气帽标准尺寸参数与国标通气帽定制要点

在好些个工程现场当中&#xff0c;人们往往会忽略掉一个看起来平常但是特别要害的小部件——通气帽。特别是在污水处理的体系当中&#xff0c;它承担平衡内部和外部的气压&#xff0c;阻止异味向外溢出&#xff0c;阻拦异物进入等好几个方面的功能。要是选择类型不适合&#xf…...

ChatGPT 2026安全增强套件发布:内置FIPS 140-3认证加密引擎、GDPR实时审计追踪、AI生成内容数字水印——金融/医疗行业合规上线最后窗口期

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT 2026安全增强套件整体架构与合规定位 ChatGPT 2026安全增强套件&#xff08;CESK-2026&#xff09;是一套面向生成式AI服务的纵深防御框架&#xff0c;专为满足GDPR、中国《生成式人工智能服务…...

5分钟掌握PT一键转载神器:Auto Feed JS让资源分享效率提升10倍

5分钟掌握PT一键转载神器&#xff1a;Auto Feed JS让资源分享效率提升10倍 【免费下载链接】auto_feed_js PT站一键转载脚本 项目地址: https://gitcode.com/gh_mirrors/au/auto_feed_js 如果你是一位PT&#xff08;Private Tracker&#xff09;爱好者&#xff0c;一定经…...

3步解决JavaScript精度问题:decimal.js高精度计算完整指南

3步解决JavaScript精度问题&#xff1a;decimal.js高精度计算完整指南 【免费下载链接】decimal.js An arbitrary-precision Decimal type for JavaScript 项目地址: https://gitcode.com/gh_mirrors/de/decimal.js 在JavaScript开发中&#xff0c;你是否经常遇到这样的…...