当前位置: 首页 > 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自己用了十来年…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...