跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

虚拟环境开发指南2——vSphere Web服务应用程序接口

精选回复

发布于

0x00 前言

在上篇文章《vSphere开发指南1——vSphere Automation API》 介绍了通过虚拟空间自动化应用程序接口实现vCenter Server同虚拟机交互的方法,但是虚拟空间自动化应用程序接口有些操作不支持低版本的vCenter(

0x01 简介

本文将要介绍以下内容:

vSphere Web服务应用程序接口开发细节

已开源工具尖锐球的分析

开源代码vSphereWebServicesAPI _ manage。巴拉圭

0x02 vSphere Web Services API开发细节

参考文档:

https://code.vmware.com/apis/968

https://代码。VMware。com/docs/11721/VMware-VSP here-we B-services-SDK-编程指南

计算机编程语言实现代码的参考资料:

https://github.com/vmware/pyvmomi-community-samples

为了提高效率,这里我们基于Python SDK pyvmomi进行实现

具体细节如下:

(1)登录操作

调用智能连接,传入用户名和明文口令

具体细节可在安装pyvmomi后,从文件/lib/site-packages/py vim/connect。巴拉圭中查看

(2)查看虚拟机配置

通过创建ContainerView托管对象进行查询

相比于vSphere Automation API,获得的内容更加全面

例如这里是VSP自动化-sdk-python不支持获得每个虚拟机对应的UUID,但可以通过pyvmomi获得

####(3)向虚拟机发送文件

使用方法InitiateFileTransferToGuest,需要传入以下六个参数:

vm,指定要操作的虚拟机

auth,登录虚拟机的凭据

guestFilePath,向虚拟机发送的文件保存路径

文件属性,向虚拟机发送的文件属性

文件大小,文件大小

覆盖,指定是否覆盖

执行成功后,返回文件对应的上呼吸道感染

使用放方法访问uri,数据字段为发送的文件内容,这里的文件内容需要使用二进制格式进行发送

具体实现代码如下:

def UploadFileToVM(api_host,用户名,密码,虚拟机名称,来宾用户名,来宾用户密码,本地路径,来宾路径):

service _ instance=smart connect(host=API _ host,user=用户名,pwd=密码,port=443,disableSslCertValidation=True)

如果不是服务实例:

引发SystemExit('[!]无法使用提供的凭据连接到主机。)

creds=vim。VM。客人。名称密码验证(用户名=来宾用户名,密码=来宾用户密码)

用打开(本地路径,' rb ')作为文件_对象:

data_to_send=file_obj.read()

尝试:

内容=服务实例RetrieveContent()

vm=get_obj(内容,[vim .虚拟机器],虚拟机名称)

如果不是虚拟机:

引发系统退出('找不到虚拟机。)

文件属性=vim。VM。客人。文件管理器。文件属性()

profile _ manager=内容。guestoperationsmanager。文件管理器

res=profile_manager .InitiateFileTransferToGuest(虚拟机,凭证,来宾路径,文件属性,长度(数据发送),真)

打印('[ ]传输uri:“RES”

标题={

用户代理”:“Mozilla/5.0(X11;Linux x86 _ 64rv:52.0)壁虎/20100101火狐/52.0 ',

}

r=requests.put(res,headers=headers,data=data_to_send,verify=False)

如果r .状态代码==200:

打印('[ ] ' r.text)

否则:

打印('[!]'字符串(状态代码))

打印(正文)

退出(0)

除了vmodl .方法错误为错误:

打印('[!]捕获到vmodl错误:' error.msg)

(4)从虚拟机下载文件

使用方法InitiateFileTransferFromGuest,必须传入以下三个参数:

vm,指定要操作的虚拟机

auth,登录虚拟机的凭据

guestFilePath,需要下载的虚拟机文件路径

执行成功后,返回指定文件对应的上呼吸道感染

使用得到方法访问uri,在获取文件内容时需要区分文本格式和二进制格式,文本格式可以使用r。文本读取,二进制格式可以使用r。内容读取

具体实现代码如下:

def DownloadFileFromVM(api_host,用户名,密码,虚拟机名称,来宾用户名,来宾用户密码,来宾路径,类型):

service _ instance=smart connect(host=API _ host,user=用户名,pwd=密码,port=443,disableSslCertValidation=True)

如果不是服务实例:

引发SystemExit('[!]无法使用提供的凭据连接到主机。)

creds=vim。VM。客人。名称密码验证(用户名=来宾用户名,密码=来宾用户密码)

尝试:

内容=服务实例RetrieveContent()

vm=get_obj(内容,[vim .虚拟机器],虚拟机名称)

如果不是虚拟机:

引发系统退出('找不到虚拟机。)

profile _ manager=内容。guestoperationsmanager。文件管理器

res=profile_manager .InitiateFileTransferFromGuest(虚拟机,信用凭证,来宾路径)

打印('[ ]传输uri:“RES . URL”

print(' size: ' str(res.size))

标题={

用户代理”:“Mozilla/5.0(X11;Linux x86 _ 64rv:52.0)壁虎/20100101火狐/52.0 ',

}

r=requests.get(res.url,headers=headers,verify=False)

如果r .状态代码==200:

如果type=='text ':

打印('[ ]结果: ')

打印(正文)

否则:

打印('[ ]将结果另存为temp . bin’)

用打开(' temp.bin ',' wb ')作为文件_对象:

文件_对象.写入(内容)

否则:

打印('[!]'字符串(状态代码))

打印(正文)

退出(0)

除了vmodl .方法错误为错误:

打印('[!]捕获到vmodl错误:' error.msg)

0x03 已开源工具SharpSphere的分析

https://github.com/JamesCooteUK/SharpSphere

c#开发,与钴罢工兼容

支持以下功能:

作为C2服务器

代码执行

文件上传

文件下载

查看虚拟机配置

倾销内存

其中,转储内存的实现流程如下:

获得虚拟机快照,如果没有就创建快照文件(.vmem)

将快照下载到本地,通过创建文件上呼吸道感染的方式进行下载

通过WinDbg和米米卡茨解析快照文件,导出lsass进程中的凭据

目前暂不支持对Linux操作系统操作系统虚拟机的操作

在实际使用过程中,如果遇到以下错误:

错误:向https:///发出超文本传送协议请求时出错。这可能是因为服务器证书没有使用超文本传送协议正确配置106 . HTTPS案中的系统.这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。

可以尝试添加以下代码解决:

系统. net。servicepointmanager。安全协议=系统.网。安全协议类型。TLS 12

0x04 开源代码

完整的开源代码已上传至github,地址如下:

https://github。com/3g student/home-of-Python/blob/master/vSphereWebServicesAPI _ manage。巴拉圭

代码适用版本:没有限制

支持以下功能:

读取虚拟机的配置

查看虚拟机文件

删除虚拟机文件

向虚拟机上传文件

从虚拟机下载文件

在虚拟机中执行命令

具体命令如下:

ListVM

GetVMConfig

列表主机

ListVMProcess

CreateVMProcess

KillVMProcess

ListVMFolder

DeleteVMFile

DownloadFileFromVM

UploadFileToVM

其中,对于虚拟机的操作,支持Windows操作系统操作系统和Linux操作系统操作系统系统

0x05 小结

本文介绍了通过vSphere Web服务应用程序接口实现vCenter Server同虚拟机交互的方法,开源实现代码vSphereWebServicesAPI _ manage。py,记录开发细节。

对于vSphere Web服务API,通用性更强,但是由于基于软件开发工具包(软件开发工具包)进行开发,导致编译出来的工具体积较大。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。