BEA Weblogic多缓冲区溢出漏洞的问题

再weblogic多服务器部署中会出现内存缓冲区溢出的漏洞:

受影响系统: Netscape Enterprise Webserver (NES)
-----------------------------------
NSAPI Weblogic binaries are:
NES for UNIX - libproxy.so
NES for NT - proxy30.dll, proxy35.dll, proxy36.dll
- Solaris with NES versions 3.0 to 4.1
- AIX with NES 3.6
- HP-UX 10.20 with NES version 3.6
- HP-UX 11.00 with NES version 3.6
- Windows NT with NES versions 3.0 to 4.1

Internet Information Server (IIS)
---------------------------------
ISAPI Weblogic binaries are:
IIS - iisproxy.dll
- NT 4.0 with IIS 4.0

Apache Server
-------------
ISAPI Weblogic binaries are:
Apache for UNIX - mod_wl.so, mod_wl_ssl.so, mod_wl_ssl_raven.so
- Solaris with Apache Server 1.3.9, 1.3.12
- Linux with Apache Server 1.3.9, 1.3.12
- HP-UX 11.00 with Apache Server 1.3.9, 1.3.12
- C2Net Stronghold/3.0 and Covalent Raven/1.4.3
- C2Net Stronghold/3.0 and Covalent Raven/1.4.3
- C2Net Stronghold/3.0
- Linux with Apache Server 1.3.9, 1.3.12
- HP-UX 11.00 with Apache Server 1.3.9, 1.3.12
漏洞描述: BEA Syetems Inc. Weblogic服务器提供措施将它集成到第三方web服务器。这是通过一个插件来完成的,它允许第三方web服务器代理向Weblogic服务器的请求。象BEA文档中描述的那样,Netscape Enterprise Server、IIS和Apache均以动态链接库的形式支持插件。这些web服务器通过配置可以将请求servlets和JSP文件重定向到运行在同一个或不同主机的Weblogic服务器。BEA Weblogic服务器提供的这些插件存在几个缓冲区溢出,允许远程攻击者执行代理web服务器所在系统上的任意代码。
测试方法: 此程序只供研究使用,可能会对系统带来危害,不得用于其它用途!否则后果自负!
测试使用iPalnet Webserver Enterpris 4.1作为代理Web服务器。按照BEA文档,使用下面的servername/config/obj.conf文件将它配置成将.JSP请求重定向到不同主机上的Weblogic服务器:
obj.conf:
[... text deleted ...]
[...] Service method=(GET|HEAD|POST|PUT) type=text/jsp fn=wl-proxy WebLogicHost=weblogic WebLogicPort=7001
PathPrepend=/jspfiles [....]
[....]
上述配置将指导iPlanet Webserver使用提供的库(libproxy.so),将.JSP文件请求重定向到Weblogic服务器,它侦听在主机的7001/tcp端口。字符串'/jspfile'将插在送到Weblogic主机URL的前面。
例如,请求'http://webserver/test.jsp?my_parameter'将变成'http://weblogic:7001/jspfiles/test.jsp?my_parameter',然后发送到Weblogic服务器。
处理被代理的请求是由libproxy.so的wl_proxy函数进行的。在位置wl_proxy+1812,将调用strcat()连接obj.conf文件中指定的PathPrepend参数,这里没有对栈中分配的目的缓冲区进行边界检查。如果请求长度大于2100个字符,一个缓冲区溢出条件就会触发,任意代码就可以以运行代理web服务器用户的身份执行。
漏洞的攻击是困难的,因为溢出后某些放在栈中的自动变量被破坏,将会在执行ret指令前在wl_proxy+1896处被访问。
而且,代理web服务器将对收到的请求进行某些长度检查,所以不太可能发送任意长度的请求。然而代理web服务器的这个长度限制是充分允许一个攻击者进行攻击的。
攻击时,并不需要设置PathPrepend参数。
示例代码如下:
$ perl -e 'print "GET http://webserver/test.jsp?";print "A"x2200;
print " HTTP/1.0 "'|nc weblogic 80
解决方法: 对于所有OS平台上独立版本或者作为BEA WebLogic Enterprise 5.1一部分的BEA WebLogic Server 和 Express 5.1.x、4.5.x,升级集成于第三方web服务器的代理插件。软件包(800kb)。
文件包括用于Netscape Enterprise Server (NES),MicrosoftInternet Information Server (IIS),和Apache Web
servers代理插件的升级版本。保存计算的URI路径的缓冲区最大尺寸是2048字节。如果一个计算URI路径比缓冲区的尺寸大,代理插件就会按照HTTP 1.1规范向客户报告错误“414 - Request-URI Too Long”。

你可能感兴趣的:(weblogic)