记一次攻防演练之vcenter后渗透利用

news2025/7/12 7:34:17

在这里插入图片描述

1. 说明

很早之前的一次攻防演练,主要是从web漏洞入手,逐渐学习vcenter后利用技术。过程由于太长,很多细节都省略了,中间踩坑、磕磕绊绊的地方太多了。。。
由于敏感性,很多地方都是打码或者是没有图,按照回忆整理的,见谅!

1. confluence漏洞

根据打点的记录,找到了一个confluence的界面:
image.png

1.1 反弹shell

经过验证,存在cve-2022-26134漏洞,直接利用漏洞反弹shellvps

image.png
经过分析,当前为实体机,但是权限较低,这也正常,大部分都是这个权限。

1.2 提权

先进行信息搜集,看下内核版本之类的:
image.png
看到了当前为centos,尝试使用cve-2021-4034进行提权,将文件传到机器上之后,再进行编译,然后执行:

image.png
此时顺利获取到了root权限。
在此期间,发现机器中还有的门罗币的一些操作:
image.png
因为当前机器仅支持密钥登录,在密钥中看到了明显的入侵痕迹。所以就不进行登陆了。
至此,入口机的操作到此结束。

2. 内网扫描

在入口机上发现了一共有两个有效子网ip,对其分别进行了扫描,发现如下:
image.png

192.168.122.1/24扫描,只发现了一个ip,也就是当前正在使用的ip地址,虽然发现了一些其他的漏洞,但是参考意义不大:
image.png
10.110.11.1/24段进行扫描的时候,发现了一些有用的漏洞,其中包含vcenter的,由于内容太多,在这里分享一部分:

[+] NetInfo:
[*]10.110.11.10
   [->]a1-dc
   [->]10.110.11.10
[+] https://10.110.11.30 poc-yaml-vmware-vcenter-unauthorized-rce-cve-2021-21972 
 

在这里发现了一台dc(自己标注的主机名)和一个cve-2021-21972漏洞的机器,那下面就转战vcenter了。毕竟vcenter被称为小域控。
当然,在这里还需要搭建隧道等,我在这里就对此省略不提了。

3. vcenter漏洞

对于这种vcenter漏洞和后渗透来说,先拿到shell,提权到root,进后台,操作机器。
一般进后台有三种方法:

  1. 找到mdb文件,生成证书文件,再生成cookie,进后台。
  2. root权限添加新用户。
  3. 重置管理员密码,使用新账密进入后台。

3.1 版本探测

首先是版本探测:
image.png
当前版本是6.7.2,虽然扫出来的是21972漏洞,但是很多时候这种机器有概率存在cve-2021-22005漏洞,之所以尝试22005,主要是21972获得的权限不是root的,到时候还需要提权,很麻烦。

2.2 getshell

在这里使用的是cve-2021-22005,挂上代理之后,先上传作者的木马上去,直接一把梭:
image.png
这样的好处是作者的木马是网页版的命令执行,有些时候会显示似乎是已经上传成功了,但是验证的时候没有回显,以前遇到过好多次都是误报。
image.png
证明确实存在22005这个漏洞,那就上传自己的马儿上去:
image.png
在这里上传的是蚁剑的,因为在这里最初尝试过哥斯拉的,发现上传了无法连接,最后蚁剑是忽略了https证书才能连接:
image.png
当前权限是root
理论上接下来就是获取cookie到后台,再操作机器。。。。。
整个流程看起来非常的流畅。但是坑的点随之而来~

3.3 获取cookie(失败)

以下的操作可以参考这个链接,我都是在这个链接和s老板的基础上学习到的:
https://daidaitiehanhan.github.io/2022/04/18/vCenter2021%E5%87%A0%E4%B8%AA%E6%BC%8F%E6%B4%9E%E5%8F%8A%E5%90%8E%E6%B8%97%E9%80%8F/#%E6%8F%90%E6%9D%83
不懂的,可以先看这个。
流程就是:在这里获取cookie之后,然后直接登录vcenter的网页版后台(想着都很美)
一般来说,对mdb数据操作,有两种方法:

  • 一个是在vcenter机器上用脚本获取
  • 第二种是下载到本地用脚本获取。

3.3.1 本地执行脚本

找到mdb数据,然后解密:

/storage/db/vmware-vmdir/data.mdb

在执行的时候,在蚁剑上使用命令行执行会特别慢,只能获取到一个文件,因为当前vcenter的机器出网,所以直接反向弹到vps上,用root权限的交互式命令行来执行,同样的问题,执行反馈特别慢,而且执行会出现一些莫名其妙的错误:
image.png

直接告诉我证书为空,我尼玛。。。
最后发现,可能的原因是mdb文件太大了,文件1个G还要多,没法搞(只是怀疑),一般攻防里面这种文件大概不超过100M
image.png

3.3.2 本地执行

挂隧道,用小水管,把文件慢慢慢慢慢慢慢下载到本地来,再试试本地:
image.png
直接g,看来这种方法肯定是不行了。

3.4 添加用户(失败)

按照大佬的方法,此时来添加新用户到vcenter后台,用户添加脚本:
https://github.com/3gstudent/Homework-of-Python/blob/master/vCenterLDAP_Manage.py
image.png

看似很轻松的操作,我开始按照提示先添加账号,再添加到管理组:
image.png
在添加到管理组的时候,和别的师傅不一定的点就是在这里发生了报错:
image.png

果然,登录的时候直接g。。。

3.5 重置密码(成功)

没有办法了,来重置密码吧,虽然还有其他的路子(菜)
充值秘密会修改管理员的密码,所以这个操作需要谨慎
首先查询域名,再在shell中执行重置密码的功能:
查询域名:

/usr/lib/vmware-vmafd/bin/vmafd-cli get-domain-name --server-name localhost

重置密码,在shell中执行:

/usr/lib/vmware-vmdir/bin/vdcadmintool

选择3,输入用户名:Administrator@xxxxx,然后回车即可:

image.png
终于,进入后台了,一共99台机器,其中那个dc机器也在里面:
image.png
到这就结束了吗?更大的困难还在后面。。。
眼看dc机器在里面,那就想办法登录上去,由于dc机器正在运行,且锁屏,所以就有了下文去想办法获取dc机器的hash

4. dc机器hash获取

在这里获取hash有两个大方向:

  • 做快照,下载快照,用Volatility来取证获取hash(适合流量无线和下载比较快的)
  • 做克隆,cd盘启动,抓hash

4.1 打快照下载法

这种适合网速不错、能短时间下载下来的。
image.png

然后再dc中找到自己的存储位置,再去找对应的存储,下载文件:
image.png

image.png
vmem文件下载下来:
image.png
当前下载非常的慢,所以找了一个winxp的试试:
获取信息,然后hashdump
image.png

image.png

4.2 克隆虚拟机法

在这里发现dc机器上锁屏了,而且是winserver2016的机器,那就试试克隆之后,使用cd引导来破除密码啥的,意思就是你电脑关机了,再开机的时候,先把usb或者cd启动,把密码抹掉,类似于我们使用的大白菜装机大师。

4.2.1 kon-boot文件上传

先看下dc机器的位置,把你做好的大白菜u盘(类比的说法而已)传上去,在这里传的是kon-bootiso文件。
image.png

可以从网上下载老版本的:

链接:https://pan.baidu.com/s/14_OP_nePf-HUlkZxzwXkXw 
提取码:k32k

image.png

思路是:
KON-BOOTiso镜像(非常的小)上传到vcenter的某一个磁盘中,克隆虚拟机,将克隆的CD/DVD处镜像更换成KON-BOOTiso文件,再启动。
image.png

在这里选择上传,当前上传的话,有几个说法,一个是需要下载安装vcenter的证书才能上传,否则无权限;另外一个说法是直接上传,如果失败的话,多上传几次。。。
在这里我没安装证书,而是直接上传的,一次就上去了(可能是因为文件很小)

image.png

4.2.2 克隆虚拟机

在这里选择克隆到虚拟机:
image.png

起个名字,然后放在下面,下一步:

image.png
随便放,下一步:

image.png

选择存储桶,在这选择刚上传iso文件的镜像,也是dc机器的硬盘,这样拷贝啥的快:

image.png
在这里选择克隆选项:
image.png
把网卡都取消:
image.png

image.png

此时就差不多了:

image.png
点击finish之后,克隆需要等待一会,因为要复制文件啥的,大概从1分钟到数分钟不等(取决于是什么盘,不知道为啥变成了2012的)
image.png

4.2.3 开启机器

在开启之前,编辑设置,对vm虚拟机设置:
image.png
添加虚拟机设置,我的没有cd驱动器选项,所以需要添加,如果你有的话,你就不需要添加:(不清楚刚刚的操作出了啥问题,反正检查下,保险点)

image.png

image.png
开机就会进入bios界面,选择cd优先启动之后,再使用 F10 保存。
开机之后,选择启动web控制台:
image.png

启动之后,在bios界面,使用+-符号来移动顺序,mac上只能用-来移动,将cd作为第一个,然后f10保存即可。
image.png

image.png

启动之后会有界面:
image.png

到这个界面之后,5下shift进入,也有空密码(相当于置空密码了)可以进入,但是这个估计不太行(win10以上的机器应该都不行)。
image.png
5次shift之后:
image.png
新建用户,然后登录:
image.png

目前是进去了,但是没法获取到里面其他用户的信息,所以需要重启挂载iso文件,读取hash
image.png

4.2.4 制作iso文件

刚刚挂载是为了进去,但是奈何win10以上的用户,没法置空密码进去,所以只能新建用户进去,但是无法获取原来的账密信息,所以需要挂载新的iso进去,在这里使用UltralISO制作iso启动盘:
参考方法:

https://blog.csdn.net/bcbobo21cn/article/details/116347346

因为很简单,就不截图了。
将原来的环境关机,替换iso文件:
image.png

配置之后,重启设备:
image.png

打开之后,就抓到了密码:
image.png

5. dc机器抓hash

在克隆机器登录dc机器之后,只能获取到一个system权限的shell,幸好里面使用的是Windows defender,如果用其他杀软的话,加用户都比较困难,在这里讨论下抓原机器hash的方法。

5.1 上线c2

在这里获取到一个systemshell之后,需要给该克隆的机器分配一个网络,如果可以的话,使用certutil或者是ps指令上线c2,再抓原来的密码,这个我没有试过,理论可行。
当然,也可以用certutil直接下载mimikatz来抓取hash(可能需要免杀)

5.2 抓注册表

这个方法是比较合理的,在4.2.4中只抓了当前用户的hash,无法抓取其他用户的hash,所以可以使用注册表方法抓取。

5.2.1 本地Windows10实验

为了验证可行性,在这里以本地Windows10环境为基础(后期补充的),操作看下,以下操作在本地:
目的是尝试抓取**admin**用户的**hash**
新建账号之后,使用新账号登录:
image.png

当前使用test用户登录,只能抓到登录账号的账密hash
image.png
但是如果对注册表操作的话,在这里对注册表操作:

reg save HKLM\SYSTEM system.hiv

reg save HKLM\SAM sam.hiv

reg save hklm\security security.hiv


在本地使用mimikatz执行:
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" exit

image.png

抓到了admin用户的hash,这就证实了对注册表操作是可以抓到原来用户的账密hash的。

5.2.2 注册表抓取

image.png

此时抓到了:
image.png

6. 总结

当前以confluenceweb漏洞,再到linux提权,再到vcenter的漏洞,再到机器的克隆和hash获取等,整个流程非常的漫长,而且磕磕绊绊的地方非常多,当然还有很多没有解决的问题:

  • 比如vcenter为啥没有添加上用户
  • 注册表抓hash为啥没有抓到当前登录用户
  • linux系统如何抓关键信息等等。。。

后续再慢慢学习吧,东西太多了。

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

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

相关文章

synchronized关键字

多线程编程中,最让人头疼的问题莫过于线程安全,如果对存在线程安全问题的代码不加以处理,可能会带来严重的后果,例如用两个线程对同一个变量进行增加操作 class Counter {//这个 变量 是两个线程要去自增的变量public int count;…

进程调度算法详解

进程调度算法🏞️1. 调度指标🌁2. 先进先出(FIFO)🌠3. 最短作业优先(SJF)🌌4. 最短剩余时间优先(STCF)🌿5. 新度量指标:响应时间&…

linux网络编程(四)多路I/O转接服务器

文章目录1.多路I/O转接服务器2.select 方式的多路I/O转接服务器3.poll 方式的多路I/O转接服务器4.epoll 方式的多路I/O转接服务器1.多路I/O转接服务器 多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接&#xf…

利用stream实现行政区域列表转tree树形结构

一、数据结构 CREATE TABLE t_districts (adcode bigint NOT NULL COMMENT 主键(区域编码)\r\n,pid varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 父级区域编码,name varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci D…

MySQL的Redo log 、Undo log、 Binlog

MySQL的redo log 、undo log、 binlog redo log概念 redo log翻译过来叫重做日志,是一种保证持久化的措施,innodb存储引擎的物理日志文件 redo log是固定大小的,是循环写的过程 有了redo log之后,innodb就可以保证即使数据库发…

数据存储介绍

数据存储对象包括数据流在加工过程中产生的临时文件或加工过程中需要查找的信息。数据以某种格式记录在计算机内部或外部存储介质上。数据存储要命名,这种命名要反映信息特征的组成含义。数据流反映了系统中流动的数据,表现出动态数据的特征;…

STM32个人笔记-电源管理

笔记来源于STM32F103VET6,野火指南者,中文参考手册,HAL库开发手册和b站的野火指南者视频。观看过好多次了,但往往理解得不够全面,现记下小笔记,用来回顾。属于个人笔记。 电源监控器 STM32芯片主要通过VDD…

代码审计基础之SQL注入漏洞

1.SQL注入原理 SQL注入就是攻击者通过把恶意的SQL语句插入到Web表单的输入页面中,且插入的恶意语句会导致原有的SQL语句发生改变,从而达到攻击者的目的去让它执行一些危险的数据操作,进一步欺骗服务器去执行一些非本意的操作。 简单来讲&am…

Python BeautifulSoup4 入门使用

一、简介 BeautifulSoup4 与 lxml 一样,是一个 html 解析器,主要功能也是解析和提取数据。 BeautifulSoup4 是 爬虫 必学的技能。BeautifulSoup 最主要的功能是从网页抓取数据,Beautiful Soup 自动将输入文档转换为 Unicode 编码&#xff0c…

Verilog语言中case、casex、casez的用法和区别

casez与casex语句是case语句的两种变体, 在写testbench时用到。case 语句是一种多路条件分支的形式,可以解决 if 语句中有多个条件选项时使用不方便的问题。 一、case、casex、casez的区别 下表给出case、casex、casez的真值表: 1)在case语…

【计算机网络实验】防火墙访问控制列表实验

实验内容 防火墙访问控制列表实验 实验目的 理解访问控制列表的工作原理;了解访问控制列表的类型;学习标准访问控制列表的配置。 实验要求 1 实验拓扑图 本实验所用的网络拓扑如图1所示。 图1 ACL实验拓扑结构 2 实验步骤 Router0配置;&…

解决 npm install express 遇到的问题总结

方法1:权限 以管理员身份运行cmd执行npm install express --save命令 方法2:切换镜像源 查看镜像源 npm config get registry 如果要直接更换淘宝:npm config set registry https://registry.npmmirror.com/ 使用nrm切换 1.安装nrm npm i …

106362-34-9,(D-Ala1)-Peptide T amide

肽t的有效类似物DAPTA (aSTTTNYT-amide)在单核/巨噬细胞中显示出很强的抗hiv - 1活性,该肽抑制病毒的进入。 编号: 110545中文名称: 肽T、(D-Ala1)-Peptide T amide英文名: (D-Ala1)-Peptide T amideCAS号: 106362-34-9单字母: H2N-DAla-STTTNYT-NH2三字母: H2N-DAl…

设计模式 — 抽象工厂模式

抽象工厂模式女娲的失误实例 一实例 二抽象工厂模式的应用抽象工厂模式的优点抽象工厂模式的缺点抽象工厂模式的使用场景抽象工厂模式的注意事项女娲的失误 女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型&#…

Spark框架概述

Spark 框架概述 1.1. Spark是什么 定义:Apache Spark是用于大规模数据处理的统一分析引擎。 弹性分布式数据集RDD是一种分布式内存抽象,其使得程序员能够在大规模集群中做内存运算,并且有一定的容错方式。而这也是整个Spark的核心数据结构…

体验静态代码块

定义 public class Game {// 静态代码块static {System.out.println("static...run...");}// 构造方法public Game() {System.out.println("game...construct...");} }使用 结论 静态代码块在类被首次加载的时候触发启动

效能优化实践:C/C++单元测试万能插桩工具

研发效能是一个涉及面很广的话题,它涵盖了软件交付的整个生命周期,涉及产品、架构、开发、测试、运维,每个环节都可能影响顺畅、高质量地持续有效交付。在腾讯安全平台部实际研发与测试工作中我们发现,代码插桩隔离是单元测试工作…

theos tweak导入自定义类

有时,我们使用tweak的时候需要用到自定义的类,那么怎么引用呢? 假设我们有一个自定义类,people.h/people.m 那么分两种情况: 情况一,直接使用官方的tweak工程: 目录结构一般如下: …

[第九篇]——Docker 镜像使用

Docker 镜像使用 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。 下面我们来学习: 1、管理和使用本地 Docker 主机镜像2、创建镜像列出镜像列表 …

蛋白纯化-实验设计

小 M 不怕纯化“难”,IP、WB 只等闲。泡了两年实验室的小 M,理论与实操经验共有,且看我如何闯过蛋白纯化的几道“关”。 第一关 产品选择 小 M 敲黑板:此关最基础也最重要,谨防“一步错,步步错”。 亲和层析…