目前在公开途径还没有看到利用JA反序列化漏洞控制开放HTTPS服务的weblogic服务器的方法,已公布的利用工具都只能控制开放HTTP服务的weblogic服务器。我们来分析一下如何利用JA反序列化漏洞控制开放HTTPS服务的weblogic服务器,以及相应的防护方法。
建议先参考 中关于weblogic的JA反序列化漏洞的分析。
如果某服务器需要对公网用户提供HTTPS服务,可以在不同的层次实现。
当使用SSL网关提供HTTPS服务时,网络架构如下图所示(无关的设备已省略,下同)。
SSL网关只会向后转发HTTP协议的数据,不会将T3协议数据转发至weblogic服务器,因此在该场景中,无法通过公网利用weblogic的JA反序列化漏洞。
当使用负载均衡提供HTTPS服务时,网络架构如下图所示。
安全起见,负载均衡应选择转发HTTP协议而不是TCP协议,因此在该场景中,也无法通过公网利用weblogic的JA反序列化漏洞。
当使用web代理(如apache、nginx等)提供HTTPS服务时,网络架构如下图所示。
web代理只会向后转发HTTP协议的数据,因此在该场景中,也无法通过公网利用weblogic的JA反序列化漏洞。
当使用weblogic提供HTTPS服务时,网络架构如下图所示。
weblogic能够接收到利用SSL加密后的T3协议数据,因此在该场景中,通过公网能够利用weblogic的JA反序列化漏洞。
根据上述分析,仅当HTTPS服务由weblogic提供时,才能够利用其JA反序列化漏洞。
利用weblogic的JA反序列化漏洞时,必须向weblogic发送T3协议头。为了能够利用提供SSL服务的weblogic的JA反序列化漏洞,需要首先分析当weblogic提供SSL服务时的T3协议格式。
SSL数据包为加密的形式,无法直接进行分析,需要进行解密。当已知SSL私钥时,可以利用Wireshark对SSL通信数据进行解密。
weblogic可以使用演示SSL证书提供SSL服务,也可以使用指定SSL证书提供SSL服务。
可以使用两种方法进行分析,一是使用weblogic提供的演示SSL证书进行分析,二是使用自己生成的SSL证书进行分析。
使用weblogic演示证书开放SSL服务
登录weblogic控制台,将AdminServer的“启用SSL端口”钩选,并填入SSL端口号。
查看AdminServer的密钥库配置,确认为“演示标识和演示信任”(Demo Identity and Demo Trust),可以看到演示密钥库的文件名为“DemoIdentity.jks”,演示信任密钥库文件名为“DemoTrust.jks”。
查看AdminServer的SSL配置,可以看到演示密钥库的私钥别名为“DemoIdentity”。
使用HTTPS方式登录weblogic控制台,确认可以正常登录。
生成weblogic演示证书的私钥文件
以下为weblogic演示密钥库的密码信息。修改weblogic默认ip
使用以下命令生成weblogic演示密钥库的私钥文件。
set keystore=DemoIdentity.jks set tmp_p12=tmp.p12 set storepass=DemoIdentityKeyStorePassPhrase set keypass=DemoIdentityPassPhrase set alias=DemoIdentity set pwd_new=123456 keytool -importkeystore -srckeystore %keystore% -destkeystore %tmp_p12% -srcstoretype JKS -deststoretype PKCS12 -srcstorepass %storepass% -deststorepass %pwd_new% -srcalias %alias% -destalias %alias% -srckeypass %keypass% -destkeypass %pwd_new% set out_pem=tmp.rsa.pem set final_pem=final.key openssl pkcs12 -in %tmp_p12% -nodes -out %out_pem% -passin pass:%pwd_new% openssl rsa -in %out_pem% -check > %final_pem%
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29809-1.html
我以FFF团的名义召唤你们
说得好