BUGTRAQ ID: 32189
Openfire(原名为Wildfire)是一个采用Java开发的跨平台开源实时协作(RTC)服务器。
Openfire服务器中的多个安全漏洞可能允许攻击者在操作系统上执行任意代码,具体取决于特定的运行时环境。
1) 绕过认证
在对openfire管理接口的认证中,Tomcat应用服务器中的过滤器org.jivesoftware.admin.AuthCheckFilter确保仅有通过认证的用户才可以访问管理接口,否则将会被重新定向到登录页面。Openfire中的一个错误可能导致无需管理用户凭据便访问内部功能。
部署描述符(web.xml)配置了一些AuthCheckFilter的exclude值:
<filter>
<filter-name>AuthCheck</filter-name>
<filter-class>org.jivesoftware.admin.AuthCheckFilter</filter-class>
<init-param>
<param-name>excludes</param-name>
<param-value>login.jsp,index.jsp?logout=true,setup/index.jsp,
setup/setup-,.gif,.png,error-serverdown.jsp</param-value>
</init-param>
</filter>
如果请求URL包含有任意Exclude字符串的话,就可以绕过检查机制。
2) SQL注入
sipark-log-summary.jsp中的type参数存在跨站脚本漏洞:
String type = ParamUtils.getParameter(request, "type");
org.jivesoftware.openfire.sip.calllog.CallLogDAO的getCalls()函数处理这个用户输入(SQLCondition)并创建SQL语句:
String sql = "SELECT * FROM sipPhoneLog";
sql = SQLCondition != null && !SQLCondition.equals("") ?
sql + " WHERE " + SQLCondition : sql;
sql += " ORDER BY datetime DESC";
在411行CallLogDAO的createScrollablePreparedStatement()方式执行这个语句:
return con.prepareStatement(sql);
由于在传送给语句对象之前动态的连接了字符串SQL,这可能导致SQL注入漏洞。
3) 跨站脚本
login.jsp的url参数和username参数存在跨站脚本漏洞,攻击者可以操控这些参数指定认证后用户将被转发到的目的地。
Ignite Realtime Openfire <= 3.6.0a
临时解决方法:
* 在防火墙阻断tcp/9090和tcp/9091端口。
厂商补丁:
Ignite Realtime
---------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
<a href=http://www.igniterealtime.org/downloads/index.jsp#openfire target=_blank>http://www.igniterealtime.org/downloads/index.jsp#openfire</a>
暂无评论