首页 > 其他 > 详细

S2-048

时间:2019-05-05 18:33:57      阅读:131      评论:0      收藏:0      [点我收藏+]

前言

    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

S2-048

原文:https://www.cnblogs.com/jinqi520/p/10815315.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!