CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

struts2漏洞

2017年5月21日 1850点热度 0人点赞 0条评论
  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

Struts2再爆远程代码执行漏洞

st4rw00d2013-05-22共633649人围观 ,发现 30 个不明物体漏洞

摘要 

Apache官方的struts2产品,最近出了一个远程代码执行漏洞,编号“S2-013”,目前是0DAY,官方没有修补方案出现。
http://struts.apache.org/development/2.x/docs/security-bulletins.html — (公告)

官方安全公告给出了编号和简要介绍

“A vulnerability, present in the includeParams attribute of the URL and Anchor Tag, allows remote command execution”

但是并没有说原理,也没有发布任何补丁。

分析 

事实上,这次struts2官方一共发了两个漏洞,还有个叫s2-012,但是这个漏洞,看题目,应该是我之前在《Xcon2012 攻击JAVA WEB》时的已经爆出来了,所以本文只说另一个。
struts2官方的开发傻乎乎的,比如这个漏洞,要么官方就不要发出来,既然发出来了,就应该发补丁,但是官方仅仅发了这段话,对于详细内容,普通用户不开放访问。

从这段话可以大致总结一下几点:

1、未修补的远程代码执行漏洞
2、includeParams参数在URLTAG中出现了问题。

仅根据这两点,熟悉struts2运行机制和之前漏洞原理的人,都可以轻易分析出具体利用POC。

漏洞触发:

由于官方没有发补丁,所以最新版本的struts2还是有漏洞的,可以下载最新:Apache Struts 2.3.14 GA的示例应用。

经过简单测试,就看到了想要的结果。

根据官方给的信息,问题出在a标签,所以写个jsp页面,内容如下:

<s:a includeParams="all">Click here.</s:a>

这个是struts2标签库的a标签,该标签会在页面上显示当前URL,当includeParams=all时,就会显示具体参数内容。
唯一需要解的迷,就是如何让参数内容作为OGNL表示试执行,但是这个迷未免太好猜了,我随手测试就出结果。
访问url:

http://localhost:8080/blank/error.jsp?aaa=${struts2的常用POC,你懂得}

就可以直接弹计算器,POC代码大家都有的,我只截个图:

几乎没有什么分析过程,就拿到了POC,最终为了研究修补方案,只好被迫研究了漏洞原理。

漏洞原理:

Struts2标签库中的url标签和a标签的includeParams这个属性,代表显示请求访问参数的含义,一旦它的值被赋予ALL或者GET或者POST,就会显示具体请求参数内容。按照正常的需求,把参数urlEncode一下也就够了, 问题在于,struts竟然多做了一步,这丫把参数做了OGNL解析!

代码:

     package org.apache.struts2.views.uti.DefaultUrlHelper这个class的parseQueryString方法。
           public Map<String, Object> parseQueryString(String queryString, boolean forceValueArray) {
        Map<String, Object> queryParams = new LinkedHashMap<String, Object>();
        if (queryString != null) {
            ......
                    if (paramName != null) {
                        paramName = translateAndDecode(paramName);
                        String translatedParamValue = translateAndDecode(paramValue);
              ......
       translateAndDecode会调用
           private String translateVariable(String input) {
        ValueStack valueStack = ServletActionContext.getContext().getValueStack();
        return TextParseUtil.translateVariables(input, valueStack);
           }

最终TextParseUtil.translateVariables会直接调用OGNL解析执行。

漏洞修补:

等官方吧,我反正不急的。或者有好人转发时,请顺便写上方案。

[感谢st4rw00d投递 by 空虚浪子心 http://www.inbreak.net 微博:http://t.qq.com/javasecurity]

st4rw00d
|
|
  • 上一篇:Adobe发布公告称ColdFusion存在严重漏洞
  • 下一篇:Windows内核EPATHOBJ 0day漏洞

这些评论亮了

  • Mystery。(6级)肆零叁文化传媒 COO回复
    据说上一次 Struts2漏洞的时候,一群小黑客搞了很多网页游戏公司,据说还赚了不少一笔钱。
    )28(亮了
发表评论

已有 30 条评论

  • 生生不息 2013-05-22回复1楼

    前排兜售瓜子矿泉水

    亮了(4)
  • 求具体利用方法。 2013-05-22回复2楼

    求具体利用方法。

    亮了(2)
  • 小布什 2013-05-22回复3楼

    又要开始不太平了。

    亮了(3)
  • angellover08 (4级) 2013-05-22回复4楼

    研究下

    亮了(3)
    • 瀚海元实验室 2013-05-22回复

      @angellover08  兄台你的签名真装b啊

      亮了(2)
      • angellover08 (4级) 2013-05-22回复

        @瀚海元实验室 :mrgreen:

        亮了(2)
  • Drizzle.Risk 2013-05-22回复5楼

    围观围观….

    亮了(2)
  • 呵呵 2013-05-22回复6楼

    鸡肋,呵呵

    亮了(2)
  • 路人A (1级) 2013-05-22回复7楼

    老实说利用条件很呵克,需要条件太多了

    亮了(2)
  • 1逼兽哥长成洞 2013-05-22回复8楼

    求exp

    亮了(0)
  • xjump 2013-05-22回复9楼

    R

    亮了(0)
  • 神级技术控 2013-05-22回复10楼

    是啊,不懂ruby,linux shell,perl,c,python .很多exploit 出来连poc都看不懂不会用,更不用说自己写poc了。

    亮了(0)
  • 黄玮惟 2013-05-22回复11楼

    我又整了代驾哈哈哈

    亮了(0)
  • 天猫V 2013-05-22回复12楼

    深圳出红头文件了,强制卸载司机的软件

    亮了(0)
  • 黄玮惟 2013-05-22回复13楼

    一帮2b变态

    亮了(0)
  • 天猫V 2013-05-22回复14楼

    确实变态

    亮了(0)
  • 但丁 2013-05-22回复15楼

    鸡肋的一逼
    没什么用 那样写代码的人太少了

    亮了(2)
  • Mystery。 (6级)肆零叁文化传媒 COO 2013-05-22回复16楼

    据说上一次 Struts2漏洞的时候,一群小黑客搞了很多网页游戏公司,据说还赚了不少一笔钱。

    亮了(28)
  • 唐门三少_tang3 2013-05-22回复17楼

    诺总,j8hacker什么时开始爆料啊

    亮了(0)
  • WDLTH 2013-05-22回复18楼

    没见过<s:a 这样写的,估计有点鸡肋。

    亮了(3)
    • av 2013-05-25回复

      @WDLTH <s:a 很多,只是includeParams=all 属性很少这样写的

      亮了(2)
  • x-Ai (1级)这家伙太懒了,还未填写个人描述! 2013-05-22回复19楼

    标签,还是比较鸡肋的。

    亮了(2)
  • zreopt-awp 2013-05-22回复20楼

    跟上次的struct漏洞基本一样,可以直接用上次的poc,懒得话直接msf-exploit改改就通杀了

    亮了(0)
  • phper 2013-05-22回复21楼

    有个问题,去年的struts很容易通过特征字符找到相应的漏洞站点,该漏洞如何通过搜索引擎去找捏?

    亮了(2)
    • x-Ai (1级)这家伙太懒了,还未填写个人描述! 2013-05-22回复

      @phper 测试结果来看。几乎没有用这个标签的。

      亮了(4)
      • 黑客 2013-05-23回复

        @x-Ai  也是测试了几十个,没有一个用的。

        亮了(2)
    • 呵呵 2013-05-23回复

      @phper 基本不会有用这个标签的,所以structs官方才会没出补丁就公布细节

      亮了(2)
  • Black-World (2级)/* 攻与防 */ 2013-05-23回复22楼

    实战中很痛苦的寻找 ….

    亮了(3)
  • 包子狼 2013-05-22回复23楼

    所以V4没用。

    亮了(0)
  • youxigx 2013-05-23回复24楼

    k8的朋友写了个利用程序:http://qqhack8.blog.163.com/blog/static/114147985201342211837366/

    触发条件

    1 s2 架构
    2 使用了s2的 a标签
    3 includeParams=all

    亮了(5)

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

st4rw00d

这家伙太懒,还未填写个人描述!

227 篇文章0 条评论

相关阅读

  • Android提权漏洞CVE-2014-7920、CVE-2014-7921分析
  • 44CON议题《攻击 VxWorks:从石器时代到星际》探究
  • Java反序列化漏洞批量检测(附POC)
  • Vizio智能电视再躺枪:贩卖用户数据可被中间人截胡
  • 亚马逊EC2主机环境:挖掘Node/Express应用上的SSRF漏洞

特别推荐

关注我们 分享每日精选文章

不容错过

  • 一周「BUF大事件」(20160625-20160701)supercoco2016-07-02
  • 点击一张图片背后的风险mscb2016-10-11
  • ​4.22,FreeBuf小酒馆(bar.freebuf.com)试营业FB客服2015-04-20
  • Splunk大数据分析经验分享:从入门到夺门而逃Porsche2016-12-19

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0day

标签: 暂无
最后更新:2017年5月21日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me