Anonymous 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 本文记录从零开始搭建VMware Workspace ONE Access漏洞调试环境的细节。 0x01 简介 本文将要介绍以下内容: VMware Workspace ONE Access安装 VMware Workspace ONE Access漏洞调试环境配置 常用知识 0x02 VMware Workspace ONE Access安装 参考资料: https://份文件。VMware。com/en/VMware-Workspace-ONE-Access/20.01/Workspace _ ONE _ Access _ install。可移植文档格式文件的扩展名(portable document format的缩写) 1.下载OVA文件 下载页面: https://customerconnect.vmware.com/downloads/search?查询=工作空间一次访问 下载前需要先注册用户,之后选择需要的版本进行下载 VMware Workspace ONE访问21.08.0.1的下载页面:https://customerconnect.vmware.com/downloads/details?下载group=WS1A _ on prem _ 210801产品id=1269 下载文件身份管理器-21.08.0.1-19010796_OVF10.ova 2.安装 (1)在VMware Workstation中导入OVA文件 注: VMware工作站版本需要大于14,否则报错提示无法导入 在安装页面设置主机名,如果配置了DHCP,其他选项不用设置,我的配置指定了静态IP,配置如下图 等待卵细胞(卵子的复数)文件导入完成后,将会自动开机进行初始化,初始化完成后如下图 (2)配置 修改本机的主机文件,将192.168.1.11指向workspaceone.test.com 访问配置页面https://workspaceone.test.com:8443 设置管理员、超级用户和sshuser用户的口令,口令需要包含大写字母、小写字母、数字和特殊字符 注: 我的测试结果显示,口令长度需要设置为14,否则无法登陆根和sshuser用户 我的测试环境设置口令为密码@12345,如下图 设置数据库,为了便于环境搭建,这里选择内部数据库 等待安装完成,如下图 3.设置允许root用户远程登录ssh 需要登录VMware Workspace ONE Access,修改系统的配置文件,有以下两种登录方法: (1)在虚拟机中直接登录root用户 选择登录,输入根和口令密码@12345 (2)通过ssh登录sshuser用户 登录后再切换至根 切换至根用户后,依次执行以下命令: vi /etc/ssh/sshd_config 设置PermitRootLogin从不变为是 系统ctl重新启动sshd 4.开启远程调试功能 修改文件:/opt/VMware/horizon/workspace/bin/setenv。嘘 修改参数JVM_OPTS,添加参数:-agent lib:jdwp=transport=dt _ socket,server=y,suspend=n,address=8000 如下图 重新启动系统 打开防火墙:iptables -P输入接受iptables -P输出接受 想法设置远程调试参数,如下图 注: 想法的完整配置方法可参考之前的文章《Zimbra漏洞调试环境搭建》 0x03 常用知识 1.常用命令 查看系统服务状态:chkconfig - list 查看所有服务状态:系统控制状态 查看互联网协议(互联网协议)地址:ip地址显示 查看主机名:主机名 日志路径:/opt/VMware/horizon/workspace/logs/ 2.查看系统版本 需要根权限执行命令:瓦米克利版本-设备 查看系统版本的实现细节: #!/usr/bin/env python2 导入系统 sys。路径。append('/opt/VMware/lib/python/site-packages/') 导入pywbem def getCIMConnection (url,命名空间): cred={} cred['证书文件']='/opt/VMware/etc/sfcb/client。' PEM ' cred[' key _ file ']='/opt/VMware/etc/sfcb/file。' PEM ' cliconn=pywbem .WBEMConnection (url,无,命名空间,凭据) 返回控制台 def showVersion(): 尝试: CLI conn=getCIMConnection(' https://localhost:5489 ',' root/cimv2 ') esis=cliconn .枚举实例(' VAMI _元素软件身份) 除了: 打印("错误") 返回 对于esis中的esi: ess=ESI[' ElementSoftwareStatus '] if (ess==[2,6]): inst=cliconn .GetInstance (esi['Antecedent']) 打印('版本-'本['版本字符串']) 打印('描述-'本['描述']) showVersion() 需要根权限是因为访问文件/opt/VMware/etc/sfcb/client。PrivacyEnhancedMail增强的私密电子邮件和/opt/vmware/etc/sfcb/file.pem需要根权限 3.数据库连接口令 连接数据库的明文口令位置为:/usr/local/horizon/conf/db.pwd 连接数据库的口令加密保存在文件/usr/local/horizon/conf/runtime-config。性能中,文件内容示例: 数据存储。JDBC。URL=JDBC:PostgreSQL://localhost/SaaS?stringtype=未指定 datastore.jdbc。用户名=地平线 安全。数据存储。JDBC。密码=baa cs 8 MW 1 xy me 7/8上D2 qwtg 3 MW 37 wf 1/1 pq 6d 09 xxqf 56 ncfrtcun 6y 8 a1 xftjajhu 60v 1 qnyncoxk 3t 1m 0 dv 0 jva== 其中,baa cs 8 MW 1 xyme 7/8 ond 2 qwtg 3 MW 37 wf 1/1 pq 6d 09 xxqf 56 ncfrtcun 6y 8 a 1 xftjajhu 60v 1 qnyncoxk 3t 1m 0 dv 0 jva==为加密口令 需要以下文件作为解密密钥: /usr/local/horizon/conf/config密钥库。及格 /usr/local/horizon/conf/config密钥库。bcfks 4.数据库中的加密信息 管理用户的口令加密存储在数据库中 查询命令:saas=从"密码信息"中选择"密码验证数据"; 查询结果如下图 加密的主要实现代码1: 私有字符串AES _ encrypt(@非空字节[]清除数据,@非空字节[]键,@非空加密算法封装)抛出EncryptionServiceException { 先决条件。checknotnull(清除数据); 先决条件。checknotnull(key); 前提条件。checknotnull(encAlg); 预测词典。检查参数(清除数据。长度!=0); 尝试{ 字符串密码name=en calg。获取密码名(); 密码密码=密码。getinstance(密码名,提供者); int nonce size=encalg。getnonce大小(密码。get block size()); IvParameterSpec ivSpec=null 字符串encodedIv if (nonceSize 0) { 字节[] iv=新字节[随机数大小]; srand。next bytes(iv); iv spec=new IvParameterSpec(iv); encodedIv=新字符串(十六进制编码(四),标准字符集.US _ ASCII); }否则{ 编码div= } if (encAlg.forcePadding()) { 清除数据=数组实用程序。add(清除数据,(字节)1); } secret key secret=new secret key spec(密钥,密码名); cipher.init(1,secret,ivSpec,srand); byte[]data=密码。做final(清除数据); 字符串输出=整数。tostring(4)':' encode div ':'新字符串(十六进制。编码(数据),标准字符集.US _ ASCII); 返回输出; } catch(InvalidKeyException | BadPaddingException | IllegalBlockSizeException | InvalidAlgorithmParameterException | nosuchpaddingeexception | nosuchalgorithm exception | FipsUnapprovedOperationError var 12){ log.error('无法用俄歇电子能谱加密:' var 12。getmessage()); 抛出新的EncryptionServiceException(var 12); } } 加密的主要实现代码2: 字符串加密数据=整数。tostring(1)',' encKey.getSafeUuid().toString()',' this .AES_encrypt(clearData,aesKey,en calg); 5.8443端口登录口令 登录口令加密保存在文件/usr/local/horizon/conf/config-admin。JSON 加密的主要实现代码: 私有空设置密码(字符串新密码,布尔isSet)引发AdminAuthException { int IC=this。passwordtauthenticationutil。getic(iterationCountBase,iteration count range); 尝试{ string newEncryptedPassword=this。密码验证实用程序。创建pwinfo(' admin ',' admin ',ic,新密码); password info new password info=新密码信息(newEncryptedPassword,isSet); if (this.passwordInfo!=null) { newpasswordinfo。setattemptdelay(这个。密码信息。getattemptdelay()); 新密码信息。setmaxpathtcount(this。密码信息。getmaxpathtcount()); } 对象映射器。写值(这个。passwordinfofile,newPasswordInfo); } catch(io异常| EncryptionServiceException var 7){ 抛出新的AdminAuthException('设置密码失败var7.getMessage(),var 7); } 尝试{ 这个。loadencryptedpasswordfromfile(); } catch (IOException var6) { 抛出新的AdminAuthException('未能加载存储的密码var6.getMessage(),var 6); } } 0x04 小结 我们设置好VMware Workspace ONE Access的漏洞调试环境后,就可以开始学习漏洞和数据库密码的解密方法了。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子