zoukankan      html  css  js  c++  java
  • S2-048

    前言

        S2-048漏洞和struts2-struts1-plugin插件有关,该插件用于将Struts1的action也能在struts2上运行,提高兼容性(作用是我猜的~)

    正文

        我们先看下这个插件对应的配置文件

    可以看到我们访问名为saveGangster的action时,处理它的并不是SaveGangsterAction,而是插件中的一个action类org.apache.struts2.s1.Struts1Action,最后是将SaveGangsterAction类以一个参数的形式传给了Struts1Action。我们看下Struts1Action的内部实现:

    可以看到其实还是调用了SaveGangsterAction的exec来处理业务,然后再取出request中的“action_message”属性进行循环放入getText方法中,getText我们之前分析过,里面会只需Ognl表达式。我们只需跟进SaveGangsterAction的exec中看下该属性是否可控就好了:

    里面的逻辑其实很简单,就是获取了actionform(可控的)中的name参数后进行字符串拼凑用于生成ActionMessage,然后在addMessages方法中加入到了request属性中

    测试一下:

    poc用以前的就好了:

    ${#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,#cmd='calc',#cmds={'cmd.exe','/c',#cmd},#p=new java.lang.ProcessBuilder(#cmds),#process=#p.start()}

    不过感觉这个洞是也是难以批量啊。

    参考文章

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

  • 相关阅读:
    java实现万年历
    XCTF 逆向 re1-100
    iOS多线程开发之GCD
    Hexo Next统计文章访问量
    Name/Value 配對和物件
    Mac系统Git生成ssh公钥
    《大话数据结构》三
    C++指针和引用
    英语语法讲解第一课句子成分-表语
    String-mainipulation7
  • 原文地址:https://www.cnblogs.com/jinqi520/p/10815315.html
Copyright © 2011-2022 走看看