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

devtools/2024/10/19 13:00:44/

系统内核漏洞提权

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

查找系统潜在漏洞

手动寻找可用漏洞

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

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文件下。

成功上线。


http://www.ppmy.cn/devtools/127013.html

相关文章

Midjourney中文版:开启AI绘画新时代

在数字时代,艺术创作已经不再是传统艺术家的专属领地。随着人工智能技术的飞速发展,一款名为Midjourney的AI绘画工具正引领着艺术创作的革命。如今,Midjourney中文版已经上线,为中文用户提供了一个全新的、触手可及的创作平台。 …

LockSupport

LockSupport类为构建锁和同步器提供了基本的线程阻塞唤醒原语,JDK中我们熟悉的AQS基础同步类就使用了它来控制线程的阻塞和唤醒,也许我们更加熟悉的阻塞唤醒操作是wait/notify方式,它主要以Object的角度来设计。而LockSupport提供的park/unpa…

【Unity - 屏幕截图】技术要点

在Unity中想要实现全屏截图或者截取某个对象区域的图片都是可以通过下面的函数进行截取 Texture2D/// <summary>/// <para>Reads the pixels from the current render target (the screen, or a RenderTexture), and writes them to the texture.</para>/…

Scala入门基础(12)抽象类

抽象类&#xff0c;制定标准&#xff0c;不要求去具体实现 包含了抽象方法的类就是抽象类。抽象方法只是有方法名&#xff0c;没有具体方法体的方法 定义抽象类要用abstract&#xff08;抽象&#xff09;关键字 用智能驾驶技术举例&#xff1a;演示&#xff09…

Win11 安装 PostgreSQL 报错解决方案

一、问题概述 在 Win11 系统中安装 PostgreSQL 时&#xff0c;可能会遇到“Problem running post-install”的报错情况。这一报错给用户带来了极大的困扰&#xff0c;使得安装过程无法顺利进行。 二、报错原因分析 &#xff08;一&#xff09;权限不足问题 在 Win11 中&…

sankey.top - 桑基图/桑吉图/流程图/能量流/物料流/能量分析

sankey.top 桑基图大师(SankeyMaster)是您创建复杂桑基图表的首选工具。轻松输入数据并创建桑基图表&#xff0c;准确揭示复杂的数据关系&#xff01; 应用 https://apps.apple.com/cn/app/sankeymaster-sankey-diagram/id6474908221 在线编辑器 https://studio.sankeymaste…

Spring Security 如何进行权限验证

阅读本文之前&#xff0c;请投票支持这款 全新设计的脚手架 &#xff0c;让 Java 再次伟大&#xff01; FilterSecurityInterceptor FilterSecurityInterceptor 是负责权限验证的过滤器。一般来说&#xff0c;权限验证是一系列业务逻辑处理完成以后&#xff0c;最后需要解决的…

python 区间循环数

目录 区间循环加上步长2&#xff1a; 区间循环加上步长1&#xff1a; 方法3&#xff1a; 区间循环加上步长2&#xff1a; for i in range(0, 11, 2):print(i) 区间循环加上步长1&#xff1a; for i in range(start, stop):# 你的代码逻辑pass 方法3&#xff1a; if __nam…