[翻译]McAfee ePolicy Orchestrator中的漏洞

> 原文链接:https://swarm.ptsecurity.com/vulnerabilities-in-mcafee-epolicy-orchestrator/
> 原文作者:Mikhail Klyuchnikov

今年8月，我在McAfee ePolicy Orchestrator（ePO）5.10.0版中发现了三个漏洞。McAfee ePO是一款软件，可帮助IT管理员统一来自McAfee和第三方解决方案的端点，网络，数据和合规性解决方案之间的安全管理。McAfee ePO提供了灵活的自动化管理功能，用于识别，处理和响应安全问题和威胁

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/af98ea20-e074-ca48-96e3-b5ea60fd1be8.png)

我的测试发现了三个漏洞：

1. CSRF + SSRF + MITM，如果成功利用，则允许未登录的攻击者在服务器上执行远程代码执行
2. ZipSlip攻击导致登录用户远程执行代码
3. 反射XSS

# CSRF + SSRF + MITM = RCE
该应用程序包含一个区域，管理员可以在其中验证数据库的可用性，该数据库随后可以用作主要数据存储。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/a2f879e3-0dc4-be8a-1868-6d14a6a0b065.png)
必须发送以下请求以测试连接：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/cf682e57-6918-5f4b-1749-cf0affa3c216.png)

该请求不包含任何针对CSRF攻击的保护。到目前为止，我们有一个漏洞，但是它不会影响安全性，因为该请求仅测试连接，并且不保存任何恶意设置。

但是请注意如何建立与数据库的测试连接。如果请求仅指定连接主机和端口，则应用程序将使用当前配置（包括用户名，密码和数据库名称）建立与指定服务器的连接。

为了演示这一点并查看数据库连接请求中包含的内容，我编写了一个简单的Python脚本。它将所有传入的请求转发到另一个主机（实际的ePO数据库），并将请求打印到屏幕上。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/d55dada0-6caa-eedc-9658-c3ba333a0896.png)
要利用此漏洞，我们需要修改发送到数据库的查询。因此，在MiTM脚本中，我们将字符串`SET TRANSACTION ISOLATION LEVEL READ COMMITTED`用`ALTER LOGIN [sa] WITH PASSWORD='P@ssw0rd';;;;`替换。

如果成功，sa密码会被改为`P@ssw0rd`。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/c71ea9d3-beca-b639-b060-2708def77a56.png)

现在，要利用整个CSRF + SSRF + MITM链，我们只需要创建一个HTML页面。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/2709b823-6266-490a-a288-b02f681f4173.png)

让我们将漏洞付诸行动。运行MITM脚本，在ePolicy Orchestrator管理面板中输入凭据，然后打开我们创建的HTML页面。如果一切都正确完成，我们可以使用凭据SA:P@ssw0rd连接到数据库。结果如下：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/063532b1-7e35-0d69-dd94-9e3f6ed2cb33.png)

成功连接到数据库后，我们可以运行任意系统命令。

总之，攻击包括五个部分：

1. 管理员打开一个恶意HTML页面。
2. 冒充管理员的POST请求发送到/core/config，这导致目标服务器连接到MITM服务器。
3. MITM服务器代理到SQL Server的所有流量（它应该可以从外部访问），并注入一个SQL查询来更改用户SA的密码。
4. 攻击者使用SA用户名和新设置的密码连接到SQL Server。
5. 攻击者现在可以运行任意服务器命令。

供应商回复：“McAfee已经查看了代码库，我们相信此问题已在2019年11月12日发布的累积更新（CU）5中得到解决。”

# 登录后的RCE
我在软件扩展组件(/core/orionNavigationLogin.do#/core/orionTab.do?sectionId=orion.software&tabId=orion.extensions)中发现了该漏洞，该漏洞仅由经过身份验证的用户访问。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/83d900ec-963d-aa62-b0da-72620842090d.png)

该页面提示上传扩展名，该扩展名应该是ZIP格式的文件。我不知道应用程序将档案识别为真正的扩展所必需的档案结构，因此在这一点上，我没有尝试上传任何恶意扩展。但是在测试过程中遇到存档上传功能时，我总是检查ZipSlip漏洞。

ZipSlip漏洞是一种路径遍历类型，如果未正确清理打包文件的名称，则在解压缩归档文件时会发生此漏洞。攻击者可以创建名字中包含"../"的文件，从而有可能在档案提取过程中将任意文件上传到任意目录或覆盖现有文件。

为了检查这种漏洞，我们将使用evilarc生成包含file的档案../test.txt。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/cb38931a-04e3-c698-c0fa-02feddfa2566.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/97364bb3-6abb-cf41-22c7-0a98ad0ef3e6.png)

然后将生成的ZIP存档作为扩展名上传，并尝试在文件系统中找到它。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/c6b449be-f53e-2526-df02-fb26275c0aa1.png)

我们可以看到测试文件位于文件夹中D:\Program Files\McAfee\Server\extensions\tmp\。Web服务器的根文件夹是D:\Program Files\McAfee\Server\webapps\ROOT，因此现在我们知道生成包含Web Shell（stat.jsp）的存档所需的相对路径，该存档将通过ZipSlip提取到服务器的Web根文件夹中：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/a51afa0b-a32d-9b0b-9928-f960109a5f46.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/9722631a-2dd7-0102-df19-92a46026ade4.png)

上载JSP shell时，我们使用Unicode对其进行编码，以便Windows Defender不会将其删除。

现在，只需上传PoC.zip作为扩展名，然后检查运行中的Web Shell。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/3572dc15-a439-5104-1f5c-37bb3bd15965.png)

结果是我们可以运行任意OS命令。

供应商回复：“我们不认为这是RCE，因为允许ePO用户界面中的管理员为其产品安装扩展。McAfee当前认为，当ePO管理员安装扩展程序时，您所描述的方案可以按预期工作。”

# Reflected XSS
为了进行利用，只需转到地址`/PolicyMgmt/policyDetailsCard.do?poID=19&typeID=3&prodID=%27%22%3E%3Csvg%2fonload%3dalert(document.domain)%3E`，作为概念证明，您将看到一个包含document.domain值的弹出窗口。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/aa488735-4123-9201-6228-9571ad34d527.png)
供应商回复：“再次感谢您抽出宝贵时间向McAfee报告此问题。CVE-2020-7318已分配。”


# 译者总结
1. CSRF诱使管理员修改数据库密码 xp_cmdshell RCE，可能导致edr崩溃。
2. zip解压目录穿越getshell，需要登录的RCE。
3. 反射XSS