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

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

缺陷编号:wooyun-2013-032981

漏洞标题:某网店转让平台远程执行漏洞(五万多网店账户数据泄露)

相关厂商:5pao.com

漏洞作者: b33

提交时间:2013-08-01 18:46

修复时间:2013-09-15 18:47

公开时间:2013-09-15 18:47

漏洞类型:成功的入侵事件

危害等级:高

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-08-01: 细节已通知厂商并且等待厂商处理中
2013-08-03: 厂商已经确认,细节仅向厂商公开
2013-08-13: 细节向核心白帽子及相关领域专家公开
2013-08-23: 细节向普通白帽子公开
2013-09-02: 细节向实习白帽子公开
2013-09-15: 细节向公众公开

简要描述:

某网店转让平台存在远程执行漏洞,可导致以下隐患:
1、该平台的五万多网店账户信息及数据库内的其他所有信息泄露。
2、可打包下载整站源码。
3、另可通过篡改支付接口信息盗取网站交易资金。

详细说明:

漏洞原理:
Struts2下DefaultActionMapper中的handleSpecialParameters方法可以用action、redirect、 redirectAction等参数对写入数据进行处理,从而改变前缀参数,这样操作的目的是方便表单中的操作。在2.3.15.1版本以前的struts2中,没有对action、redirect、 redirectAction等进行过滤处理,导致ongl表达式可以被执行。

0

图(0)
舞泡网(http://www.5pao.com)使用了struts2 2.3.15.1之前的版本,导致出现了上述的严重安全问题。

漏洞证明:

一、经检测,以下页面存在struts2命令执行漏洞

http://www.5pao.com/theuser/choujiang.action


可见路径(见图1),可执行命令(见图2),可上传webshell

1

图(1)

2

图(2)
二、利用该漏洞成功上传webshell(见图3)

3

图(3)
三、找到配置文件内的数据库信息(见图4)并成功查询账户数据(见图5)

4

图(4)

5

图(5)
四、找到整站备份文件,入侵者可直接下载(见图6)

6

图(6)
五、上传TXT文件测试写入权限,入侵者可篡改支付接口信息(见图7、8)

7

图(7)

8

图(8)

修复方案:

在检测过程中,发现有个名为admin的超级管理员身份账户,若不是自己创建的,请删除。

9


以下方法可修补S2-016、S2-017漏洞
重写struts2 DefaultActionMapper的handleSpecialParameters方法,增加action、redirect、redirectAction等参数的过滤。
操作步骤:
1、新建com/website/struts2/MyDefaultActionMapper.java,代码如下:

/** * zhounenghua@163.com copyright */package com.website.struts2;/** * @author jason.zhou * @date 2013-7-18 */public class MyDefaultActionMapper extends DefaultActionMapper {    public void handleSpecialParameters(HttpServletRequest request, ActionMapping mapping) {        Set uniqueParameters = new HashSet();        Map parameterMap = request.getParameterMap();        for (Iterator iterator = parameterMap.keySet().iterator(); iterator.hasNext();) {            String key = (String) iterator.next();            if ((key.endsWith(".x")) || (key.endsWith(".y"))) {                key = key.substring(0, key.length() - 2);            }            // -- jason.zhou 20130708 add start -- //            if ((key.contains("redirect:")) || (key.contains("redirectAction:")) || (key.contains("action:"))) {                return;            }            // -- jason.zhou 20130708 add end -- //                        if (!uniqueParameters.contains(key)) {                ParameterAction parameterAction = (ParameterAction) this.prefixTrie.get(key);                if (parameterAction != null) {                    parameterAction.execute(key, mapping);                    uniqueParameters.add(key);                    break;                }            }        }    }}


2、复制MyDefaultActionMapper.class 到 /com/website/struts2/目录。
3、在struts.xml文件中添加如下代码:

<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class="com.website.struts2.MyDefaultActionMapper" />     <constant name="struts.mapper.class" value="myDefaultActionMapper" />


4、重启服务器。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2013-08-03 16:09

厂商回复:

开发利用的开源框架确实存在严重漏洞,对网站的运营造成严重影响。感谢 b33对本漏洞的发现并及时提供给我们,谢谢!

最新状态:

暂无