weblogic远程代码执行漏洞,漏洞号:CNVD-C-2019-48814
漏洞分析:
weblogic 的async_response组件用于为WebService提供异步通讯功能。远程访问用户可通过访问路径http://ip:端口/_async/AsyncResponseService获取webservice异步通讯服务信息。
Wsdl页模块部分信息如下:
<WL5G3N0:port binding="WL5G3N1:AsyncResponseServiceSoapBindinghttp" name="AsyncResponseService">
<WL5G3N2:address location="http://localhost:7001/_async/AsyncResponseService"/>
</WL5G3N0:port>
<WL5G3N0:port binding="WL5G3N1:AsyncResponseServiceSoapBindingjms" name="AsyncResponseServiceJms">
<WL5G3N2:address location="jms://localhost:7001/_async/AsyncResponseServiceJms"/>
通过soap (http)、jms协议远程直接调用服务。获取调用接口代码执行相关操作。
漏洞复现
访问/_async/AsyncResponseService来判断是否启用该组件。
影响版本:
Weblogic 10.3.x
Weblogic 12.1.x
Weblogic 12.2.x
影响版本、组件包及组件包路径:
影响版本 | 组件包 | 组件包路径 |
---|---|---|
Weblogic 10.3.x | bea_wls9_async_response.war | WLS_Home/wlserver_10.3/server/lib |
Weblogic 12.1.x | bea_wls9_async_response.war | WLS_HOME/wlserver_12.1/server/lib |
导Weblogic 12.2.x | com.oracle.webservices.wls.bea-wls9-async-response.war | WLS_HOME/oracle_common/modules |
漏洞处置建议
1.禁用bea_wls9_async_response组件
2.删除wls9_async_response的war包并重启
3.禁止访问 /_async/* 路径
4.目前oracle官方已提供最新补丁,补丁如下:
WLS Release | Required Patches |
---|---|
10.3.6.0 | Jan PSU 10.3.6.0.190115 Patch 28710912 + Overlay Patch 29694149 on 10.3.6.0.190115 for CVE-2019-2725 |
— | Apr PSU 10.3.6.0.190416 Patch 29204678 + Overlay Patch 29694149 on 10.3.6.0.190416 for CVE-2019-2725 |
12.1.3.0 | Jan 2019 PSU 12.1.3.0.190115 Patch 28710923 + Patch should be available on April 29, 2019 for CVE-2019-2725 |
- | Apr 2019 PSU 12.1.3.0.190416 Patch 29204657 + Patch should be available on April 29, 2019 for CVE-2019-2725 |
参考官网:Security Alert CVE-2019-2725 Patch Availability Document for Oracle WebLogic Server (文档 ID 2535708.1)
删除war包处理方式操作:
关闭正在运行的weblogic server;
删除<WL_HOME>/server/lib目录下的 uddi.properties, uddi.war,uddiexplorer.war ,bea_wls9_async_response.war,wls-wsat.war
*注意:步骤3和步骤4只在weblogic server曾经启动过并已经创建了tmp目录的情况下需要。
清除 <DOMAIN_HOME>/servers/<SERVER_NAME>/tmp/.internal 文件夹.
删除<DOMAIN_HOME>/servers/<SERVER_NAME>/tmp/_WL_internal下的文件夹 :uddi* ,bea_wls9_async_response,wls-wsat或者删除_WL_internal文件夹;
重新启动 server
注:一定要在测试环境测试,因为删除的包较多,把所有业务功能都测一遍,以防万一。
软件代理处理方式操作:
Apache 做代理,禁止访问某个目录:
在使用apache做为代理服务器的时候,配置文件为/etc/apache/conf/httpd.conf,具体配置文件位置根据实际安装位置确定。
配置禁用url路径:
<Directory ~ “^/_async/(.+/)*” />
Order allow,deny
Deny from all
</ Directory >
即禁止访问目录/_async/*
访问http://域名:port/_async跳转到403错误页面
####################################################
APACHE-HOME/conf/httpd.conf file
####################################################
LoadModule weblogic_module libexec/mod_wl_20.so
<Location /weblogic>
SetHandler weblogic-handler
PathTrim /weblogic
ErrorPage http://myerrorpage1.mydomain.com
</Location>
<Location /_async >
SetHandler weblogic-handler
PathTrim /_async
ErrorPage http://myerrorpage1.mydomain.com
</Location>
<IfModule mod_weblogic.c>
MatchExpression *.jsp
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
ErrorPage http://myerrorpage.mydomain.com
</IfModule>
Nginx 做代理,禁止访问某个目录
禁止对叫_async目录的访问并返回403 被禁止的,可以使用下面的配置:
location /_async {
deny all;
return 403;
}
F5及相关硬件代理,4层交换机以上代理及防火墙限制找相关专业配置。
总结:
根据最近这几年的漏洞情况分析,规律基本一致,在代理端禁用目录和设置IP过滤,可以避免很多已知的bug,甚至不需要在服务器端做其它操作。
-
代理端设置禁用目录,如:_async目录和/wls-wsat目录
访问方式:
http://域名:port/_async/*
http://域名:port//wls-wsat/* -
限制ip访问,如:服务器端通过iptable限制ip访问或weblogic console限制ip访问。