当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2012-010635

漏洞标题:乐视网众多web容器配置失误,导致核心应用架构及敏感信息暴露

相关厂商:乐视网

漏洞作者: shine

提交时间:2012-08-06 16:27

修复时间:2012-09-20 16:27

公开时间:2012-09-20 16:27

漏洞类型:系统/服务运维配置不当

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-08-06: 细节已通知厂商并且等待厂商处理中
2012-08-06: 厂商已经确认,细节仅向厂商公开
2012-08-16: 细节向核心白帽子及相关领域专家公开
2012-08-26: 细节向普通白帽子公开
2012-09-05: 细节向实习白帽子公开
2012-09-20: 细节向公众公开

简要描述:

这是个常见的问题,但很容易忽视它危害,今天发现乐视网的此问题比较典型,说明总结一下。

详细说明:

首先看一个以前典型的case:
WooYun: 去哪儿任意文件读取(基本可重构该系统原工程)
或哥这篇粗糙的文章:
http://hi.baidu.com/shine%5F%C9%C1%C1%E9/blog/item/7d7d57445f523a4384352468.html


漏洞证明:


通常在做反向代理、负载均衡或集群等情况时,都会使用两种或多种不同web容器搭配使用(特别在j2ee应用上体现更明显(如:Ngnix + Tomcat ;Apache + Tomcat)),由于配置不当,造成上述问题,昨天发现此问题的站点就不下上百个,今天发现你们应用尤其鲜明:


首先看这个:
http://enp.letv.com/WEB-INF/web.xml (指向同一ip的域名比较多哦!所以很多Struts2远程代码执行的漏洞都在这一ip找到的!这个有人提醒给你们的,好象你们不是很重视!)



可浏览web.xml是会导致整个应用结构暴露的,这是j2ee的一个特点,同时加上使用的MVC模式的开源常用框架,所以文件读取尤其简单了,各个配置文件被读取也简单了。
http://enp.letv.com/WEB-INF/classes/struts.xml
http://enp.letv.com/WEB-INF/classes/struts_manager.xml
http://enp.letv.com/WEB-INF/classes/struts_user.xml
http://enp.letv.com/WEB-INF/classes/struts_ad.xml
http://enp.letv.com/WEB-INF/classes/application_config.xml



其他文件及敏感信息不一一列举了,看个你们防Struts2远程代码执行的一个拦截器源代码:


EnpFilter.java

package com.letv.enp.web;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EnpFilter extends HttpServlet
implements Filter
{
private static final long serialVersionUID = -3887911983201144807L;
public final void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
if (request.getParameterMap().size() > 0) {
Set set = request.getParameterMap().keySet();
boolean auth = false;
for (String key : set)
{
if ((key.indexOf("#") > -1) || (key.indexOf("\\u0023") > -1) || (key.indexOf("\\43") > -1) || (key.indexOf("\\043") > -1)) {
auth = true;
break;
}
}
if (auth) {
response.sendRedirect("http://enp.letv.com");
return;
}
}
chain.doFilter(servletRequest, servletResponse);
}
public void init(FilterConfig arg0)
throws ServletException
{
}
}


对两种带有“#”关键编码方式的拦截,喜欢绕过的童子们,绕绕看!


接下再看两处:
第一个:http://220.181.117.74/letv/WEB-INF/web.xml
这个就不多说了,懒得去看了!



重点说接下来的这个:http://passport.letv.com/
另个造成这一问题的典型case,这个直接是目录浏览。当看到这个应用的域名时,哥瞬间被战术性击倒,相信你们的系统架构师也同样如此。




统一登录应用,它暴露的的东西就太多了(重复一句,在j2ee应用尤其明显),其他就不多说了,只说j2ee暴露的典型问题。


http://passport.letv.com/WEB-INF/web.xml
查看配置文件,发现这一应用跟域名显示的一样,比较庞大。



如:与人人的接口:



以及memcached众多配置信息(多插一句,发现都喜欢用阿里的memcached规范,真有这么好?):



(其他源代码及敏感信息就不列举了(数据库使用JNDI连接池,太坏了!不过除非远程数据库,其他的也没什么用,源代码也难得去看了),所以危害性是应用程序结构或整体架构的暴露!)

修复方案:


至少禁止掉j2ee应用重要的WEB-INF目录!(同一部署人员的所有应用都检查一下,应该还有不少!)
正好奥运会期间,加上你们公司的服务正好是这个方向的,乐视网送台电视机给哥吧!

版权声明:转载请注明来源 shine@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2012-08-06 16:45

厂商回复:

非常感谢shine挖掘,此问题已经转交给我们业务负责人。我们会尽快修改。
谢谢。

最新状态:

暂无