希望能帮到你!
weblogic12没使用过
weblogic10是bea\user_projects\domains\yourdomain\applications,应该差不了多少!
out.println(path)%>
使用浏览器访问上述jsp文件,可以看到对应的类所在的jar包的完整路径。
通过上述方法查找“org.apache.commons.collections.map.TransformedMap”所在的jar包,示例如下。
不同版本的weblogic对Apache Commons Collections组件的使用
“org.apache.commons.collections.map.TransformedMap”所在的weblogic的jar包信息如下。
weblogic版本
TransformedMap类所在jar包路径
9.2
无
10.2.1(weblogic 10g)、10.3.4(weblogic 11g)
weblogic安装目录的modules/com.bea.core.apache.commons.collections_3.2.0.jar
12.1.3(weblogic 12c)
weblogic安装目录的wlserver/modules/features/weblogic.server.merged.jar
由于weblogic 9.2未包含TransformedMap类,因此无法触发反序列化漏洞,weblogic 10g、weblogic 11g、weblogic 12c均包含TransformedMap类,因此会触发反序列化漏洞。
0x04 漏洞修复
漏洞修复思路
weblogic的默认服务端口为7001,该端口提供了对HTTP(S)、SNMP、T3等协议的服务。由于weblogic的不同协议均使用一个端口,因此无法通过防火墙限制端口访问的方式防护JAVA反序列化漏洞。
在绝大多数应用的使用场景中,用户只需要在公网能够使用HTTP(S)协议访问web应用服务器即可。对于weblogic服务器,在绝大多数情况下,只需要能够在公网访问weblogic提供的HTTP(S)协议的服务即可,并不需要访问T3协议。
少数情况下,运维人员需要使用weblogic的T3协议:
在weblogic服务器本机执行weblogic的停止脚本;
通过WLST对weblogic进行脚本化配置;
编写使用T3协议通信的程序对weblogic进行状态监控及其他管理功能。
T3协议与HTTP协议均基于TCP协议,T3协议以"t3"开头,HTTP协议以“GET”、“POST”等开头,两者有明显的区别。
因此可以限定只允许特定服务器访问weblogic服务器的T3协议,能够修复weblogic的JAVA反序列化漏洞。即使今后发现了weblogic的其他类存在JAVA反序列化漏洞,也能够防护。
若将weblogic修复为发送T3协议时要求发送weblogic的用户名与密码,也能够修复weblogic的反序列化问题,但会带来密码如何在weblogic客户端存储的问题。
无效的漏洞修复方法
首先尝试将应用部署到非管理Server中,判断其服务端口是否也提供T3协议的服务。
AdminServer是weblogic默认的管理Server,添加一个名为“Server-test”的非管理Server后,weblogic的服务器信息如下。管理Server与非管理Server使用不同的监听端口,可将j2ee应用部署在非管理Server中,这样可以使weblogic控制台与应用使用不同的端口提供服务。
经测试,新增的非管理Server的监听端口也提供了T3协议的服务,也存在JAVA反序列化漏洞。因此这种修复方式对于JAVA反序列化漏洞无效,但可将weblogic控制台端口与应用端口分离,可以使用防火墙禁止通过公网访问weblogic的控制台。
websphere的服务端口
我们来看另一款使用广泛的企业级JAVA中间件:websphere的服务端口情况。从下图可以看到,websphere的应用默认HTTP服务端口为9080,应用默认HTTPS服务端口为9443,控制台默认HTTP服务端口为9060,控制台默认HTTPS服务端口为9043,接收JAVA序列化数据的端口为8880。因此只要通过防火墙使公网无法访问websphere服务器的8880端口,就可以防止通过公网利用websphere的JAVA反序列化漏洞。
网络设备对数据包的影响
对安全有一定要求的公司,在部署需要向公网用户提供服务的weblogic服务器时,可能选择下图的部署架构(内网中不同网络区域间的防火墙已省略)。
上述网络设备对数据包的影响如下。
IPS
IPS可以更新防护规则,可能有厂家的IPS已经设置了对JAVA反序列化漏洞的防护规则,会阻断恶意的JAVA序列化数据包。
防火墙
这里的防火墙指传统防火墙,不是指下一代防火墙,仅关心IP与端口,不关心数据包内容,无法阻断恶意的JAVA序列化数据包。
WAF
与IPS一样,能否阻断恶意的JAVA序列化数据包决定于防护规则。
web代理
仅对HTTP协议进行代理转发,不会对T3协议进行代理转发。
负载均衡
可以指定需要进行负载均衡的协议类型,安全起见应选择HTTP协议而不是TCP协议,只对HTTP协议进行转发,不对T3协议进行转发。
根据以上分析可以看出,web代理和负载均衡能够稳定保证只转发HTTP协议的数据,不会转发T3协议的数据,因此能够防护JAVA反序列化漏洞。
如果在公网访问weblogic服务器的路径中原本就部署了web代理或负载均衡,就能够防护从公网发起的JAVA反序列化漏洞攻击。这也是为什么较少发现大型公司的weblogic反序列化漏洞的原因,其网络架构决定了weblogic的JAVA反序列化漏洞无法在公网利用。
可行的漏洞修复方法
部署负载均衡设备
在weblogic服务器外层部署负载均衡设备,可以修复JAVA反序列化漏洞。
优点
缺点
对系统影响小,不需测试对现有系统功能的影响
需要购买设备;无法防护从内网发起的JAVA反序列化漏洞攻击
部署单独的web代理
在weblogic服务器外层部署单独的web代理,可以修复JAVA反序列化漏洞。
优点
缺点
同上
同上
在weblogic服务器部署web代理
不知道你用的weblogic6还是77的话,这里有配置的详细说明
1.安装Weblogic 7.0,WLS_HOME=c:\bea,则server将安装在WLS_HOME\weblogic700。
2.执行配置向导(Configuration Wizard),
1)Choose Domain Type And Name:
选择 WLS Domain.
2)Choose Server Type:
a.Single Server
b.Admin Server with Managed Server(s)
c.Admin Server with Cluster Managed Server(s)
d.Managed Server
说明:
a.单机版(试用于学习者使用)
b.类似于6.1版本的默认安装,是Managed Server和Admin Server集成在一起。(用于远端控制,其他的Server之用)
c.集群Server 和 Admin Server 集成在一起。(只有特大的系统才会用到)
d.单纯的Managed Server 。(只作业务,不做管理,本地不保存config.xml信息)
鉴于这里大部分人都是自学,所以我选择Single Server。
3)Choose Domain Location:默认是WLS_HOME\user_projects\,我选默认,该过后有没有问题,我不知道。
4)
ServerName :DittyServer,
Server Listen Address: 对于单机版不用写,默认是localhost,如果想写可以写自己的IP。
Listen Port:7001默认
SSL Listen Port:7002默认
5)Create System User Name and Password:这里与6.1不同,系统用户不再是system,用户可以自行定义,我在这里还用system
username:system
password:weblogic
6)Install Sever as Windows Service: NO!(意思是将其加到系统的服务列表内,有系统自动启动,还是手动控制比较灵活!)
7)Install Domain into Start Menu : NO!
8)Create
9)End
3.修改启动脚本,WlS_HOME\user_projects\mydomain\startWebLogic.cmd
set WLS_USER=DittyServer
set WLS_PW=weblogic
set STARTMODE=false
4.启动:执行刚才修改的startWebLogic.cmd
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)